HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: дата-инженер, dbt, data build tool, модели хранилища данных, dbt-проект</p>
1 <p>Теги: дата-инженер, dbt, data build tool, модели хранилища данных, dbt-проект</p>
2 <h2>1. Что такое Data Build Tool</h2>
2 <h2>1. Что такое Data Build Tool</h2>
3 <p>DBT - это многофункциональный фреймворк для создания модели Хранилища Данных. В акрониме ELT (Extract, Load, Transform) DBT занимает этап T. Это инструмент для работы с данными, которые уже загружены в ваше хранилище, но над ними нужно произвести ряд преобразований, чтобы подготовить к использованию.</p>
3 <p>DBT - это многофункциональный фреймворк для создания модели Хранилища Данных. В акрониме ELT (Extract, Load, Transform) DBT занимает этап T. Это инструмент для работы с данными, которые уже загружены в ваше хранилище, но над ними нужно произвести ряд преобразований, чтобы подготовить к использованию.</p>
4 <p>DBT позволяет максимально удобно и быстро описать необходимые трансформации и наполнить витрины данными. Почти всё, что от вас потребуется, - определить SELECT-запросами требуемые структуры данных. Всем остальным (выстраиванием цепочек зависимостей, физической материализацией, тестированием изменений) фреймворк займётся сам.</p>
4 <p>DBT позволяет максимально удобно и быстро описать необходимые трансформации и наполнить витрины данными. Почти всё, что от вас потребуется, - определить SELECT-запросами требуемые структуры данных. Всем остальным (выстраиванием цепочек зависимостей, физической материализацией, тестированием изменений) фреймворк займётся сам.</p>
5 <h2>2. Как использовать DBT</h2>
5 <h2>2. Как использовать DBT</h2>
6 <h3>Создать DBT-проект</h3>
6 <h3>Создать DBT-проект</h3>
7 <p>Проект DBT минимально состоит из директории с набором .sql и .yml файлов: ● модели: .sql-файл с select-выражением, описывающим либо готовую витрину, либо промежуточный шаг:</p>
7 <p>Проект DBT минимально состоит из директории с набором .sql и .yml файлов: ● модели: .sql-файл с select-выражением, описывающим либо готовую витрину, либо промежуточный шаг:</p>
8 <p>● конфигурация проекта: dbt_project.yml: - имя проекта; - профиль (например, DEV, TEST, PROD); - пути к файлам моделей; - конфигурации моделей.</p>
8 <p>● конфигурация проекта: dbt_project.yml: - имя проекта; - профиль (например, DEV, TEST, PROD); - пути к файлам моделей; - конфигурации моделей.</p>
9 <h3>Задать подключение к хранилищу</h3>
9 <h3>Задать подключение к хранилищу</h3>
10 <p>Есть возможность задать несколько профилей подключений, например, для разных сред.</p>
10 <p>Есть возможность задать несколько профилей подключений, например, для разных сред.</p>
11 <p>Также есть возможность использовать различные алгоритмы аутентификации: password-based, Private Key, SSO, oauth, IAM (AWS).</p>
11 <p>Также есть возможность использовать различные алгоритмы аутентификации: password-based, Private Key, SSO, oauth, IAM (AWS).</p>
12 <h3>Выполнять команды</h3>
12 <h3>Выполнять команды</h3>
13 <p>Есть возможность выполнять команды через CLI-интерфейс либо через DBT Cloud (веб-интерфейс).</p>
13 <p>Есть возможность выполнять команды через CLI-интерфейс либо через DBT Cloud (веб-интерфейс).</p>
14 <p>Примеры команд: ● debug: проверить конфигурации проекта и подключений; ● init: инициализировать новый проект; ● run: запустить расчет моделей; ● test: запустить тесты.</p>
14 <p>Примеры команд: ● debug: проверить конфигурации проекта и подключений; ● init: инициализировать новый проект; ● run: запустить расчет моделей; ● test: запустить тесты.</p>
15 <h2>3. Возможности DBT</h2>
15 <h2>3. Возможности DBT</h2>
16 <h3>Поддерживаемые СУБД</h3>
16 <h3>Поддерживаемые СУБД</h3>
17 <h3>Компилятор и планировщик заданий</h3>
17 <h3>Компилятор и планировщик заданий</h3>
18 <p>DBT компилирует код для каждой созданной модели, чтобы реализовать необходимые преобразования, выполнить материализацию модели (либо как table, либо как view), при этом возможен инкрементальный расчет витрины.</p>
18 <p>DBT компилирует код для каждой созданной модели, чтобы реализовать необходимые преобразования, выполнить материализацию модели (либо как table, либо как view), при этом возможен инкрементальный расчет витрины.</p>
19 <p>Каждое действие выполняется таким образом, чтобы при ошибке никакие данные не были потеряны.</p>
19 <p>Каждое действие выполняется таким образом, чтобы при ошибке никакие данные не были потеряны.</p>
20 <p>Если запрос на создание витрины выполняется успешно, новая таблица просто заменит старую, а старая будет удалена.</p>
20 <p>Если запрос на создание витрины выполняется успешно, новая таблица просто заменит старую, а старая будет удалена.</p>
21 <h3>Шаблоны Jinja</h3>
21 <h3>Шаблоны Jinja</h3>
22 <p>DBT позволяет использовать богатые возможности языка шаблонов Jinja: ● ссылки на другие модели (выстраивание цепочек зависимостей); ● управляющие конструкции: конструкции if, циклы for;</p>
22 <p>DBT позволяет использовать богатые возможности языка шаблонов Jinja: ● ссылки на другие модели (выстраивание цепочек зависимостей); ● управляющие конструкции: конструкции if, циклы for;</p>
23 <p>● использование переменных;</p>
23 <p>● использование переменных;</p>
24 <p>● изменение методов расчета моделей в зависимости от профиля конфигурации; ● переиспользуемые SQL-макросы.</p>
24 <p>● изменение методов расчета моделей в зависимости от профиля конфигурации; ● переиспользуемые SQL-макросы.</p>
25 <h3>Граф зависимостей (DAG)</h3>
25 <h3>Граф зависимостей (DAG)</h3>
26 <p>Ссылки на другие модели автоматически выстраивает ациклический направленный граф (DAG) зависимостей между моделями.</p>
26 <p>Ссылки на другие модели автоматически выстраивает ациклический направленный граф (DAG) зависимостей между моделями.</p>
27 <h2>4. Что еще можно делать с DBT</h2>
27 <h2>4. Что еще можно делать с DBT</h2>
28 <h3>Автоматическое тестирование</h3>
28 <h3>Автоматическое тестирование</h3>
29 <p>В DBT можно задать тесты для моделей и данных. Например, для использования в CI после доработок и добавления новых фичей.</p>
29 <p>В DBT можно задать тесты для моделей и данных. Например, для использования в CI после доработок и добавления новых фичей.</p>
30 <p>Доступны следующие виды тестов: ● Not null; ● Unique; ● Relationships; ● Accepted values.</p>
30 <p>Доступны следующие виды тестов: ● Not null; ● Unique; ● Relationships; ● Accepted values.</p>
31 <h3>Документация</h3>
31 <h3>Документация</h3>
32 <p>Хорошо задокументированный код - залог успеха. DBT позволяет оставлять комментарии к моделям и затем автоматически собирать их в формате Markdown или опубликовать на сайт с документацией.</p>
32 <p>Хорошо задокументированный код - залог успеха. DBT позволяет оставлять комментарии к моделям и затем автоматически собирать их в формате Markdown или опубликовать на сайт с документацией.</p>
33 <p>Узнать больше можно здесь: ●<a>https://github.com/fishtown-analytics/dbt</a>; ●<a>https://docs.getdbt.com/docs/introduction</a>; ●<a>https://blog.getdbt.com/what--exactly--is-dbt-/</a>; ●<a>https://tutorial.getdbt.com/tutorial/setting-up/</a>; ●<a>https://medium.com/the-telegraph-engineering/dbt-a-new-way-to-handle-data-transformation-at-the-telegraph-868ce3964eb4</a>; ●<a>https://odignite.wpengine.com/post/my-journey-introducing-the-data-build-tool-dbt-in-projects-analytical-stacks/</a>.</p>
33 <p>Узнать больше можно здесь: ●<a>https://github.com/fishtown-analytics/dbt</a>; ●<a>https://docs.getdbt.com/docs/introduction</a>; ●<a>https://blog.getdbt.com/what--exactly--is-dbt-/</a>; ●<a>https://tutorial.getdbt.com/tutorial/setting-up/</a>; ●<a>https://medium.com/the-telegraph-engineering/dbt-a-new-way-to-handle-data-transformation-at-the-telegraph-868ce3964eb4</a>; ●<a>https://odignite.wpengine.com/post/my-journey-introducing-the-data-build-tool-dbt-in-projects-analytical-stacks/</a>.</p>
34  
34