Часто возникает потребность представлять различные агрегаты на разных уровнях группировки. Это позволяет более эффективно и гибко анализировать данные на различных иерархических уровнях в удобном формате.
Рассмотрим конкретный пример: необходимо представить данные по годам и кварталам. В этом случае для каждого года следует вычислить общую сумму показателя, а для каждого квартала – долю квартального показателя от общей суммы за год.
- Для того, чтобы определить уровень группировки используем проверку условия
COUNTD([quarter]) > 1
- Для верхнего уровня количество уникальных кварталов будет больше единицы, для нижних – равно единицы. Теперь мы готовы написать формулу для нашего агрегата, используя это условие:
CASE
WHEN COUNTD([quarter]) > 1
THEN STR(SUM([indicator]))
ELSE CONCAT(STR(SUM([indicator]) / SUM(SUM([indicator]) TOTAL) * 100), '%')
END
-
Для наглядности отображения процентных значений, можно преобразовать значения в строки и добавить знак ‘%’.
-
Осталось только добавить этот агрегат в структуру виджета в раздел столбцов. А в группировку поля с годом и номером квартала.
Итоговый результат выглядит следующим образом -
В нашей бесплатной версии AW BI можно посмотреть готовый пример.