Запуск трансформаций до etl_pipeline #134

Closed
opened 2026-08-22 10:26:41 +03:00 by ddmitry · 1 comment
Owner

Part of #127.

Вопрос

Чем и когда гоняются трансформации DDS и обновление витрин-таблиц в
этапе 4, пока etl_pipeline не существует (он приходит этапом 5):
прирастает пульт мира, отдельный временный даг, make-цель? Полная
перезагрузка или партиционная замена — и что из механики уезжает этапу 5
как его законный предмет.

Граница: инкрементальный ETL — техдолг #2, сюда не входит.

Сначала прочитать

  • мастер-спека, разделы 7 и 9 (этапы 4 и 5);
  • ADR 0009 (пульт мира), ADR 0013 (жизненный цикл мира);
  • dags/world_lifecycle.py, dags/orders_ingest.py — как даги этапа 3
    запускают SQL-шаги.
Part of #127. ## Вопрос Чем и когда гоняются трансформации DDS и обновление витрин-таблиц в этапе 4, пока `etl_pipeline` не существует (он приходит этапом 5): прирастает пульт мира, отдельный временный даг, make-цель? Полная перезагрузка или партиционная замена — и что из механики уезжает этапу 5 как его законный предмет. Граница: инкрементальный ETL — техдолг #2, сюда не входит. ## Сначала прочитать - мастер-спека, разделы 7 и 9 (этапы 4 и 5); - ADR 0009 (пульт мира), ADR 0013 (жизненный цикл мира); - `dags/world_lifecycle.py`, `dags/orders_ingest.py` — как даги этапа 3 запускают SQL-шаги.
ddmitry added the wayfinder:grilling label 2026-08-22 10:26:44 +03:00
ddmitry added a new dependency 2026-08-22 10:27:12 +03:00
ddmitry self-assigned this 2026-08-25 09:44:30 +03:00
Author
Owner

Резолюция развилки #134 карты #127: дневной конвейер трансформаций.

Решения

  • Даг etl_pipeline рождается этапом 4 — «понадобился раньше», временного в нём ничего нет. Он мета-даг: дёргает слойные даги последовательно с ожиданием — dds_transform, затем dm_transform (витрины внутри — задачами); контур DQ встанет его же звеном после DM, состав — #135 и нарезка.
  • Запуск тремя путями: world_live_day дёргает конвейер с ожиданием последним шагом, после установки позиции (день сыгран — факт, но зеленеть, не узнав, разложился ли день, работник не должен — ADR 0003); world_next_day не дёргает — после разгона пачкой менти запускает рукой; world_initialize дёргает последним шагом — make up отдаёт стенд с собранными слоями.
  • Параметров у конвейера нет: объём выводится из world_position и состояния слоёв — сессии догоняют хвост, заказы пересобирают окно K, identity_map пересчитывается целиком. Один запуск одинаково верен из триггера, с кнопки и после падения; разгону на 7 дней хватает одного прогона.
  • Готовность источника: первый шаг dds_transform ждёт нулевого отставания потребителей hits — зелёный приём заказов о событиях не говорит ничего, а в пакетном режиме гонка с хвостом топика реальна.
  • Граница этапа 5: механика идемпотентности (таблица-двойник → REPLACE PARTITION на кластере) — этап 4, без неё дневной прогон не повторяем; этапу 5 остаётся партиционная переобработка — переиграть произвольный прошлый день, включая форму необязательных параметров; туда же стык #111.

Отклонено

Задачи трансформаций в работниках пульта; make-цель или SQL рукой; временный даг с нейтральным именем; диапазон дней параметрами триггера; принять гонку с хвостом hits. Доводы — в доке.

Дока: docs/architecture/etl.md (PR ниже); тем же PR указатели в доках заказа, сессии, README слоя и ретро-пометки в ADR 0008/0009.

Резолюция развилки #134 карты #127: дневной конвейер трансформаций. ## Решения - Даг `etl_pipeline` рождается этапом 4 — «понадобился раньше», временного в нём ничего нет. Он мета-даг: дёргает слойные даги последовательно с ожиданием — `dds_transform`, затем `dm_transform` (витрины внутри — задачами); контур DQ встанет его же звеном после DM, состав — #135 и нарезка. - Запуск тремя путями: `world_live_day` дёргает конвейер с ожиданием последним шагом, после установки позиции (день сыгран — факт, но зеленеть, не узнав, разложился ли день, работник не должен — ADR 0003); `world_next_day` не дёргает — после разгона пачкой менти запускает рукой; `world_initialize` дёргает последним шагом — make up отдаёт стенд с собранными слоями. - Параметров у конвейера нет: объём выводится из `world_position` и состояния слоёв — сессии догоняют хвост, заказы пересобирают окно K, identity_map пересчитывается целиком. Один запуск одинаково верен из триггера, с кнопки и после падения; разгону на 7 дней хватает одного прогона. - Готовность источника: первый шаг `dds_transform` ждёт нулевого отставания потребителей `hits` — зелёный приём заказов о событиях не говорит ничего, а в пакетном режиме гонка с хвостом топика реальна. - Граница этапа 5: механика идемпотентности (таблица-двойник → REPLACE PARTITION на кластере) — этап 4, без неё дневной прогон не повторяем; этапу 5 остаётся партиционная переобработка — переиграть произвольный прошлый день, включая форму необязательных параметров; туда же стык #111. ## Отклонено Задачи трансформаций в работниках пульта; make-цель или SQL рукой; временный даг с нейтральным именем; диапазон дней параметрами триггера; принять гонку с хвостом `hits`. Доводы — в доке. Дока: docs/architecture/etl.md (PR ниже); тем же PR указатели в доках заказа, сессии, README слоя и ретро-пометки в ADR 0008/0009.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: ddmitry/clickstream-data-platform#134