Создание метрик
После создания семантических моделей можно переходить к добавлению метрик. На этой странице описаны поддерживаемые типы метрик, которые вы можете добавить в свой dbt‑проект.
Метрики должны быть определены в YAML‑файле — либо в том же файле, что и семантические модели, либо в отдельном YAML‑файле в поддиректории вашего dbt‑проекта. Их не следует определять в блоке config модели.
Ключи, используемые для определения метрик:
| Loading table... |
Ниже приведен полный пример конфигурации спецификации метрик:
metrics:
- name: metric name ## Required
description: description ## Optional
type: the type of the metric ## Required
type_params: ## Required
- specific properties for the metric type
config: ## Optional
meta:
my_meta_config: 'config' ## Optional
label: The display name for your metric. This value will be shown in downstream tools. ## Required
filter: | ## Optional
{{ Dimension('entity__name') }} > 0 and {{ Dimension(' entity__another_name') }} is not
null and {{ Metric('metric_name', group_by=['entity_name']) }} > 5
📹 Узнайте о семантическом слое dbt с помощью видеокурсов по запросу!
Изучите наш курс по семантическому слою dbt, чтобы узнать, как определять и запрашивать метрики в вашем проекте dbt.
Кроме того, погрузитесь в мини-курсы по запросам к семантическому слою dbt в ваших любимых инструментах: Tableau, Excel, Hex и Mode.
Гранулярность по умолчанию для метрик
Метрики конверсии
Метрики конверсии помогают отслеживать, когда для сущности происходит базовое событие и последующее событие конверсии в рамках заданного временного окна.
metrics:
- name: The metric name
description: The metric description
type: conversion
label: YOUR_LABEL
type_params: #
conversion_type_params:
entity: ENTITY
calculation: CALCULATION_TYPE
base_measure:
name: The name of the measure
fill_nulls_with: Set the value in your metric definition instead of null (such as zero)
join_to_timespine: true/false
conversion_measure:
name: The name of the measure
fill_nulls_with: Set the value in your metric definition instead of null (such as zero)
join_to_timespine: true/false
window: TIME_WINDOW
constant_properties:
- base_property: DIMENSION or ENTITY
conversion_property: DIMENSION or ENTITY
Кумулятивные метрики
Кумулятивные метрики агрегируют меру в рамках заданного окна. Если окно не указано, агрегация выполняется за весь доступный период времени. Обратите внимание, что перед добавлением кумулятивных метрик необходимо создать модель временной шкалы (time spine).
# Cumulative metrics aggregate a measure over a given window. The window is considered infinite if no window parameter is passed (accumulate the measure over all of time)
metrics:
- name: wau_rolling_7
type: cumulative
label: Weekly active users
type_params:
measure:
name: active_users
fill_nulls_with: 0
join_to_timespine: true
cumulative_type_params:
window: 7 days
Производные метрики
Производные метрики определяются как выражения на основе других метрик. Они позволяют выполнять вычисления поверх уже существующих метрик.
metrics:
- name: order_gross_profit
description: Gross profit from each order.
type: derived
label: Order gross profit
type_params:
expr: revenue - cost
metrics:
- name: order_total
alias: revenue
- name: order_cost
alias: cost
Относительные метрики (Ratio metrics)
Относительные метрики состоят из метрики‑числителя и метрики‑знаменателя. Строка filter может быть применена как к числителю и знаменателю одновременно, так и отдельно к каждому из них.
metrics:
- name: cancellation_rate
type: ratio
label: Cancellation rate
type_params:
numerator: cancellations
denominator: transaction_amount
filter: |
{{ Dimension('customer__country') }} = 'MX'
- name: enterprise_cancellation_rate
type: ratio
type_params:
numerator:
name: cancellations
filter: {{ Dimension('company__tier') }} = 'enterprise'
denominator: transaction_amount
filter: |
{{ Dimension('customer__country') }} = 'MX'
Простые метрики
Простые метрики напрямую указывают на меру. Их можно рассматривать как функцию, принимающую одну меру в качестве входных данных.
name— используется для задания ссылочного имени метрики. Имя должно быть уникальным среди всех метрик и может включать строчные буквы, цифры и символы подчеркивания. Это имя можно использовать для вызова метрики через API Semantic Layer.
Примечание: если вы уже определили меру с помощью параметра create_metric: True, создавать простую метрику не требуется. Однако если вы хотите добавить дополнительное ограничение поверх меры, необходимо создать метрику типа simple.
metrics:
- name: cancellations
description: The number of cancellations
type: simple
label: Cancellations
type_params:
measure:
name: cancellations_usd # Specify the measure you are creating a proxy for.
fill_nulls_with: 0
join_to_timespine: true
filter: |
{{ Dimension('order__value')}} > 100 and {{Dimension('user__acquisition')}} is not null
Фильтры
Фильтр настраивается с использованием шаблонов Jinja. Используйте следующий синтаксис для ссылки на сущности, измерения, временные измерения или метрики в фильтрах.
Подробности о том, как использовать метрики в качестве измерений в фильтрах, см. в разделе Metrics as dimensions:
filter: |
{{ Entity('entity_name') }}
filter: |
{{ Dimension('primary_entity__dimension_name') }}
filter: |
{{ TimeDimension('time_dimension', 'granularity') }}
filter: |
{{ Metric('metric_name', group_by=['entity_name']) }}
Например, если вы хотите отфильтровать данные по измерению даты заказа с группировкой по месяцам, используйте следующий синтаксис:
filter: |
{{ TimeDimension('order_date', 'month') }}
Дополнительная конфигурация
Вы можете задать дополнительную метаинформацию для метрик, которая в дальнейшем может использоваться другими инструментами. Способ использования этих данных зависит от конкретной интеграции.
- Description — подробное описание метрики.