Наш сайт использует файлы cookie, чтобы улучшить работу сайта, повысить его эффективность и удобство
Настройки сookie
Файлы cookie, необходимые для правильной работы сайта, всегда разрешены.
Основные файлы cookie
Всегда Включено. Эти файлы cookie необходимы для использования веб-сайта и его функций. Их нельзя отключить. Они устанавливаются в ответ на ваши запросы, такие как настройка параметров конфиденциальности, вход в систему или заполнение форм.
Аналитические файлы cookie
Disabled
Эти файлы cookie нужны чтобы помочь нам понять, на сколько вам удобен наш веб-сайт и насколько эффективны наши маркетологи:) Смотрите список аналитических файлов cookie, которые мы используем.
Рекламные файлы cookie
Disabled
Эти файлы cookie предоставляют информацию рекламным компаниям с целью предоставления или ограничения персонализированной рекламы. Эта информация может быть передана другим рекламным компаниям. Смотрите список рекламных файлов cookie, которые мы используем.
Не устанем повторять, 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

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