diff --git a/dags/dbt_example_dag.py b/dags/dbt_example_dag.py new file mode 100644 index 0000000..dd05f7d --- /dev/null +++ b/dags/dbt_example_dag.py @@ -0,0 +1,52 @@ +""" +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