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

Создание метрик

После создания семантических моделей можно переходить к добавлению метрик. На этой странице описаны поддерживаемые типы метрик, которые вы можете добавить в свой dbt‑проект.

Метрики должны быть определены в YAML‑файле — либо в том же файле, что и семантические модели, либо в отдельном YAML‑файле в поддиректории вашего dbt‑проекта. Их не следует определять в блоке config модели.

Ключи, используемые для определения метрик:

ParameterDescriptionRequiredType
nameУкажите ссылочное имя метрики. Это имя должно быть уникальным и может состоять из строчных букв, цифр и символов подчеркивания.RequiredString
descriptionОписание метрики.OptionalString
typeТип метрики: conversion, cumulative, derived, ratio или simple.RequiredString
type_paramsДополнительные параметры для настройки метрики. Набор type_params различается для каждого типа метрик.RequiredDict
labelОбязательная строка, определяющая отображаемое имя метрики в downstream‑инструментах. Поддерживает обычный текст, пробелы и кавычки (например, orders_total или "orders_total").RequiredString
configИспользуйте свойство config для задания конфигурации метрики. Поддерживаются настройки meta, group и enabled.OptionalDict
filterНеобязательная строка фильтра, применяемая к измерениям, сущностям, временным измерениям или другим метрикам во время вычисления метрики. По сути, это аналог условия WHERE.OptionalString
Loading table...

Ниже приведен полный пример конфигурации спецификации метрик:

models/metrics/file_name.yml
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.

Гранулярность по умолчанию для метрик

Метрики конверсии

Метрики конверсии помогают отслеживать, когда для сущности происходит базовое событие и последующее событие конверсии в рамках заданного временного окна.

models/metrics/file_name.yml
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).

models/metrics/file_name.yml
# 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

Производные метрики

Производные метрики определяются как выражения на основе других метрик. Они позволяют выполнять вычисления поверх уже существующих метрик.

models/metrics/file_name.yml
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 может быть применена как к числителю и знаменателю одновременно, так и отдельно к каждому из них.

models/metrics/file_name.yml
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.

models/metrics/file_name.yml
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:

models/metrics/file_name.yml
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 — подробное описание метрики.

Нашли ошибку?

0
Loading