Сторонние решения для интеграции Airflow и dbt
Хотя запуск dbt через BashOperator в Airflow — рабочее решение, оно быстро становится громоздким, если пайплайнов много или нужно гибко управлять моделями. Поэтому появились сторонние пакеты, которые делают интеграцию более удобной и «нативной».
Это пакет, предоставляющий специализированные операторы для dbt: DbtRunOperator, DbtTestOperator и другие. Вместо написания длинных shell-команд можно использовать готовые классы, где параметры (путь к проекту, профили, список моделей) указываются прямо в коде DAG.
- компактный и читаемый код;
- простое указание моделей или тегов для запуска;
- автоматическая интеграция логов dbt в Airflow.
Cosmos идёт ещё дальше: он позволяет автоматически «транслировать» dbt-проект в Airflow DAG. То есть весь DAG генерируется из описания зависимостей в dbt-моделях, и нет необходимости вручную прописывать порядок задач.
- минимизация ручного кода в DAG’ах;
- автоматическая синхронизация зависимостей моделей dbt и задач Airflow;
- поддержка больших проектов без потери читаемости.
Таким образом, dbt-airflow упрощает написание DAG’ов с dbt-операциями, а Cosmos позволяет фактически «поднять» DAG прямо из dbt-проекта. Оба решения делают интеграцию более надёжной и удобной, чем использование «голого» BashOperator.
ВАРИАНТЫ ЗАПУСКА DBT-МОДЕЛЕЙ
DBT позволяет гибко управлять запуском трансформаций. В зависимости от задач можно запускать весь проект целиком, отдельные подмножества моделей или каждую модель индивидуально. Рассмотрим основные варианты.
- Все модели проекта (dbt run). Самый простой способ: запускаются все SQL-модели, определённые в проекте. Подходит для полного обновления витрины данных или разовых перестроений.
- Модели определённой схемы данных. С помощью флага --select можно выбрать только модели, относящиеся к конкретной схеме или источнику. Например, dbt run --select source:staging позволит запускать только staging-слой.
- Модели определённой группы (по тегам). В YAML-файлах модели можно помечать тегами (tags), а потом запускать только нужные группы: dbt run --select tag:finance. Это удобно для бизнес-ориентированных запусков (финансовые отчёты, маркетинговые метрики и т.п.).
- Каждая модель отдельно. Запуск по имени модели: dbt run --select sales_agg. Подходит для разработки или тестирования конкретной трансформации без затрагивания всего пайплайна.