feat(airflow): implement dag orchestration for ddl and etl

Add comprehensive DAG implementation for ClickHouse schema initialization
and ETL pipeline orchestration. The ddl_init_dag manages database schema
creation across stg/ods/dds/dm layers with verification capabilities. The
etl_pipeline_dag implements full ODS to DDS to DM transformation flow with
data quality checks, branching logic for full/incremental loads, and
timeout handling for data availability.

Additional changes:
- Upgrade Airflow from 2.9.3 to 2.10.5
- Fix ClickHouse connection to use native protocol port 9000
- Mount SQL directory in docker-compose for DAG execution
- Update project requirements and documentation comments
- Remove unused pandas dependency
This commit is contained in:
2026-02-07 21:52:31 +03:00
parent de9d0429a2
commit 14d16c5cae
7 changed files with 459 additions and 35 deletions
+6 -3
View File
@@ -4,7 +4,7 @@ x-airflow-env: &airflow-default-env
AIRFLOW__CORE__EXECUTOR: LocalExecutor
AIRFLOW__WEBSERVER__SECRET_KEY: ${AIRFLOW_SECRET_KEY:-replace-me-with-random-string}
# ClickHouse connection для ETL
AIRFLOW_CONN_CLICKHOUSE_DEFAULT: clickhouse://default:123456@clickhouse:8123/default
AIRFLOW_CONN_CLICKHOUSE_DEFAULT: clickhouse://default:123456@clickhouse:9000/default
services:
@@ -97,7 +97,7 @@ services:
build:
context: .
dockerfile: Dockerfile.airflow
image: airflow-optimized:2.9.3
image: airflow-optimized:2.10.5
environment:
<<: *airflow-default-env
command: >
@@ -108,6 +108,7 @@ services:
- "8080:8080"
volumes:
- ./dags:/opt/airflow/dags
- ./sql:/opt/airflow/sql:ro
- ./data:/opt/airflow/data
networks:
- cs_dwh
@@ -132,6 +133,7 @@ services:
"
volumes:
- ./dags:/opt/airflow/dags
- ./sql:/opt/airflow/sql:ro
- ./data:/opt/airflow/data
networks:
- cs_dwh
@@ -153,13 +155,14 @@ services:
<<: *airflow-default-env
volumes:
- ./dags:/opt/airflow/dags
- ./sql:/opt/airflow/sql:ro
- ./data:/opt/airflow/data
networks:
- cs_dwh
command: >
bash -ceuo pipefail "
mkdir -p /opt/airflow/data &&
chmod -R 777 /opt/airflow/data || true &&
chmod -R a+rX /opt/airflow/data || true &&
chown -R airflow:0 /opt/airflow/data || true &&
umask 000 &&
su -s /bin/bash airflow -c 'airflow db migrate' &&