- Зачем: - необходимо визуализировать выбор типа хранения (Heap vs Append-Only) для учебных целей. - автоматизировать проверку всей цепочки DWH для исключения ручных ошибок. - сделать процесс отладки прозрачным и наглядным через стандартные инструменты Airflow. - Что: - внедрена клауза WITH (appendonly=...) во все DDL; ODS-справочники переведены на AO Row и TRUNCATE+INSERT. - создан скрипт scripts/e2e_etl.sh для полного прогона ETL (DDL + 2 дня данных) через REST API. - исправлены баги типизации (INTEGER[]), именования полей (amount, passenger_id) и удалены фантомные колонки (contact_data). - обновлен e2e-etl-test-protocol.md: добавлен раздел по отладке, чтению логов и перезапуску задач через API. - исправлены pytest-контракты под новую логику загрузки. - Проверка: - успешный прогон `make e2e-smoke` (полный цикл от очистки до витрины).
55 lines
4.8 KiB
Markdown
55 lines
4.8 KiB
Markdown
# TODO (maintainers / mentors)
|
||
|
||
Этот файл собирает идеи по доработке стенда, которые не критичны для текущих задач менти,
|
||
но улучшат стабильность и удобство сопровождения.
|
||
|
||
Статус: ниже есть как актуальные, так и уже выполненные пункты.
|
||
|
||
- [x] Сделать 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`;
|
||
- при необходимости добавить шаги восстановления и обновить документацию.
|
||
|
||
- [x] Собрать свой образ Airflow поверх `apache/airflow:2.9.2`:
|
||
- вынести установку Python‑зависимостей из runtime (`pip install ...` при старте контейнеров)
|
||
в отдельный `Dockerfile`;
|
||
- переключить `docker-compose.yml` на использование этого образа для `airflow-webserver`,
|
||
`airflow-scheduler` и `airflow-init`;
|
||
- обновить документацию (README/TESTING) под новую схему сборки.
|
||
|
||
- [x] Переключить 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’а.
|
||
|
||
- [x] Разобрать и стабилизировать интеграцию с Greenplum/PXF:
|
||
- убедиться, что PXF в контейнере `greenplum` всегда корректно инициализируется
|
||
(нет ошибок вида `protocol "pxf" does not exist` при первом запуске `make ddl-gp`);
|
||
- при необходимости доработать init‑скрипты в `pxf/init/` и/или документацию,
|
||
чтобы порядок действий для ментей был однозначным и воспроизводимым;
|
||
- добавить краткий раздел в README/TESTING о типичных ошибках PXF/Greenplum и шагах по их устранению.
|
||
- диагностика текущего кейса: `docs/internal/pxf_bookings.md` (раздел «Известная проблема»).
|
||
|
||
- [x] Разобраться с генератором 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`
|
||
|
||
- [x] Добавить раздел «Благодарности» в `README.md`:
|
||
- явно поблагодарить Postgres Pro за демо‑БД bookings (репозиторий `postgrespro/demodb`);
|
||
- указать автора Docker‑сборки Greenplum (`woblerr/docker-greenplum`, образ `woblerr/greenplum`);
|
||
- при необходимости сослаться на соответствующие лицензии/README исходных проектов.
|
||
|
||
- [x] Добавить в образ Airflow установку `psql`, чтобы тестировать загрузку CSV из CLI внутри контейнера (без root и дополнительных зависимостей на хосте).
|