Middle
33
A dbt-ből származó feladatok az Airflow-ban — kézzel írtad őket, vagy valamilyen módon automatizáltad, voltak sablonok?
Cégeket kérdeztek
Válasz az MI-től
sobes.tech MI
В моём опыте джобы для запуска 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.