Что такое dbt, чем полезен этот инструмент для анализа и инженерии данных, зачем переносить в него бизнес-логику обработки данных и представлять эти задачи в DAG-конвейере Apache AirFlow.
Python и SQL для анализа данных и дата-инженерии: versus или вместе?
Распил крупных монолитных систем на множество автономных взаимодействующих друг с другом приложений сегодня является ярким примером популярной микросервисной архитектуры ПО. Это предполагает не только разделение программного кода по доменам, но и влечет соответствующую декомпозицию данных. Однако, реализовать такую идею в Big Data проектах не так-то просто, поскольку комплексный анализ данных обычно требует их согласованности и нахождения в централизованном хранилище. Поэтому, подход дата-инженера к декомпозиции будет отличаться от традиционного подхода архитектора ПО. Впрочем, эти 2 роли пересекаются, когда речь заходит о координации взаимодействия микросервисов с использованием единого управляющего центра – оркестратора. Одним из таких оркестраторов, который отлично решает классические задачи управления распределенными заданиями и активно применяется в инженерии данных, является Apache AirFlow.
Это хорошо масштабируемая и надежная платформа оркестрации batch-процессов, позволяющая визуализировать цепочку задач конвейера обработки данных в виде направленного ациклического графа (DAG) и определить особенности их выполнения в виде Python-кода. Для выполнения задач AirFlow предоставляет множество готовых операторов и возможность разработать свой собственный оператор на языке Python. Поэтому AirFlow активно используется дата-инженерами для ETL и ELT-процессов. Однако, несмотря на распространенность языка Python в Data Science и инженерии данных, необходимость компетенций в области разработки ограничивают круг пользователей Apache AirFlow. В частности, большинство аналитиков и пользователей BI-систем чаще работают с SQL-запросами для анализа данных, а не с Python-скриптами.
Хотя большая часть бизнес-логики действительно может быть выражена с помощью SQL-запросов, в конвейере данных Apache AirFlow вокруг SQL требуется много Python-кода. Например, декларация DAG, соединения с базой данных, включая учетные данные, пулы соединений, реализация SQL-запросов через PythonOperator или операторы работы с базами данных, определение восходящих и нисходящих зависимостей DAG. Работать с этим кодом не так-то просто для аналитиков и BI-специалистов.
Рост интереса к DataOps-концепции, которая предполагает оперативное и безбарьерное предоставление актуальных и рабочих данных каждому участнику корпоративных процессов по требованию, влечет появление новых ролей. В частности, появляется роль дата-стюарта, который определяет требования и решает инциденты с качеством данных в рамках своего бизнес-подразделения, и инженера-аналитика, отвечающего за управление жизненным циклом конвейера данных. Но инженер-аналитик не всегда умеет проектировать распределенные архитектуры ИС и разрабатывать программный код. А управление жизненным циклом конвейера обработки данных предполагает в т.е. его разработку, что пока еще невозможно без программирования. Впрочем, обойти это ограничение можно с помощью low-code инструментов, а также SQL-клиентов, одним из которых является dbt (Data Build Tool). DBT обеспечивает общую основу для аналитиков и дата-инженеров, позволяя строить конвейеры преобразования данных со встроенной CI/CD-поддержкой и обеспечением качества. Хотя dbt не выгружает данные из источников, он позволяет работать с теми данными, которые уже загружены в хранилище, компилируя SQL-запросы в код. Так можно организовать различные задачи преобразования данных, чтобы запланировать их для запуска в автоматизированном и структурированном порядке. Пример такого практического использования мы рассматривали здесь.
Таким образом, dbt позволяет разгрузить AirFlow, оставив последнему роль оркестратора рабочих процессов, который будет гарантировать, что каждая задача ETL/ELT-конвейера выполняется в нужное время и в нужном порядке. А dbt возьмет на себя реализацию бизнес-логики обработки данных с помощью языка стандартных SQL-запросов, с которым знаком каждый аналитик. Как воплотить эту идею, рассмотрим далее. А в нашей новой статье вы узнаете, как использовать dbt с Apache Flink.
Код курса
DBT
Ближайшая дата курса
Продолжительность
ак.часов
Стоимость обучения
0 руб.
Оркестрация dbt-конвейеров обработки данных с Apache AirFlow
Итак, AirFlow и dbt позволяют всем участникам процессов создания, обработки и использования данных работать вместе, используя общий интерфейс. Но они не конфликтуют, а дополняют друг друга. AirFlow помогает организовывать ETL-задания, которые извлекают данные, загружают их в хранилище и управляют процессами машинного обучения. А dbt решают подмножество этих заданий, позволяя аналитикам преобразовывать данные, которые уже попали в хранилище, используя понятный им язык SQL-запросов.
С точки зрения DataOps-концепции также важно, что dbt поддерживает совместную работу над моделями данных, с проверкой их версий, а также тестирование и документирование запросов перед безопасным развертыванием их в рабочей среде. А непрерывный мониторинг позволяет снизить количество ошибок при изменении бизнес-логики обработки данных за счет своевременного оповещения об этом всех заинтересованных сторон.
По сути dbt можно рассматривать как библиотеку с открытым исходным кодом, которая помогает пользователям создавать взаимозависимые модели SQL для преобразования данных в хранилище. Аналитики и дата-инженеры могут использовать dbt для записи, организации и запуска преобразований необработанных данных в DWH без их копирования в другие места. Так можно избегать DML и DDL-запросов, сложного управления транзакциями и изменениями схемы данных. Реализовать нужную бизнес-логику в dbt можно, используя только SQL-оператор SELECT или Python-датафрейм, который возвращает требуемый набор данных, а dbt позаботится об их материализации.
Эффективность анализа данных возрастает за счет повторного использования SQL-запросов и моделей, на которые можно ссылаться в последующей работе, вместо предварительной обработки сырых данных в каждом проекте. Изменение моделей и запросов распространяется на все их зависимости. С точки зрения удобства сопровождения, dbt также упрощает анализ данных и инженерные задачи, позволяя использовать метаданные для поиска моделей, а также предоставляя возможность создавать макросы, хуки и управлять пакетами. В командной работе можно опубликовать каноническую версию конкретной модели данных, инкапсулирующую всю сложную бизнес-логику, чтобы совместно использовать ее без повторной реализации.
Возвращаясь к преимуществам совместного использования dbt с Apache AirFlow, отметим, что оркестратор позволяет организовать надежное и масштабируемое управление dbt-моделями, обеспечивая их запуск в нужном хронологическом порядке. Также AirFlow предоставляет детальный контроль над задачами dbt, представленными в виде DAG. Таким образом, применение AirFlow берет на себя роль зрелого средства оркестрации, тогда как сами задачи обработки данных выполняются в dbt. Такой подход позволяет использовать легковесный SQL-инструмент для low-code обработки данных и решает проблему управления конвейерами.
В заключение отметим, что здесь же можно реализовать непрерывную доставку и интеграцию (CI/CD), компилируя dbt-задачи при их фиксации в системе контроля версий. Это позволяет получить в целевой папке файл manifest.json, который содержит полное представление ресурсов dbt-проекта (модели, тесты, макросы и пр.), включая все конфигурации узлов и свойства ресурсов. Даже при запуске только некоторых моделей или тестов, все включенные ресурсы отображаются в манифесте с большинством их свойств. С помощью файла manifest.json можно получить зависимости dbt-моделей, прочитать файл в AirFlow, написать базовую структуру преобразования и вызвать соответствующие dbt-модели через BashOperator AirFlow. Таким образом, весь процесс разработки основан на dbt, но в полной мере позволяет использовать возможности AirFlow.
Как использовать возможности Apache AirFlow для дата-инженерии и аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники