Что на самом деле делает dbt?
DBT, или инструмент построения данных, на сегодняшний момент является стандартным инструментом для преобразования, документирования и тестирования данных.
В этой статье я хочу объяснить Вам, что же это на самом деле такое и что именно он делает.
Немного предыстории
Прежде чем мы рассмотрим, что делает dbt, давайте попробуем разобраться в том, как конвейер данных создает централизованную модель данных в хранилище данных без dbt.
Построение централизованной модели данных означает, что все конечные пользователи получают информацию из одних и тех же данных, что гораздо лучше, чем специальные SQL-запросы, но все же есть и некоторый недостатки:
- Создатели изолированы от пользователей: люди, создающие конвейеры данных, находятся отдельно от пользователей, которые при обращении к этим самым «создателям» преследуют определенную бизнес-логику;
- Зависимости, задаваемые вручную: Вы должны указывать планировщику (например, Airflow), в каком порядке необходимо запускать Ваши SQL-модели;
- Тестирование - дело непростое: убедиться в уникальности первичных ключей или в том, что столбец содержит заданные значения, можно только вручную;
- Документировать непросто: документации по модели либо не существует, либо она создается в другом инструменте (и часто устаревает!).
Кроме того, SQL сам по себе имеет множество ограничений в плане функциональности, если сравнивать его, скажем, с Python.
Что такое dbt?
У dbt Labs есть 2 основных продукта:
- dbt Core: набор open source пакетов Python, запускаемых через командную строку, которые могут помочь Вам преобразовывать, документировать и тестировать Ваши данные;
- dbt Cloud: веб-интерфейс, позволяющий разрабатывать и развертывать конвейеры данных (построен на базе dbt Core).
Подробнее о различиях между этими двумя продуктами Вы можете прочитать здесь . Но знайте, что в основе обоих лежит фреймворк dbt.
Что делает dbt?
- Снижает технический барьер: любой, кто умеет писать на SQL, может создавать полноценные конвейеры данных, а это значит, что модели данных будут строить люди, владеющие бизнес-контекстом;
- Выявление зависимостей: если SQL-модель B запрашивает SQL-модель A, dbt знает, что нужно выполнить A -> B. Звучит достаточно просто, но это самое настоящее достижение!
- Упрощает документирование и тестирование: модели SQL сопряжены с файлами yml, что позволяет документировать и тестировать модели и столбцы на уровне модели.

Пример yml-файла, который будет использоваться в паре с dim_transactions.sql
- Привносит в SQL функциональность, подобную Python: dbt открывает возможности использования переменных, циклов, многократно используемых функций (макросов) и многого другого, чего нет в самом SQL.

Пример функционала, подобного Python




