Заполнение 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-значений.