Срез с двумя уровнями агрегации. Возможно ли это за одним столом?

Я оцениваю Superset и хочу попытаться понять, возможно ли это и как получить разные уровни агрегации для одного и того же набора данных. Я работаю с банковскими счетами. Я делаю ежедневные снимки баланса счетов, поэтому у меня есть таблица со следующей структурой (очень упрощенной):

account_id date balance week 1 2018-01-01 $5.00 1 1 2018-01-02 $10.00 1 1 2018-01-03 $10.00 1 1 2018-01-04 $10.00 1 1 2018-01-05 $10.00 1 1 2018-01-06 $10.00 1 1 2018-01-07 $10.00 2 1 2018-01-08 $10.00 2 1 2018-01-09 $10.00 2 1 2018-01-10 $10.00 2 1 2018-01-11 $20.00 2 1 2018-01-12 $20.00 2 1 2018-01-13 $20.00 2 1 2018-01-14 $20.00 3 2 2018-01-09 $70.00 2 2 2018-01-10 $70.00 2 2 2018-01-11 $70.00 2 2 2018-01-12 $70.00 2 2 2018-01-13 $5.00 2 2 2018-01-14 $5.00 3

Во-первых, мне нужно рассчитать общий баланс за день. Это довольно просто. Я могу построить срез, используя дату в качестве столбца времени и метрику SUM баланса. Используя приведенный выше пример данных, результаты должны быть:

date total balance week 2018-01-01 $5.00 1 2018-01-02 $10.00 1 2018-01-03 $10.00 1 2018-01-04 $10.00 1 2018-01-05 $10.00 1 2018-01-06 $10.00 1 2018-01-07 $10.00 2 2018-01-08 $10.00 2 2018-01-09 $80.00 2 2018-01-10 $80.00 2 2018-01-11 $90.00 2 2018-01-12 $90.00 2 2018-01-13 $25.00 2 2018-01-14 $25.00 3

Затем мне нужно рассчитать средний баланс за неделю для каждой учетной записи. Это тоже легко, потому что я могу использовать AVG в качестве показателя:

week average_balance_per_account 1 $9.17 2 $32.08 3 $12.50

Но после этого я хочу посчитать средний общий баланс за неделю. Это средний дневной общий баланс. В этом примере:

week average_balance expression 1 $9.17 = (5+10+10+10+10+10)/6 2 $55.00 = (10+10+(10+70)+(10+70)+(20+70)+(20+70)+(20+5))/7 3 $25.00 = ((20+5))/1

Есть ли способ рассчитать этот последний отчет, используя ту же таблицу, которая была определена ранее?


person dd.    schedule 23.02.2018    source источник


Ответы (1)


Показатель, который вы пытаетесь вычислить, может быть представлен как: sum(balance)/count(distinct date); общий дневной баланс, деленный на общее количество дней. Затем вы могли бы group by week получить свой средний баланс.

Сначала создайте новую метрику для своей таблицы. Обновите выражение SQL до sum(balance)/count(distinct date).

Во-вторых, убедитесь, что ваш week столбец помечен как Groupable. Другой подход заключается в использовании столбца date при создании среза и установке Time Grain на week.

person Aaron Bannin    schedule 26.02.2018