Заполнение null-значений для метрик
Понимание и реализация стратегий заполнения null-значений в метриках является ключевым для точной аналитики. В этом руководстве объясняются fill_nulls_with
и join_to_timespine
, чтобы обеспечить полноту данных, помогая конечным пользователям принимать более обоснованные решения и улучшая ваши рабочие процессы dbt.
О null-значениях
Вы можете использовать fill_nulls_with
, чтобы заменить null-значения в метриках на значение, например, ноль (или выбранное вами целое число). Это гарантирует, что каждая строка данных показывает числовое значение.
Это руководство объясняет, как гарантировать отсутствие null-значений в ваших метриках:
- Используйте
fill_nulls_with
дляsimple
,cumulative
иconversion
метрик - Используйте
join_to_timespine
иfill_nulls_with
вместе для производных и долевых метрик, чтобы избежать появления null-значений.
Заполнение null-значений для простых метрик
Например, если вы хотите обработать дни с посещениями сайта, но без лидов, вы можете использовать fill_nulls_with
, чтобы установить значение для лидов равным нулю в дни, когда нет конверсий.
Предположим, у вас есть три метрики:
website_visits
иleads
- и производная метрика под названием
leads_to_website_visit
, которая вычисляет отношение лидов к посещениям сайта.
В дни, когда нет конверсий, вы можете установить значение для лидов равным нулю, добавив параметр fill_nulls_with
к входным данным меры в метрике лидов:
metrics:
- name: website_visits
type: simple
type_params:
measure:
name: bookings
- name: leads
type: simple
type_params:
measure:
name: bookings
fill_nulls_with: 0 # Это заполняет null-значения нулем
- name: leads_to_website_visit
type: derived
type_params:
expr: leads/website_visits
metrics:
- name: leads
- name: website_visits
Метрики website_visits
и leads
имеют следующие данные:
metric_time | website_visits |
---|---|
2024-01-01 | 50 |
2024-01-02 | 37 |
2024-01-03 | 79 |
metric_time | leads |
---|---|
2024-01-01 | 5 |
2024-01-03 | 8 |
- Обратите внимание, что в метрике
leads
нет данных за2024-01-02
.
Хотя нет дней без посещений, есть дни без лидов. После применения fill_nulls_with: 0
к метрике leads
, запрос этих метрик вместе показывает ноль для лидов в дни без конверсий:
metric_time | website_visits | leads |
---|---|---|
2024-01-01 | 50 | 5 |
2024-01-02 | 37 | 0 |
2024-01-03 | 79 | 8 |
Использование join_to_timespine для производных и долевых метрик
Чтобы обеспечить полный набор данных для каждого дня и ежедневное покрытие для метрик, рассчитанных на основе других метрик, вы можете использовать join_to_timespine
для заполнения null-значений для derived
и ratio
метрик. Эти метрики строятся на основе других метрик (других расчетов), а не прямых мер (сырых данных), требуя от MetricFlow дополнительного уровня подзапроса для отображения метрики. Вложенность подзапросов следующая:
- Для
derived
иratio
метрик существует три уровня вложенности подзапросов — производная или долевая метрика → входные метрики → входные меры. - Для
simple
иcumulative
метрик существует только два уровня вложенности подзапросов — простая или кумулятивная метрика → входная мера.
Поскольку coalesce
не применяется к третьему, внешнему уровню подзапроса для derived
или ratio
метрик, это означает, что в конечном наборе результатов все еще могут быть null-значения.
- Обратите внимание, что вы можете использовать
join_to_timespine
с метриками, которые принимают входные меры, если вы хотите включить строку для каждой даты, даже если данных нет.
Заполнение null-значений для производных и долевых метрик
Чтобы заполнить null-значения для производных и долевых метрик, вы можете связать их с временной шкалой, чтобы обеспечить ежедневное покрытие данных. Как упоминалось в предыдущем разделе, это связано с тем, что derived
и ratio
метрики принимают метрики в качестве входных данных вместо мер.
Например, следующая структура оставляет null-значения в конечных результатах (столбец leads_to_website_visit
), потому что COALESCE
не применяется на третьем внешнем уровне рендеринга для окончательного расчета метрики в derived
метриках:
metric_time | bookings | leads | leads_to_website_visit |
---|---|---|---|
2024-01-01 | 50 | 5 | .1 |
2024-01-02 | 37 | 0 | null |
2024-01-03 | 79 | 8 | .1 |
Чтобы отобразить нулевое значение для leads_to_website_visit
за 2024-01-02
, вы бы присоединили метрику leads
к модели временной шкалы, чтобы обеспечить значение для каждого дня. Это можно сделать, добавив join_to_timespine
к параметру measure
в конфигурации метрики leads
:
- name: leads
type: simple
type_params:
measure:
name: bookings
fill_nulls_with: 0
join_to_timespine: true
После этого, если вы запросите метрику leads
после присоединения временной шкалы, будет запись для каждого дня, и любые null-значения будут заполнены нулем.
metric_time | leads | leads_to_website_visit |
---|---|---|
2024-01-01 | 5 | .1 |
2024-01-02 | 0 | 0 |
2024-01-03 | 8 | .1 |
Теперь, если вы объедините метрики в derived
метрике, будет нулевое значение для leads_to_website_visit
на 2024-01-02
, и в конечном наборе результатов не будет никаких null-значений.