В этом руководстве мы рассмотрим, как использовать Dagster совместно с DBT (Data Build Tool) для управления активами данных. DBT упрощает процесс трансформации данных, а Dagster обеспечивает надежную оркестрацию этих трансформаций, предлагая мощные инструменты для управления зависимостями, мониторинга и тестирования.
Понимание DBT Assets и их роли
Что такое DBT Assets?
DBT assets – это представление ваших моделей данных, источников, снепшотов и других компонентов DBT в виде графа зависимостей. Это позволяет отслеживать, как данные преобразуются на каждом этапе пайплайна, обеспечивая прозрачность и облегчая отладку.
Как DBT управляет активами?
DBT использует dbt_project.yml файл для определения структуры проекта, включая пути к моделям, источникам и другим артефактам. DBT CLI команды, такие как dbt run, dbt build, dbt test, позволяют выполнять трансформации, строить модели и тестировать их. DBT также поддерживает материализации (materializations), определяющие, как модели данных должны быть построены в базе данных (например, table, view, incremental).
Интеграция Dagster и DBT для управления активами
Настройка интеграции Dagster с DBT
Для интеграции Dagster с DBT необходимо установить пакет dagster-dbt. Это можно сделать с помощью pip:
pip install dagster-dbt
Затем необходимо настроить Dagster, указав путь к вашему DBT проекту. Это обычно делается путем создания Dagster DbtCliResource.
from dagster_dbt import DbtCliResource
dbt_resource = DbtCliResource(project_dir="path/to/your/dbt_project")
@repository
def your_repository():
return [define_your_job(resource_defs={"dbt": dbt_resource})]
Определение и запуск DBT Assets в Dagster
После настройки интеграции, Dagster может автоматически обнаруживать ваши DBT модели как активы. Вы можете использовать декоратор @dbt_assets для автоматического создания Dagster активов из ваших DBT моделей.
from dagster_dbt import dbt_assets
@dbt_assets(manifest="path/to/your/dbt_project/target/manifest.json")
def your_dbt_assets(context: AssetExecutionContext, dbt: DbtCliResource):
yield from dbt.cli(
["build"],
context=context,
target="dev",
profiles_dir="path/to/your/dbt_project",
).stream()
Выполнение заданий по активам с помощью DBT и Dagster
Пошаговое руководство по созданию и выполнению заданий
-
Определение активов DBT: Создайте DBT модели, используя SQL или Python (с помощью dbt-core >=1.7). Укажите материализации (table, view, incremental) в файлах моделей.
-
Интеграция с Dagster: Используйте
dagster-dbtдля обнаружения и представления ваших DBT моделей как активов Dagster. -
Определение заданий Dagster: Создайте задания Dagster, которые запускают ваши DBT активы. Вы можете использовать
dbt_assetsдля автоматического создания активов.Реклама -
Запуск заданий: Запустите задания Dagster через UI или CLI. Dagster будет управлять выполнением DBT моделей в правильном порядке, учитывая зависимости.
-
Мониторинг выполнения: Используйте UI Dagster для мониторинга выполнения заданий, просмотра логов и анализа ошибок.
Лучшие практики для работы с активами в DBT и Dagster
-
Используйте
dbt build: Вместо отдельных командdbt runиdbt test, используйтеdbt build, чтобы запустить пайплайн трансформации и тесты в одном шаге. -
Организуйте свой DBT проект: Следуйте стандартной структуре DBT проекта, чтобы упростить интеграцию с Dagster.
-
Используйте материализации: Выбирайте правильные материализации для ваших моделей, чтобы оптимизировать производительность.
-
Документируйте свои активы: Используйте DBT для документирования ваших моделей и источников. Dagster может использовать эту документацию для создания более понятного графа активов.
Расширенное управление активами и тестирование
Тестирование DBT Assets
DBT предоставляет мощные инструменты для тестирования данных. Вы можете определять тесты непосредственно в файлах моделей или в отдельных файлах тестов.
-- models/your_model.sql
SELECT
id,
value
FROM
source_table
WHERE
value IS NOT NULL
# models/your_model.yml
version: 2
models:
- name: your_model
columns:
- name: id
tests:
- unique
- not_null
- name: value
tests:
- not_null
Dagster автоматически запускает эти тесты при выполнении DBT активов. Вы можете использовать Dagster UI для просмотра результатов тестов.
Мониторинг и версионирование активов
Dagster предоставляет возможности мониторинга выполнения заданий и lineage активов. Вы можете отслеживать время выполнения, успешность и неудачи заданий. Dagster также позволяет отслеживать зависимости между активами, что упрощает отладку и анализ проблем.
Для версионирования активов можно использовать Git и другие системы контроля версий. Dagster также поддерживает интеграцию с системами мониторинга, такими как Prometheus и Grafana.
Заключение
Интеграция Dagster и DBT предоставляет мощную платформу для управления активами данных. Dagster обеспечивает надежную оркестрацию, мониторинг и тестирование, а DBT упрощает процесс трансформации данных. Следуя рекомендациям, представленным в этом руководстве, вы сможете эффективно использовать Dagster и DBT для построения надежных и масштабируемых пайплайнов данных.