Закрыть
Получить бесплатный доступ к DataPulse
Наш менеджер свяжется с вами для предоставления бесплатного доступа и презентует наш сервис
Не устанем повторять, dbt прекрасный инструмент трансформации. Но ориентируется он только на трансформацию, а такие важные задачи как сбор данных, мониторинг и постановка на расписание никак не реализованы. И поэтому приходится самостоятельно настраивать интеграцию с другими инструментами.
Здесь поговорим именно про оркестрацию dbt моделей, чего, признаться, так не хватает в опенсорсной dbt core. Для этого будем использовать всем известный Airflow, как ныне стандарт в задачах оркестрации.

Введение в Airflow

Airflow — это платформа для оркестрации рабочих процессов, которая позволяет описывать сложные последовательности задач в виде DAG’ов (графов зависимостей) и управлять их выполнением. Она обеспечивает планирование, мониторинг и масштабирование вычислительных процессов, что делает её удобным инструментом для построения надёжных data pipeline’ов.
Основная концепция в Airflow — это DAG (Directed Acyclic Graph, направленный ациклический граф). DAG описывает последовательность шагов, которые должны быть выполнены: каждая задача является узлом графа, а зависимости между ними определяют порядок запуска. Такой подход позволяет наглядно управлять даже очень большими и разветвлёнными процессами.
Задачи в Airflow определяются через операторы (Operators). Это строительные блоки, которые описывают конкретное действие: выполнение SQL-запроса, запуск Python-функции, обращение к API или выполнение команды в терминале. Когда DAG активируется, Airflow создаёт таски (tasks) — конкретные экземпляры задач, которые запускаются в соответствии с расписанием и зависимостями.
Airflow оснащён встроенным планировщиком: он решает, когда именно запускать задачи и какие ресурсы для этого выделять. Сами задачи выполняются рабочими процессами (workers), что позволяет распределять нагрузку и запускать пайплайны параллельно.
Подключение к базам данных и внешним сервисам реализуется через подключения (Connections). Администратор может заранее настроить доступы (например, к PostgreSQL, Snowflake или Google BigQuery), а задачи внутри DAG’а будут использовать эти настройки для безопасного выполнения. Это избавляет от необходимости хранить пароли в коде и упрощает интеграцию с различными системами.

Введение в dbt

DBT (data build tool) — это инструмент для трансформации данных, который работает поверх SQL и помогает командам аналитиков и инженеров данных создавать воспроизводимые, документированные и проверяемые пайплайны.
SQL-модель в dbt — это обычный SQL-файл, который описывает, как должны преобразовываться данные из исходных таблиц. При запуске dbt эти SQL-файлы автоматически компилируются и выполняются в базе данных, создавая новые таблицы или представления.
Помимо SQL-файлов, каждая модель может быть описана в YAML-файле. Здесь хранятся метаданные: описание модели, её зависимости, тесты на качество данных (например, уникальность или отсутствие пустых значений), а также документация для конечных пользователей. Это позволяет не только стандартизировать разработку, но и автоматически генерировать удобную документацию по всем моделям.
Запуск моделей в dbt выполняется через команду dbt run. При её выполнении dbt строит дерево зависимостей между моделями и запускает их в правильном порядке. Можно запускать как весь проект целиком, так и отдельные модели или их подмножество с помощью тегов или фильтров. Это особенно полезно при разработке: изменения можно протестировать на небольшом участке, не прогоняя всю трансформацию данных.

Запуск SQL-моделей dbt в Airflow

Связка работает следующим образом: Airflow управляет расписанием и зависимостями, а dbt выполняет непосредственно трансформации в базе данных.
Самый простой способ запускать dbt в Airflow — это использование BashOperator. В нём указывается команда, которую Airflow должен выполнить. Например, чтобы запустить все модели проекта:
В этом примере создаются две задачи:
  • dbt_run — выполняет все SQL-модели (dbt run),
  • dbt_test — запускает тесты на моделях (dbt test).
Задачи связаны зависимостью: сначала выполняется трансформация, затем тестирование.

Сторонние решения для интеграции Airflow и dbt

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

закажите
демо-версию
datapulse

оставьте ваши контакты и наш менеджер свяжется с вами
Закрыть

Получить бесплатный доступ к DataPulse

Наш менеджер свяжется с вами для предоставления бесплатного доступа и презентует наш сервис