feat(airflow): пульт стал world_init, добавлен DAG world_next_day (#4)
- Зачем:
- список DAG'ов должен читаться лесенкой ddl_init → world_init →
world_next_day, а путь менти — проходиться пустыми формами
(issue #4, спека редизайна пути менти, решения 2–3).
- Что:
- generator_control переименован в world_init, дефолт операции —
import; next-day ушёл из выпадашки в отдельный DAG;
- новый беспараметрный world_next_day: расписание */30 * * * *,
создаётся на паузе, catchup=False, max_active_runs=1; общие
задачи вынесены в airflow/dags/utils/startup_history_tasks.py;
- доки и контрактные тесты обновлены синхронно; быстрый старт
README — без make ddl, схему создаёт DAG ddl_init.
- Проверка:
- make test (210 + 31) и make lint зелёные;
- живая приёмка на чистом стенде: world_init пустой формой
импортировал эталонный мир за 217 с (3 дня, 280 437 событий),
world_next_day после снятия с паузы добавляет ровно один день
за прогон, дашборд Superset собирается.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
витринами.
|
||||
|
||||
Поток данных коротко:
|
||||
- **стартовая история**: `generator backfill → Kafka → ClickHouse (STG) →
|
||||
- **стартовая история**: `world_init → Kafka → ClickHouse (STG) →
|
||||
batch STG → ODS → DDS → DM → Superset`.
|
||||
- **живое продолжение**: `generator live → Kafka → ClickHouse (STG) → batch ETL
|
||||
→ Superset`.
|
||||
@@ -31,20 +31,29 @@
|
||||
Перед первой командой нужны `Docker` с `docker compose`, `make`, `bash`, `curl`,
|
||||
`git` и `uv`. `uv` нужен для локальных Python-проверок и команд разработки.
|
||||
|
||||
Для ручной работы поднимите стенд и создайте стартовую историю через Airflow:
|
||||
Для ручной работы поднимите стенд:
|
||||
|
||||
```bash
|
||||
make up
|
||||
make ddl
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
Откройте Airflow: `http://localhost:8080` (`admin/admin`). Сначала снимите
|
||||
паузу с DAG `etl_pipeline` (переключатель слева от имени): на свежем стенде он
|
||||
создаётся на паузе, и `backfill` откажется стартовать. Затем запустите
|
||||
`generator_control` с операцией `backfill`: DAG создаст стартовую историю,
|
||||
запустит ETL и выполнит `check`. `make up` не запускает live-генератор; live
|
||||
включается отдельно командой `make generator-continue`.
|
||||
Дальше всё делается в Airflow: `http://localhost:8080` (`admin/admin`).
|
||||
Список DAG'ов читается лесенкой сверху вниз; на свежем стенде все DAG'и
|
||||
создаются на паузе, поэтому перед запуском снимайте паузу переключателем
|
||||
слева от имени.
|
||||
|
||||
1. `ddl_init` — снимите паузу и запустите: DAG создаст схему ClickHouse
|
||||
(отдельная команда в терминале не нужна).
|
||||
2. `etl_pipeline` — только снимите паузу: его запустит следующий шаг.
|
||||
3. `world_init` — снимите паузу и запустите с пустой формой: DAG импортирует
|
||||
эталонный мир, запустит ETL и сверит витрины.
|
||||
4. `world_next_day` — когда захотите добавить ровно один модельный день,
|
||||
запустите его с пустой формой. Расписание задано каждые 30 минут, но по
|
||||
умолчанию DAG стоит на паузе.
|
||||
|
||||
`make up` не запускает live-генератор; live включается отдельно командой
|
||||
`make generator-continue`.
|
||||
|
||||
После обновления репозитория снова выполните `make up`: команда пересобирает
|
||||
Airflow-образ и подтягивает новые зависимости и DAG-и. Superset-дэшборд
|
||||
@@ -53,7 +62,7 @@ Airflow-образ и подтягивает новые зависимости
|
||||
|
||||
Для полностью автоматического чистого прогона из консоли есть команда — это
|
||||
тот же путь, что выше через Airflow UI, но одной командой и без ручных шагов
|
||||
(DDL она применяет сама, отдельный `make ddl` не нужен):
|
||||
(схему ClickHouse она применяет сама):
|
||||
|
||||
```bash
|
||||
make generated-history-analytics
|
||||
|
||||
Reference in New Issue
Block a user