Files
airflow-greenplum/TODO.md
T
ddadmin d89434c3a8 feat(dds): денормализовано измерение dim_routes и упрощена витрина route_performance
- Зачем:
  - улучшение производительности аналитических запросов и упрощение витрин согласно принципам Kimball Star Schema.
- Что:
  - в dds.dim_routes добавлены денормализованные поля городов и моделей самолетов.
  - в скрипт загрузки dim_routes_load.sql добавлена фаза refresh для актуализации атрибутов.
  - загрузка dm.route_performance упрощена до 1 JOIN к измерению маршрутов.
  - обновлен DAG bookings_to_gp_dds и smoke-тесты структуры графа.
  - в документации (db_schema.md) отражены денормализация и lineage версий.
  - в dim_routes_load.sql исправлено затирание _load_id при refresh исторических версий.
- Проверка:
  - make test (smoke-тесты структуры DAG проходят успешно).
2026-03-05 23:05:59 +03:00

5.3 KiB
Raw Blame History

TODO (maintainers / mentors)

Этот файл собирает идеи по доработке стенда, которые не критичны для текущих задач менти, но улучшат стабильность и удобство сопровождения.

Статус: ниже есть как актуальные, так и уже выполненные пункты.

  • Сделать REST API Airflow основным способом тестирования ETL вместо CLI-вызовов через docker compose exec ... airflow ...:

    • обновить TESTING.md, сместив фокус на REST API сценарии;
    • оставить CLI как резервный вариант для локальной отладки;
    • проверить, что шаги тестирования воспроизводимы без входа в контейнер Airflow.
  • Протестировать устойчивость bookings-db после остановки контейнеров:

    • прогнать сценарии make stop -> make up и make down -> make up;
    • зафиксировать, ломается ли генератор/данные в bookings-db;
    • при необходимости добавить шаги восстановления и обновить документацию.
  • Собрать свой образ Airflow поверх apache/airflow:2.9.2:

    • вынести установку Python‑зависимостей из runtime (pip install ... при старте контейнеров) в отдельный Dockerfile;
    • переключить docker-compose.yml на использование этого образа для airflow-webserver, airflow-scheduler и airflow-init;
    • обновить документацию (README/TESTING) под новую схему сборки.
  • Переключить Airflow с SequentialExecutor (SequentialScheduler) на LocalExecutor для docker‑стенда:

    • проверить, какие параметры достаточно поменять в env/конфиге (AIRFLOW__CORE__EXECUTOR) для образа apache/airflow:2.9.2;
    • убедиться, что примерные DAG’и (csv_to_greenplum, bookings_to_gp_stage) ведут себя предсказуемо в режиме параллельного исполнения;
    • при необходимости скорректировать тесты и документацию (README/TESTING) с учётом нового executor’а.
  • Разобрать и стабилизировать интеграцию с Greenplum/PXF:

    • убедиться, что PXF в контейнере greenplum всегда корректно инициализируется (нет ошибок вида protocol "pxf" does not exist при первом запуске make ddl-gp);
    • при необходимости доработать init‑скрипты в pxf/init/ и/или документацию, чтобы порядок действий для ментей был однозначным и воспроизводимым;
    • добавить краткий раздел в README/TESTING о типичных ошибках PXF/Greenplum и шагах по их устранению.
    • диагностика текущего кейса: docs/internal/pxf_bookings.md (раздел «Известная проблема»).
  • Разобраться с генератором demodb:

    • после make bookings-init таблица bookings.bookings остаётся пустой;
    • патчи bookings/patches/engine_jobs1_sync.patch и bookings/patches/install_drop_if_exists.patch падают при применении (hunk failed / garbage in patch);
    • из‑за этого DAG bookings_to_gp_stage валится на проверках (источник пустой).
    • план: plans/bookings-demodb-bugfix-plan.md
  • Добавить раздел «Благодарности» в README.md:

    • явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий postgrespro/demodb);
    • указать автора Docker‑сборки Greenplum (woblerr/docker-greenplum, образ woblerr/greenplum);
    • при необходимости сослаться на соответствующие лицензии/README исходных проектов.
  • Добавить в образ Airflow установку psql, чтобы тестировать загрузку CSV из CLI внутри контейнера (без root и дополнительных зависимостей на хосте).

  • Денормализовать dds.dim_routes (добавить departure_city, arrival_city, airplane_model, total_seats):

    • привести измерение в соответствие с принципом Кимбалла («самодостаточное измерение»);
    • упростить dm.route_performance с 4-JOIN до 1-JOIN;
    • обновить DAG-зависимости: airports+airplanes DQ → routes load;
    • подробный план: docs/internal/dim_routes_denormalization_plan.md.