Sobes.tech
Назад к вопросам
Middle
7

Джобы из dbt в Airflow — ты руками писал или как-то автоматизировал, были шаблоны?

Компании, где спрашивали
МВидеоМВидео

Ответ от нейросети

sobes.tech AI

В моём опыте джобы для запуска dbt в Airflow чаще всего автоматизируются с помощью шаблонов и параметризации. Обычно создаётся один универсальный DAG с динамическим созданием тасков на основе списка моделей или проектов dbt. Это позволяет не писать вручную каждый таск.

Пример подхода:

  • В Airflow читается конфиг или список моделей dbt.
  • Для каждой модели создаётся таск с оператором BashOperator или PythonOperator, который запускает dbt run --models <model>.
  • Используются шаблоны Jinja для генерации команд и параметров.

Пример кода на Python в Airflow:

from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime

models = ['model_a', 'model_b', 'model_c']

with DAG('dbt_dag', start_date=datetime(2023,1,1), schedule_interval='@daily') as dag:
    for model in models:
        BashOperator(
            task_id=f'dbt_run_{model}',
            bash_command=f'dbt run --models {model} --profiles-dir /path/to/profiles'
        )

Такой подход упрощает поддержку и масштабирование, а также позволяет легко добавлять новые модели без изменения кода DAG.