Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Корпоративный ETL-фреймворк - Демонстрация

Этот репозиторий демонстрирует организацию 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         # Демо-датасет продаж

Особенности организации

1. Разделение по доменам

  • Каждый домен (sales, marketing) имеет свою папку в dags/
  • DAG'и, SQL и бизнес-логика изолированы по доменам

2. Переиспользуемый фреймворк

  • Все кастомные операторы, хуки и утилиты в plugins/etl_framework/
  • Airflow автоматически добавляет plugins/ в PYTHONPATH

3. Разделение ответственности

  • DAG файлы - только оркестрация (что и в каком порядке)
  • SQL файлы - чистая SQL-логика
  • tasks/ - бизнес-логика на Python (трансформации, агрегации)

Демонстрационные DAG'и

corporate_sales_load

Демонстрирует:

  • Использование кастомного оператора S3ToCHOperator
  • Вызов бизнес-логики из tasks/sales_transform.py
  • Data Quality проверку через DQOperator
  • Использование SQL-билдера для финальной загрузки

corporate_marketing_ads_metrics

Демонстрирует:

  • Использование YTSaurusOperator
  • Цепочку задач с передачей данных через XCom
  • DQ проверку результата

Тестовые данные

В data/sales/raw_sales.csv находится небольшой демо-датасет:

  • 10 записей продаж
  • Колонки: order_id, amount, region
  • Используется для демонстрации трансформаций

Запуск

  1. docker-compose up -d
  2. Интерфейс на http://localhost:8080
  3. Логин: admin; Пароль: admin

Важно

  • Все операторы работают в "демо-режиме" - не требуют реальных подключений
  • S3 оператор читает локальные файлы из data/
  • ClickHouse/YTSaurus операторы только логируют действия
  • Все безопасно для локального запуска

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages