Dimensions (дименшены)#
Dimensions — разрезы для группировки и фильтрации метрик. Dimensions можно представить как справочник (словарь маппингов), который определяет, как расшифровывать значения полей для отображения в отчетах по АБ-тестам.
💡 Важно: Dimensions заводятся относительно редко. Один и тот же dimension можно переиспользовать для тысяч метрик. Главное — убедиться, что у источника в sources/ или в enrichments/ есть нужное поле для этого dimension.
Конфигурация#
# dimensions/dimensions.yaml
dimension_name:
has_id: true/false # В источниках представлен как <dimension_name>_id
description: "Описание"
parent: parent_dim # Опционально: слаг родительского dimension
slug: short_name # Опционально: сокращенное имя для отображения в отчетах
is_bool: true/false # Опционально: boolean dimension (не требует SQL-справочника)
Пояснения по полям:
has_id: еслиtrue, то в источниках поле имеет имя<dimension_name>_id(например,region_id)is_bool: еслиtrue, то dimension булевый и не требует создания SQL-справочника вdimensions/sql/slug: краткое имя, как dimension будет отображаться в отчете по результатам АБ-теста (например,logical_category→slug: logcat)parent: используется для иерархических dimensions (например, category → logical_category → vertical)
Типы дименшенов#
1. ID-based (has_id: true)#
platform:
has_id: true
description: "Платформа (mobile, desktop)"
vertical:
has_id: true
parent: null
description: "Вертикаль"
В source:
SELECT platform_id, vertical_id FROM ...
Для has_id = True должно быть выполнено два требования:
- Тип поля в источнике/обогащениях - int
- Название поля имеет суффикс
_id
2. Boolean (is_bool: true)#
is_logged_in:
is_bool: true
description: "Авторизованный пользователь"
3. Иерархические (parent)#
vertical:
has_id: true
logical_category:
has_id: true
parent: vertical
category:
has_id: true
parent: logical_category
Справочники#
- Справочники для дименшена необходим всегда, кроме
is_bool = True - Справочник задает список допустимых значений (для последующей валидации в конфигах экспериментов)
- Является источником для расшифровки значений дименшенов с
has_id = True
Маппинг ID → значение:
Справочники определяют маппинг между идентификаторами и человекочитаемыми значениями. Например, region_id (это value_id) → region (это value). Это позволяет в отчетах по АБ-тестам отображать понятные названия вместо числовых ID.
-- dimensions/sql/platform.sql
SELECT
Name as value, -- Обязательно: человекочитаемое значение
Platform_id as value_id, -- Обязательно для has_id=true: числовой ID
External_id as value_ext_id -- Опционально
FROM dds.H_Platform
⚠️ Важно: Поля в SQL-запросе обязательно должны быть переименованы в value и value_id (при необходимости). Trisigma распознает только эти стандартизированные имена полей.
Обязательные колонки:
value— всегда обязательна (даже если нетhas_id)value_id— обязательна, еслиhas_id = Trueparent_dimension,parent_value,parent_value_id— обязательны для dimensions с родителем
Опциональные: value_ext_id, is_active
Работа с CLI#
# Список дименшенов
trisigma sl list-dimensions
# Валидация
trisigma sl validate
Создание dimension#
1. Добавить в dimensions.yaml#
my_dimension:
has_id: true
description: "Описание"
2. Создать SQL#
-- dimensions/sql/my_dimension.sql
SELECT dimension_value as value, dimension_id as value_id
FROM dma.my_dimension_table
3. Добавить колонку в source или enrichments#
-- sources/sql/buyer_stream.sql
SELECT my_dimension_id FROM ...
4. Валидировать#
trisigma sl validate
Best Practices#
✅ Рекомендуется#
- Используйте
has_id: trueдля числовых ID - Определяйте иерархии через
parent - Добавляйте
description
❌ Не рекомендуется#
- Dimension без SQL в
dimensions/sql/ has_id: trueдля строковых полей (валидация не пройдет)- Отсутствие
description
Следующие шаги#
Подробнее: Концепции → Dimensions