Зачем инструмент dbt нужен аналитику

Логотип компании Ростелеком

Представляем подробный гайд по dbt — Data Build Tool — одному из лучших фреймворков для трансформации данных.

dbt — open-source инструмент, который решает проблему организации данных и открывает много возможностей для их трансформации и моделирования. В статье разберём функционал и характеристики фреймворка, а также опишем пошагово процесс его настройки и использования.

Что такое dbt: функционал и характеристики

dbt (Data Build Tool) — инструмент, который позволяет дата-инженерам и аналитикам автоматизировать процессы тестирования, внедрения, документирования в рамках трансформации данных. Проще говоря, dbt — это всё о букве T в акрониме ELT (Extract — Transform — Load). Этот фреймворк не выгружает данные из источников, но предоставляет огромные возможности по работе с теми данными, которые уже загружены в Хранилище (в Internal или External Storage).

dbt основан на языках SQL и Jinja, с версии 1.4.* также поддерживает Python.

Зачем инструмент dbt нужен аналитику 1

Основное назначение dbt — взять код, скомпилировать его в SQL, выполнить команды в правильной последовательности в хранилище.

Как можно использовать инструмент

Облачное решение:

● Веб-интерфейс

● Переменные окружения

● Планировщики, метаданные, IDE

● Интеграции с другими инструментами

Core:

● Открытый исходный код

● Работа через командную строку

Какие платформы поддерживает

Поддержка команды:

● AlloyDB

● Azure Synapse

● BigQuery

● Databricks

● Dremio

● Postgres

● Redshift

● Snowflake

● Spark

● Starburst & Trino

Поддержка сообщества:

● Athena

● Clickhouse

● IBM DB2

● Doris & SelectDB

● DuckDB

● и другие

Экосистема dbt

IDE инструменты:

● Visual Stusio Code

● deep channnel

● PopSQL

● Count

Paradime.io

Инструменты разработки:

● dbt Power User

● SQLFluff

● Better Jinja

● dbt-osmosis

● poentry

● pre-commit

Чем полезен фреймворк

dbt — довольно универсальный инструмент, но в большей степени он используется в аналитических сервисах в любых отраслях: анализ и обработка данных, сборка любой отчетности и так далее.

Контроль качества. Для бизнеса важно получать качественные данные, а для этого, в свою очередь, нужны инструменты контроля качества. dbt как инструмент позволяет реализовать любые вариации тестирования: на этапе обновления каких-либо данных мы всегда можем собрать быструю статистику по любым метрикам.

Хранение данных. Даже из «коробки» этот фреймворк позволяет реализовать на уровне хранилища хранение данных с историей СКД-2 (хранения технической истории, изменение атрибутов). С ним можно выстраивать снэпшоты — детальные слои с историей данных. dbt помогает собрать любую историю данных, чтобы отвечать на вопросы аналитиков и бизнеса.

Связывание данных в единую цепочку. Инструмент описывает ациклические зависимости (DAG) и связи, что позволяет легко анализировать цепочку преобразований данных. Когда мы используем и переиспользуем данные, выполнение этих задач связано: если что-то где-то меняется, то сказывается на других сущностях. С помощью dbt мы решаем задачу консистентности данных — устраиваем зависимость выполнения, чтобы одна сущность была рассчитана только после другой, без задержек и потери актуальности данных. Фреймворк помогает собрать в одном месте и связать всю логику — от исходных данных до итоговых результатов и их переиспользования.

Перенос в другие среды. Фреймворк позволяет легко переносить и настраивать разные подходы к работе моделей в различных средах: тестовые модели, продуктовый уровень, промышленный слой.

Настройка дополнительных возможностей. С dbt можно вписать документацию данных и работать с ними, можно настроить логирование стандартными способами и отслеживать аналитику исполнения запросов. Всё это реализуемо, поскольку у фреймворка на основе SQL и Jinja нет ограничений, кроме возможностей самих хранилищ и уровня знаний исполнителя.

Что нужно знать, чтобы использовать dbt

Для анализа самих моделей достаточно знать SQL и обзорную документацию по работе с dbt. И если дата-инженеры внедрили фреймворк со всеми функциями, то аналитику кроме знаний SQL и работы с браузером ничего не потребуется. Он легко сможет пользоваться сервисами dbt, анализировать цикличный граф зависимости и смотреть код преобразования.

До знакомства с фреймворком я никогда не работал с Jinja, языком шаблонов, который применяется в dbt для реализации настроек моделей, обработки дополнительной функциональности SQL-кода. Разобраться помогла обширная документация и хорошее комьюнити: есть, например, русскоязычный канал в Telegram.

Структура проекта dbt

Проект состоит из директорий и файлов двух типов:

● модель (.sql) — единица трансформации, выраженная SELECT-запросом;

● файл конфигурации (.yml) — параметры, настройки, тесты, документация.

