Files
airflow-greenplum/airflow/dags/bookings_dm_ddl.py
T
ddadmin 92f3828a45 test(e2e): протокол сквозного тестирования и инструменты очистки DWH
- Зачем:
  - формализация проверки всей цепочки ETL (STG -> ODS -> DDS -> DM).
- Что:
  - создан docs/e2e-etl-test-protocol.md и sql/truncate_gp.sql.
  - в Makefile добавлена команда dwh-truncate.
  - start_date во всех DAG изменен на 2017-01-01.
- Проверка:
  - выполнение make dwh-truncate и прогон DAG.
2026-03-01 20:08:01 +03:00

52 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from __future__ import annotations
"""
Учебный DAG: создаёт/обновляет DM-слой (Data Mart) в Greenplum для домена bookings.
Запускается вручную перед DAG загрузки `bookings_to_gp_dm` или после изменения DM DDL.
Создаёт 5 DM-витрин: sales_report, route_performance, passenger_loyalty,
airport_traffic, monthly_overview.
На данном этапе реализована только эталонная витрина sales_report.
Остальные витрины будут добавлены в последующих этапах.
"""
from datetime import timedelta
import pendulum
from airflow.providers.postgres.operators.postgres import PostgresOperator
from airflow import DAG
GREENPLUM_CONN_ID = "greenplum_conn"
default_args = {"owner": "airflow", "retries": 1, "retry_delay": timedelta(seconds=30)}
with DAG(
dag_id="bookings_dm_ddl",
start_date=pendulum.datetime(2017, 1, 1, tz="UTC"),
schedule=None,
catchup=False,
template_searchpath="/sql",
default_args=default_args,
tags=["demo", "greenplum", "ddl", "bookings", "dm"],
description="Учебный DDL DAG: создаёт/обновляет dm.* для bookings",
) as dag:
# Эталонная витрина: sales_report
apply_dm_sales_report_ddl = PostgresOperator(
task_id="apply_dm_sales_report_ddl",
postgres_conn_id=GREENPLUM_CONN_ID,
sql="dm/sales_report_ddl.sql",
)
# Заглушки для будущих витрин (будут реализованы в этапах 2-5)
# apply_dm_route_performance_ddl = PostgresOperator(...)
# apply_dm_passenger_loyalty_ddl = PostgresOperator(...)
# apply_dm_airport_traffic_ddl = PostgresOperator(...)
# apply_dm_monthly_overview_ddl = PostgresOperator(...)
# Линейная цепочка (пока только одна витрина)
# В будущем: sales_report >> route_performance >> passenger_loyalty
# >> airport_traffic >> monthly_overview
apply_dm_sales_report_ddl