Перейти к основному содержимому

Метрики отношения

Метрика отношения позволяет создать отношение между двумя метриками. Вы просто указываете метрику числителя и метрику знаменателя. Кроме того, вы можете применить фильтр по измерению как к числителю, так и к знаменателю, используя строку ограничения при вычислении метрики.

Параметры, описание и тип для метрик отношения:

ПараметрОписаниеОбязательныйТип
nameИмя метрики.ОбязательныйСтрока
descriptionОписание метрики.НеобязательныйСтрока
typeТип метрики (накопительная, производная, отношение или простая).ОбязательныйСтрока
labelОпределяет отображаемое значение в инструментах нижнего уровня. Принимает обычный текст, пробелы и кавычки (например, orders_total или "orders_total").ОбязательныйСтрока
type_paramsПараметры типа метрики.ОбязательныйСловарь
numeratorИмя метрики, используемой для числителя, или структура свойств.ОбязательныйСтрока или словарь
denominatorИмя метрики, используемой для знаменателя, или структура свойств.ОбязательныйСтрока или словарь
filterНеобязательный фильтр для числителя или знаменателя.НеобязательныйСтрока
aliasНеобязательный псевдоним для числителя или знаменателя.НеобязательныйСтрока

Ниже представлена полная спецификация для метрик отношения, а также пример.

models/metrics/file_name.yml
metrics:
- name: Имя метрики # Обязательный
description: Описание метрики # Необязательный
type: ratio # Обязательный
label: Строка, определяющая отображаемое значение в инструментах нижнего уровня. (например, orders_total или "orders_total") # Обязательный
type_params: # Обязательный
numerator: Имя метрики, используемой для числителя, или структура свойств # Обязательный
name: Имя метрики, используемой для числителя # Обязательный
filter: Фильтр для числителя # Необязательный
alias: Псевдоним для числителя # Необязательный
denominator: Имя метрики, используемой для знаменателя, или структура свойств # Обязательный
name: Имя метрики, используемой для знаменателя # Обязательный
filter: Фильтр для знаменателя # Необязательный
alias: Псевдоним для знаменателя # Необязательный

Для продвинутого моделирования данных вы можете использовать fill_nulls_with и join_to_timespine, чтобы установить нулевые значения метрик в ноль, обеспечивая числовые значения для каждой строки данных.

Пример метрик отношения

Эти примеры демонстрируют, как создать метрики отношения в вашей модели. Они охватывают базовые и продвинутые случаи использования, включая применение фильтров к метрикам числителя и знаменателя.

Пример 1

Этот пример представляет собой базовую метрику отношения, которая вычисляет отношение заказов на еду к общему количеству заказов:

models/metrics/file_name.yml
metrics:
- name: food_order_pct
description: "Количество заказов на еду как отношение к общему количеству заказов"
label: Food order ratio
type: ratio
type_params:
numerator: food_orders
denominator: orders

Пример 2

Этот пример представляет собой метрику отношения, которая вычисляет отношение заказов на еду к общему количеству заказов с применением фильтра и псевдонима к числителю. Обратите внимание, что для добавления этих атрибутов вам также потребуется использовать явный ключ для атрибута имени.

models/metrics/file_name.yml
metrics:
- name: food_order_pct
description: "Количество заказов на еду как отношение к общему количеству заказов, отфильтрованное по местоположению"
label: Food order ratio by location
type: ratio
type_params:
numerator:
name: food_orders
filter: location = 'New York'
alias: ny_food_orders
denominator:
name: orders
filter: location = 'New York'
alias: ny_orders

Метрики отношения с использованием различных семантических моделей

Система упростит и преобразует числитель и знаменатель в метрику отношения из различных семантических моделей, вычисляя их значения в подзапросах. Затем она объединит результирующий набор на основе общих измерений для вычисления окончательного отношения. Вот пример SQL, сгенерированного для такой метрики отношения.

select
subq_15577.metric_time as metric_time,
cast(subq_15577.mql_queries_created_test as double) / cast(nullif(subq_15582.distinct_query_users, 0) as double) as mql_queries_per_active_user
from (
select
metric_time,
sum(mql_queries_created_test) as mql_queries_created_test
from (
select
cast(query_created_at as date) as metric_time,
case when query_status in ('PENDING','MODE') then 1 else 0 end as mql_queries_created_test
from prod_dbt.mql_query_base mql_queries_test_src_2552
) subq_15576
group by
metric_time
) subq_15577
inner join (
select
metric_time,
count(distinct distinct_query_users) as distinct_query_users
from (
select
cast(query_created_at as date) as metric_time,
case when query_status in ('MODE','PENDING') then email else null end as distinct_query_users
from prod_dbt.mql_query_base mql_queries_src_2585
) subq_15581
group by
metric_time
) subq_15582
on
(
(
subq_15577.metric_time = subq_15582.metric_time
) or (
(
subq_15577.metric_time is null
) and (
subq_15582.metric_time is null
)
)
)

Добавление фильтра

Пользователи могут определять ограничения на входные метрики для метрики отношения, применяя фильтр непосредственно к входной метрике, следующим образом:

models/metrics/file_name.yml
metrics:
- name: frequent_purchaser_ratio
description: Доля активных пользователей, которые квалифицируются как частые покупатели
type: ratio
type_params:
numerator:
name: distinct_purchasers
filter: |
{{Dimension('customer__is_frequent_purchaser')}}
alias: frequent_purchasers
denominator:
name: distinct_purchasers

Обратите внимание на параметры filter и alias для метрики, указанной в числителе.

  • Используйте параметр filter, чтобы применить фильтр к метрике, к которой он прикреплен.
  • Параметр alias используется для избежания конфликтов имен в сгенерированных SQL-запросах, когда одна и та же метрика используется с различными фильтрами.
  • Если конфликтов имен нет, параметр alias можно не указывать.

Связанные документы

0