На базовом уровне работа строится следующим образом:

● пользователь готовит код моделей в любой удобной IDE;

● с помощью CLI вызывается запуск моделей, dbt компилирует код моделей в SQL;

● скомпилированный SQL-код исполняется в Хранилище в заданной последовательности (граф).

Модели — это гибрид SQL + Jinja, которые ограничены лишь объёмом хранилища и уровнем знаний пользователя.

В dbt применяется Jinja версии два. Сам язык имеет очень большую функциональность, ознакомится с ним подробнее можно в этой статье.

Как работать с dbt: установка, настройка, использование

Устанавливаем фреймворк

dbt поддерживает 4 варианта установки:

Homebrew;

pip;

Docker;

source.

Рассмотрим установку подробнее на примере pip.

Установка

  1. Открываем терминал.
  2. Запускаем команды:
  3. pip install dbt-core #Установка
    последней версии;
  4. pip install dbt-core==1.4.0
    #Установка конкретной версии.
  5. dbt —version #Проверка установленной
    версии.
Зачем инструмент dbt нужен аналитику 2
Зачем инструмент dbt нужен аналитику 3

Для обновления можно использовать следующие команды:

● pip install —upgrade dbt-core #Установка последней версии;

● pip install —upgrade dbt-core==1.4.0 #Установка конкретной версии.

Установка пакетов платформ

Для работы с конкретными платформами необходимо установить пакет платформы, с которой вы планируете работать:

● pip install dbt-clickhouse #Установка последней версии

Проверка установленных пакетов

Выполняем команду dbt —version

Зачем инструмент dbt нужен аналитику 4
Результатом будет информация по версии установленной версии и доступном обновлении.

Настройка проекта

Для начала работы настроим окружение взаимодействия с dbt, установив VS Code. Обязательно проверяем наличие установленного Git и Python 3.

Для удобства работы с фреймворком стоит рассмотреть установки и настройки дополнительных расширений для VS Code:

● vscode-dbt;

● dbt Power User:

Настроим параметры VS Code для работы с dbt. Открываем settings.json по пути File-Preferences-Settings.

Зачем инструмент dbt нужен аналитику 5
Переходим в раздел Text Editor — Font и выбираем edit in settings.json.

Добавляем настройки ассоциации файлов:

			"files.associations": {

    "**/models/**/*.sql": "jinja-sql",

    "**/macros/**/*.sql": "jinja-sql",

    "**/snapshots/**/*.sql": "jinja-sql",

    "**/tests/**/*.sql": "jinja-sql",

    "**/target/**/*.sql": "sql",

    "**/**/*.yaml": "jinja-yaml",

    "**/*.yml": "jinja-yaml"

  }
		

Закрываем файл.

Инициализация проекта

1. Создаем каталог проекта. К примеру, dbt_example.

2. Открываем терминал и переходим в каталог:

Зачем инструмент dbt нужен аналитику 6

3. Инициализируем новый проект командой dbt init:

Зачем инструмент dbt нужен аналитику 7

4. Указываем название нашего проекта: если мы уже установили платформу для взаимодействия, нам предложат выбрать из списка, после чего проект будет создан:

Зачем инструмент dbt нужен аналитику 8

5. Типовая структура проекта:

Зачем инструмент dbt нужен аналитику 9

6. Проверяем состояние модели командой dbt debug:

Зачем инструмент dbt нужен аналитику 10

Готово — можем приступать к созданию модели.

О чем важно помнить при работе с dbt

● Основное — так как проект живой, нужно всегда следить за функциональностью, за обновлениями версий. Не всегда стоит использовать последнюю версию, но тестировать все изменения модели — важно.

● Помнить о том, что любая стандартизация и шаблонизация, с одной стороны, облегчает работу, а с другой — усложняет анализ. С помощью шаблонов мы можем любой SQL-код, который состоял из 3000 строк, сократить до условных 100, но нужно понять, как потом это всё прочитать.

● Поскольку инструмент гибкий и позволяет самостоятельно расширять функциональность, любые разработки придётся тестировать на работоспособность для каждой базы данных отдельно. В основном мы используем Postgres, Redshift, Spark, но также есть Greenplum, Clickhouse, MySQL, и синтаксис у всех отличается. Например, текущая версия адаптера для Clickhouse не поддерживает создание материализованных представлений.

● Расширение функциональности у dbt фактически безгранично, потому что ядро фреймворка сделано на Python. Если в команде есть разработчики Python, они смогут дописать любую функциональность.

Полезные ссылки и материалы

В любом случае, dbt — лишь инструмент в руках дата-инженеров, которые могут построить структуру хранения моделей на свое усмотрение. При правильном использовании этот инструмент может сильно оптимизировать работу с данными, а значит — повысить эффективность всего бизнеса.

Базы данных
Фреймворки
Анализ данных
Аналитика
2296