Этот репозиторий демонстрирует организацию DAG'ов в корпоративном Airflow-фреймворке.
airflow/
├── dags/ # DAG'и по доменам
│ ├── sales/ # Домен: продажи
│ │ ├── dag_sales_load.py # Основной DAG для загрузки продаж
│ │ ├── sql/ # SQL-скрипты
│ │ │ └── sales_load.sql
│ │ └── tasks/ # Бизнес-логика (Python)
│ │ └── sales_transform.py
│ └── marketing/ # Домен: маркетинг
│ └── dag_ads_metrics.py
├── plugins/ # Корпоративный фреймворк
│ └── etl_framework/
│ ├── operators/ # Кастомные операторы
│ │ ├── s3_to_ch.py # S3 → ClickHouse (демо)
│ │ ├── yt_saurus.py # YTSaurus оператор (демо)
│ │ └── dq.py # Data Quality проверки
│ ├── hooks/ # Кастомные хуки
│ │ ├── s3.py # S3 хук (мок)
│ │ └── clickhouse.py # ClickHouse хук (мок)
│ └── utils/ # Утилиты
│ ├── logging.py # Единое логирование
│ └── sql_builder.py # Загрузка и рендеринг SQL
└── data/ # Тестовые данные
└── sales/
└── raw_sales.csv # Демо-датасет продаж
- Каждый домен (sales, marketing) имеет свою папку в
dags/ - DAG'и, SQL и бизнес-логика изолированы по доменам
- Все кастомные операторы, хуки и утилиты в
plugins/etl_framework/ - Airflow автоматически добавляет
plugins/в PYTHONPATH
- DAG файлы - только оркестрация (что и в каком порядке)
- SQL файлы - чистая SQL-логика
- tasks/ - бизнес-логика на Python (трансформации, агрегации)
Демонстрирует:
- Использование кастомного оператора
S3ToCHOperator - Вызов бизнес-логики из
tasks/sales_transform.py - Data Quality проверку через
DQOperator - Использование SQL-билдера для финальной загрузки
Демонстрирует:
- Использование
YTSaurusOperator - Цепочку задач с передачей данных через XCom
- DQ проверку результата
В data/sales/raw_sales.csv находится небольшой демо-датасет:
- 10 записей продаж
- Колонки: order_id, amount, region
- Используется для демонстрации трансформаций
docker-compose up -d- Интерфейс на
http://localhost:8080 - Логин:
admin; Пароль:admin
- Все операторы работают в "демо-режиме" - не требуют реальных подключений
- S3 оператор читает локальные файлы из
data/ - ClickHouse/YTSaurus операторы только логируют действия
- Все безопасно для локального запуска