Перейти к содержанию

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_categoryslug: 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 должно быть выполнено два требования:

  1. Тип поля в источнике/обогащениях - int
  2. Название поля имеет суффикс _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 = True
  • parent_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

Следующие шаги#

  • Workflow — практика создания
  • Metrics — использование в фильтрах

Подробнее: Концепции → Dimensions