Свойства семантических моделей
Семантические модели определяют структуру, которую MetricFlow использует для построения семантического графа. В новой спецификации их можно объявлять в блоке semantic_model: верхнего уровня в модели. В устаревшей спецификации использовались отдельные YAML-файлы. Подробнее см. в разделе Семантические модели.
Последняя версия спецификации YAML поддерживается в следующих средах:
- dbt platform (v1, канал обновлений Latest)
- dbt v2
- dbt v1.12
Подробнее см. в разделе Переход на последнюю версию спецификации YAML.
Новая спецификация (YAML модели)
В новой спецификации модель определяет семантическую модель с помощью ключа semantic_model, значение которого может быть:
trueилиfalse: сокращённая запись с логическим значением.trueвключает семантическую модель и использует имя модели в качестве имени семантической модели (а также другие значения по умолчанию для незаданных полей).falseотключает семантическую модель для этой модели.- Сопоставлением: объектом с ключами
enabled, необязательнымиname,group,configи так далее, как показано в таблице ниже.
Измерения и сущности определяются на уровне столбца.
Доступные свойства семантической модели (новая спецификация)
| Свойство / расположение | Тип | Обязательно | Описание |
|---|---|---|---|
semantic_model | boolean или object | При использовании семантического слоя для модели | true / false или сопоставление. Необязательные ключи сопоставления приведены в следующих строках. |
semantic_model.enabled | boolean | Нет (при записи в виде сопоставления) | По умолчанию true, если semantic_model — сопоставление. Установите false для отключения. Не указывайте при использовании semantic_model: true или false. |
semantic_model.name | string | Нет | Уникальное имя; по умолчанию — имя модели. Избегайте двойных подчёркиваний (__) в имени; см. Имя в разделе Семантические модели. |
semantic_model.group | string | Нет | Группа для организации ресурсов. |
semantic_model.config | object | Нет | Поддерживает meta, group, enabled. |
agg_time_dimension (верхний уровень) | string | Да | Временное измерение по умолчанию для метрик; ссылается на имя измерения. |
primary_entity (верхний уровень) | string | Нет | Имя первичной сущности, если ни у одного столбца не задано type: primary. |
columns | array | Да | Список столбцов; каждый может содержать блок entity: или dimension:; для временных измерений на уровне столбца задаётся granularity. |
derived_semantics (верхний уровень) | object | Нет | Необязательные измерения и сущности с expr. |
metrics (верхний уровень) | array | Нет | Метрики, получаемые из этой семантической модели; список расположен на одном уровне с semantic_model, а не внутри него. |
Пример минимальной структуры
models:
- name: my_model
semantic_model:
enabled: true # задано явно; по умолчанию true, если опущено при записи в виде сопоставления
name: optional_override # необязательно; по умолчанию — имя модели
group: optional_group
config:
meta: {}
agg_time_dimension: my_time_dimension # верхний уровень; ссылается на имя измерения
primary_entity: my_primary_entity # необязательно; используйте, если ни у одного столбца нет type: primary
columns:
- name: my_entity_column
entity:
type: primary | foreign | unique | natural
name: optional_entity_name
- name: my_time_dimension_column
granularity: day # обязательно для временных измерений
dimension:
type: time
name: my_time_dimension
- name: my_categorical_dimension_column
dimension:
type: categorical
name: my_categorical_dimension
derived_semantics: # необязательно
dimensions: []
entities: []
metrics:
- name: my_simple_metric
type: simple
agg: count
expr: optional_expr
Пример с логическим значением вместо сопоставления
Структура такая же, как в предыдущем примере, но вместо сопоставления semantic_model: используется логическое значение (имя семантической модели по умолчанию совпадает с именем модели):
models:
- name: my_model
semantic_model: true
agg_time_dimension: my_time_dimension
primary_entity: my_primary_entity # необязательно
columns:
- name: my_entity_column
entity:
type: primary | foreign | unique | natural
- name: my_time_dimension_column
granularity: day
dimension:
type: time
name: my_time_dimension
metrics:
- name: my_simple_metric
type: simple
agg: count
Подробнее о новой спецификации (записи внутри модели с ключами semantic_model: и metrics: на верхнем уровне модели) см. в разделе Семантические модели.