Files
airflow-greenplum/docs/dag_execution_order.md
T
ddadmin 768334453f docs(dds): добавлены комментарии и исправлены ошибки в DWH
- Зачем:
  - закрыты задачи P0 и P1 из ревью архитектуры для повышения понятности стенда для студентов.
- Что:
  - исправлен distribution key для airport_traffic в дизайн-документе.
  - добавлены комментарии о генерации SK и отсутствии SK в фактах.
  - создан документ docs/dag_execution_order.md с описанием порядка запуска DAG-ов.
  - объяснена логика late-arriving dimensions и batch resolver.
  - добавлена legacy-пометка для хелпера greenplum.py.
- Проверка:
  - визуальная проверка добавленных комментариев и новых файлов.
2026-03-01 17:50:53 +03:00

2.8 KiB
Raw Blame History

Порядок запуска DAG (Cross-DAG Dependencies)

В этом стенде пайплайны разделены на несколько DAG-ов по слоям DWH (STG, ODS, DDS, DM). Они настроены с schedule=None, так как это учебный проект.

Чтобы данные корректно прошли от источника до витрин, запускать DAG-и нужно в определённом порядке.

1. DDL-скрипты (выполняются один раз)

Для создания структуры таблиц в аналитических слоях:

  1. Запустите bookings_dds_ddl — создаст таблицы для измерений и фактов в слое DDS.
  2. Запустите bookings_dm_ddl — создаст таблицы витрин в слое DM.

(Слои STG и ODS создаются при старте стенда через make ddl-gp или могут быть пересозданы соответствующими DDL-скриптами).

2. Ежедневная загрузка (ETL)

Для прогрузки новой порции данных (или полного перерасчёта) соблюдайте следующую цепочку:

  1. bookings_to_gp_stage
    • Извлекает новые данные из демо-БД PostgreSQL и сохраняет их в stg-схему в Greenplum.
    • Генерирует stg_batch_id для текущей загрузки.
  2. bookings_to_gp_ods
    • Берёт последний согласованный stg_batch_id из STG-слоя.
    • Выполняет нормализацию и SCD1-UPSERT в слой ODS.
  3. bookings_to_gp_dds
    • Читает очищенные данные из ODS.
    • Обновляет измерения (SCD1, SCD2) и инкрементально догружает новые рейсы в таблицу фактов dds.fact_flight_sales.
  4. bookings_to_gp_dm
    • Читает новые факты из DDS.
    • Обновляет агрегированные витрины (использует HWM-инкрементальность по _load_ts или полный перерасчёт).

💡 Архитектурная заметка: В реальном production-окружении (Airflow) эти связи между DAG-ами обычно настраиваются автоматически через TriggerDagRunOperator, ExternalTaskSensor или механизмы Data-Aware Scheduling (Datasets/Data Assets). В учебных целях мы оставили их ручными, чтобы вы могли проинспектировать каждый слой после его загрузки.