Files
homework/dags/dbt_example_dag.py
T
2025-11-18 11:16:13 +04:00

53 lines
1.5 KiB
Python

"""
DAG для запуска dbt run команд
"""
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash import BashOperator
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'dbt_run_example',
default_args=default_args,
description='Пример DAG для запуска dbt run',
schedule_interval=None, # Запуск вручную
start_date=datetime(2024, 1, 1),
catchup=False,
tags=['dbt', 'example'],
) as dag:
# Проверка версии dbt
dbt_debug = BashOperator(
task_id='dbt_debug',
bash_command='cd /dbt && dbt debug --project-dir . --profiles-dir /home/airflow/.dbt',
)
# Установка зависимостей dbt
dbt_deps = BashOperator(
task_id='dbt_deps',
bash_command='cd /dbt && dbt deps --project-dir . --profiles-dir /home/airflow/.dbt',
)
# Запуск dbt run
dbt_run = BashOperator(
task_id='dbt_run',
bash_command='cd /dbt && dbt run --project-dir . --profiles-dir /home/airflow/.dbt',
)
# Запуск dbt test (опционально)
dbt_test = BashOperator(
task_id='dbt_test',
bash_command='cd /dbt && dbt test --project-dir . --profiles-dir /home/airflow/.dbt',
)
# Определяем порядок выполнения задач
dbt_debug >> dbt_deps >> dbt_run >> dbt_test