Кумулятивные метрики
Кумулятивные метрики агрегируют измерение за заданный период накопления. Если окно не указано, оно считается бесконечным и накапливает значения за все время. Вам нужно будет создать модель временной оси перед добавлением кумулятивных метрик.
Кумулятивные метрики полезны для расчета таких показателей, как еженедельные активные пользователи или доход с начала месяца. Параметры, описание и типы для кумулятивных метрик следующие:
Обратите внимание, что мы используем двойное двоеточие (::), чтобы указать, вложен ли параметр в другой параметр. Например, measure::name
означает, что параметр name
вложен в measure
.
Параметры
Полная спецификация
Ниже представлена полная спецификация для кумулятивных метрик с примером:
Пример кумулятивных метрик
Кумулятивные метрики измеряют данные за заданный период и считают период бесконечным, если параметр окна не передан, накапливая данные за все время.
Следующий пример показывает, как определить кумулятивные метрики в YAML-файле:
Опции окна
Этот раздел содержит примеры, когда следует указывать и не указывать опции окна.
- Когда окно указано, MetricFlow применяет скользящее окно к базовому измерению, например, отслеживание еженедельных активных пользователей с 7-дневным окном.
- Без указания окна кумулятивные метрики накапливают значения за все время, что полезно для текущих итогов, таких как текущий доход и активны е подписки.
Зерно до даты
Вы можете выбрать указание зерна до даты в конфигурации вашей кумулятивной метрики, чтобы накапливать метрику с начала зерна (например, неделя, месяц или год). При использовании окна, например, месяц, MetricFlow вернется на один полный календарный месяц назад. Однако зерно до даты всегда будет начинать накопление с начала зерна, независимо от последней даты данных.
Например, рассмотрим базовое измерение order_total.
measures:
- name: order_total
agg: sum
Мы можем сравнить разницу между 1-месячным окном и месячным зерном до даты.
- Кумулятивная метрика в подходе окна применяет скользящее окно в 1 месяц
- Зерно до даты по месяцам сбрасывается в начале каждого месяца.
Кумулятивная метрика с зерном до даты:
Пример реализации SQL
Чтобы вычислить кумулятивное значение метрики за заданный период, мы выполняем соединение по временной шкале с таблицей временной оси, используя основное временное измерение в качестве ключа соединения. Мы используем окно накопления в соединении, чтобы решить, следует ли включать запись в конкретный день. Следующий SQL-код, полученный из примера кумулятивной метрики, предоставлен для справки:
Чтобы реализовать кумулятивные метрики, обратитесь к примеру SQL-кода:
select
count(distinct distinct_users) as weekly_active_users,
metric_time
from (
select
subq_3.distinct_users as distinct_users,
subq_3.metric_time as metric_time
from (
select
subq_2.distinct_users as distinct_users,
subq_1.metric_time as metric_time
from (
select
metric_time
from transform_prod_schema.mf_time_spine subq_1356
where (
metric_time >= cast('2000-01-01' as timestamp)
) and (
metric_time <= cast('2040-12-31' as timestamp)
)
) subq_1
inner join (
select
distinct_users as distinct_users,
date_trunc('day', ds) as metric_time
from demo_schema.transactions transactions_src_426
where (
(date_trunc('day', ds)) >= cast('1999-12-26' as timestamp)
) AND (
(date_trunc('day', ds)) <= cast('2040-12-31' as timestamp)
)
) subq_2
on
(
subq_2.metric_time <= subq_1.metric_time
) and (
subq_2.metric_time > dateadd(day, -7, subq_1.metric_time)
)
) subq_3
)
group by
metric_time,
limit 100;
Ограничения
Если вы указываете window
в определении вашей кумулятивной метрики, вы должны включить metric_time
в качестве измерения в SQL-запросе. Это связано с тем, что окно накопления основано на времени метрики. Например,
select
count(distinct subq_3.distinct_users) as weekly_active_users,
subq_3.metric_time
from (
select
subq_2.distinct_users as distinct_users,
subq_1.metric_time as metric_time
group by
subq_3.metric_time