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
# Список дименшенов \{#spisok-dimenshenov}
trisigma sl list-dimensions
# Валидация \{#validatsiya}
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