Архитектор Данных
1.12K subscribers
154 photos
9 videos
2 files
119 links
Алексей, архитектор данных из ВК.

Большие данные и облака.

Для связи @alexbelozersky
Download Telegram
Обзор DBT

#Инструменты #ETL #DBT

DBT - инструмент для трансформации данных, уже загруженных в хранилище данных.

Отлично подходит для создания и поддержания витрин данных. Также полезен при формировании детального слоя, особенно если мы не работаем в сложных архитектурах, таких как Anchor Modeling, Data Vault.

Какие задачи можно решать с помощью DBT в разных областях работы с данными.



Преобразования данных на основе SQL

Сделать CREATE TABLE … AS SELECT … (DBT Model)
Указать БД особенности физического хранения таблицы в БД. Партиционирование, Engine, sort_by для Clickhouse; distribute_by для Greenplum. (DBT CONFIG)
Создать инкрементальную Model и запускать CREATE TABLE или INSERT/MERGE при разных настройках запуска. (DBT materialize=incremental)
Добавить любое количество технических запросов до расчета Model, например SET param = value, запрос у БД ресурсов, настройки и хинты планировщика в рамках сессии (DBT pre-hook).
Добавить любое количество технических запросов после расчета Model, например GRANT, ANALYSE, OPTIMISE, заархивировать в S3 для Redshift, передать в PXF External Table для Greenplum (DBT post-hook)



Разработка моделей

🛠 Шаблонизировать запрос через jinja
🛠 Написать макрос и сделать модель как вызов макроса с параметрами. Полезно при обработке большого количества однотипных схем. Или разбора полей JSON с большим количеством параметров таким, как каталог событий приложения.


Тестирование данных

👍 Задавать тесты данных методом простого редактирования YAML (DBT Tests)
👍 Написать свой generic test и вызывать его через YAML
👍 Скачать библиотеку тестов и использовать более сложные тесты (dbt-utils)
Сохранять снепшоты данных (DBT Snapshot)
👍 Интегрироваться и отслеживать тесты данных с помощью Great Expectations.


Data Governance

🪧 Отслеживать зависимости моделей от источников и моделей друг от друга
🪧 Просматривать зависимости и тесты в DBT Docs
🪧 Документировать описание схем, таблиц, колонок, тестов через YAML
🪧 Размечать источники данных через YAML
🪧 Разметить потребителей данных через YAML. Например, дашборды (для этого дашборда нужны такие-то витрины) или ML модели.


Аналитика

📊 Сохранять запросы в Git и уметь отслеживать целостность витрин данных для него
📊 Легко создавать и тестировать свои витрины данных, просто сохраняя в Git запросы в файле
📊 Не сохранять огромные SQL запросы для целей дашбординга или доступа к типовым данным, а делать витрины для них


ETL

⚡️ Интегрироваться с AIrflow, Dagster, запускать заадчи с CLI
Запускать сложные комбинации взаимосвязанных задач. Запустить все что зависит от источника А. Обновить все необходимое для отчета/модели В, включая перерквизиты
Запустить (или протестировать) все модели из папки Х, кроме тега Y в не более чем 4 потока с учетом зависимостей источников и моделей друг от друга.
Сохранять справочники в репозитории и управлять ими прямо из Git (DBT Seed)


Разработка

🪲 Разрабатывать DWH-as-Code. Хранить и изменять всю информацию в Git.
🪲 Легко создавать и управлять Dev, Test окружениями. Разделять на уровне инсталляций БД, логическими БД, наборами схем.
🪲 Создать CI контур DWH для end-to-end тестов честного итогового результата в виде витрин на семплах данных.
🪲 Делать blue-green deployment (DBT Clone)


Команда

🕶 Создавать для каждой команды песочницу в виде набора схем.
😎Управлять песочницей команды с помощью одного Airflow DBT Operator (DBT Run + DBT Test) с учетом изменяющихся внутренних зависимостей.
👍4
Все гениальное просто.

#DBT
7👍2🔥2
Примеры DBT репозиториев

Интересный [DBT + Airflow + Clickhouse] репозиторий, застывший в миграции с кастомных ДАГов на DBT. Проект по оценке пользовательских аудиторий крипто-токенов и аналитики аудиторий крипто-проектов. В проекте я участвовал как консультант. Закрыт в 2023 году.
😞😞😞😞😞😞😞😞😞

https://github.com/superdao-inc/airflow-dags

Здесь можно найти остатки самописного SQL бойлерплейта и оценить, как переход на DBT сильно облегчает разработку. Также есть кликхаусификация DBT-моделей и несколько специфичных фишек, актуальных именно для Clickhouse. К примеру, вот такая моделька, в которой Clickhouse валится в огромном (3 TB) Group BY запросе, так как ему не хватает RAM. Решение - разбить запрос на чанки по адресам, каждый из которых меньше по размерам, чем весь массив эфириумных транзакций. В DBT модель встроен проброс массива первых букв кошельков, который формируется циклом в Airflow DAG. Или вот такой Generic Test, который проверяет, что в текстовом поле не абы что, а эфириумный адрес-хэш. Есть и макросы-шаблоны запросов, которые после применяются в нескольких моделях для разных эфириумных сеток.

Одним словом, рекомендую сделать dbt docs generate и походить по разным моделькам, макросам и тестам. Стартаперский творческий беспорядок прилагается.
🤪🤪🤪🤪🤪🤪🤪🤪🤪

Мой учебный репозиторий [DBT + Airflow + Greenplum]

https://github.com/alex-belozersky/dataplatform

Сейчас в процессе добавления в него интеграции DBT + Trino + Iceberg. Поставьте GitHub звезду, если интересно
😏😏😏😏😏😏😏😏😏

#DBT #GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
52👍2