# Свойства измерений

Измерения — это неагрегируемые выражения, определяющие, как можно группировать метрики или формировать их срезы. Они всегда определяются в рамках [семантической модели](https://docs.getdbt.tech/reference/semantic-model-properties.md). Основные понятия и примеры приведены в разделе [Измерения](https://docs.getdbt.tech/docs/build/dimensions.md).

Доступность

Последняя версия спецификации YAML поддерживается в следующих средах:

* **dbt platform (v1, канал обновлений Latest)**
* **dbt v2**
* **dbt v1.12**

Подробнее см. в разделе [Переход на последнюю версию спецификации YAML](https://docs.getdbt.tech/docs/build/latest-metrics-spec.md).

(Версии dbt: v1.12 и новее)

## Новейшая спецификация (YAML модели)

Измерения определяются на уровне столбцов.

### Размещение на уровне столбцов (новейшая спецификация)

Добавьте эти ключи к **столбцу** в списке `columns:` семантической модели — они не вкладываются в объект `dimension:`.

| Расположение   | Тип                         | Обязательность                  | Описание                                                                                                                                                                                                                                                                                                                  |
| -------------- | --------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dimension:`   | блок или сокращённая запись | Да (для определения измерения)  | Связывает измерение со столбцом. Используйте отображение (`dimension:` с `type` и другими свойствами) или сокращённую запись `dimension: categorical` / `dimension: time`.                                                                                                                                                |
| `granularity:` | string                      | Да, для **временных** измерений | Временная детализация исходных данных столбца (например, `day`, `week`, `month`). Размещайте `granularity:` на уровне столбца рядом с `dimension:`, а не внутри блока `dimension:`. Для **категориальных** измерений `granularity` не имеет смысла; если это свойство присутствует в YAML, проверка должна выдать ошибку. |

### Свойства внутри блока `dimension:` (новейшая спецификация)

| Свойство          | Тип     | Обязательность | Описание                                                                                                                                 |
| ----------------- | ------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `type`            | string  | Да             | `time` или `categorical`.                                                                                                                |
| `name`            | string  | Нет            | Уникальное имя в пределах семантической модели; по умолчанию используется имя столбца.                                                   |
| `description`     | string  | Нет            | Документация по измерению.                                                                                                               |
| `label`           | string  | Нет            | Отображаемое значение в инструментах, использующих эти данные.                                                                           |
| `is_partition`    | boolean | Нет            | Указывает, является ли это измерение измерением секционирования модели (в YAML поддерживается для временных и категориальных измерений). |
| `config`          | object  | Нет            | Метаданные и настройки.                                                                                                                  |
| `validity_params` | object  | Нет            | Для **временных** измерений: параметры срока действия в стиле SCD (например, `is_start`, `is_end`).                                      |

**Производные измерения:** Чтобы определить измерения с выражением `expr`, не привязанным к одному столбцу, используйте необязательный список `derived_semantics.dimensions` семантической модели. Эта структура является частью конфигурации [семантической модели](https://docs.getdbt.tech/reference/semantic-model-properties.md) (наряду с `columns:`), а не свойством, вложенным в блок `dimension:` столбца. Примеры приведены в разделах [Семантические модели](https://docs.getdbt.tech/docs/build/semantic-models.md) и [Измерения](https://docs.getdbt.tech/docs/build/dimensions.md).

* **Уровень столбцов:** В списке `columns:` модели каждый столбец может содержать блок `dimension:` с типом *time* или *categorical* и необязательными свойствами `name`, `description`, `label`, `is_partition`, `config`.
* **Временные измерения:** У столбца также должно быть свойство `granularity:` верхнего уровня (например, `day`).
* **Срок действия (SCD):** Для временных измерений можно указать `validity_params` (например, `is_start`, `is_end`).

Основные понятия и способы использования описаны в разделе [Измерения](https://docs.getdbt.tech/docs/build/dimensions.md). Сведения о новейшей спецификации приведены в разделе [Семантические модели](https://docs.getdbt.tech/docs/build/semantic-models.md).
