Перевод Analytics Engineering with SQL and dbt. Глава 1

Инженерия аналитики (Analytics Engineering)

История аналитики включает важные этапы и технологии, которые сформировали эту область в том виде, какой мы знаем сегодня. Всё началось с появления концепции хранилищ данных в 1980-х годах, что стало основой для организации и анализа бизнес-данных. Компьютерный учёный Билл Инмон считается одним из первых, кто заложил теоретические основы для хранилищ данных в своих публикациях 1980–1990-х годов.

Следующий этап развития пришёлся на 1996 год, когда Ральф Кимболл опубликовал свою знаковую работу The Data Warehouse Toolkit. Эта книга заложила фундамент для dimensional modeling (размерного моделирования), которое стало важным шагом вперёд в эволюции аналитики.

Совокупный вклад Инмона и Кимболла в конце XX века оказал значительное влияние на формирование подходов к хранилищам данных и аналитике.

В начале 2000-х годов такие технологические гиганты, как Google и Amazon, столкнулись с необходимостью обработки огромных объёмов данных. Это привело к созданию Google File System и Apache Hadoop, открывших эпоху Big Data Engineering. В этот период специалисты использовали Hadoop для работы с большими данными.

Появление публичных облачных платформ, таких как Amazon Web Services (AWS), революционизировало разработку и развертывание программного обеспечения и приложений для работы с данными. Одним из первых предложений AWS стал Amazon Redshift, представленный в 2012 году. Этот инструмент сочетал технологии OLAP (онлайн-аналитической обработки) с традиционными базами данных. В ранние годы Redshift требовал ручного управления такими задачами, как очистка (vacuuming) и масштабирование, для поддержания производительности.

Со временем облачные технологии продолжили развиваться. Redshift, а также платформы, такие как Google BigQuery и Snowflake, упростили многие административные задачи, сохранив при этом свои основные преимущества. Это развитие подчёркивает непрерывные инновации в области облачной обработки данных.

Современный стек данных

Современный стек данных, включающий такие инструменты, как Apache Airflow, dbt и Looker, трансформировал рабочие процессы с данными. Эти изменения сделали термин «инженер больших данных» устаревшим, заменив его на более универсальную и широкую роль инженера данных (data engineer). Это изменение подчеркивалось в статье Максима Бошемена (Maxime Beauchemin), создателя Apache Superset и Apache Airflow, озаглавленной «The Rise of the Data Engineer». В статье он акцентировал внимание на возросшем значении инженеров данных в индустрии. Быстрое развитие инструментов изменило роли специалистов по данным: простые задачи стали стратегическими.

Сегодняшние инженеры данных выполняют разнообразные задачи, включая моделирование данных, обеспечение их качества, безопасность, управление данными, архитектурное проектирование и оркестрацию. Они всё чаще используют концепции и практики разработки ПО, такие как функциональная инженерия данных и декларативное программирование, для оптимизации своих рабочих процессов.

Основные языки для инженеров данных — это Python и SQL. Однако выбор языка программирования сильно зависит от задач и предпочтений проекта. Например, Java часто используется для работы с Apache Spark и Beam, Scala также популярна в этих экосистемах, а язык Go применяют в ряде других случаев. В крупных организациях нередко комбинируют Java и SQL для достижения оптимальных результатов.

Тенденции в индустрии

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

Цели главы

В этой главе мы познакомимся с инженерией аналитики и её ролью в процессе принятия решений на основе данных.

Мы обсудим:

  • значимость инженерии аналитики в современном мире;
  • основные роли аналитического инженера;
  • жизненный цикл аналитической инженерии, который помогает управлять аналитическим процессом, обеспечивать качество и точность данных и генерируемых инсайтов.

Кроме того, мы изучим текущие тенденции и технологии, формирующие эту область, включая такие концепции, как data mesh. Также рассмотрим основные подходы к обработке данных: ELT (извлечение, загрузка, трансформация) и ETL (извлечение, трансформация, загрузка), а также используемые по всему миру методы моделирования данных.

Базы данных и их влияние на аналитику

В последние годы данные всё больше становятся ключевым активом компаний, стремящихся опережать конкурентов, улучшать внутренние процессы или лучше понимать своих клиентов. Однако с появлением новых инструментов, подходов и областей знаний, таких как Data Science и BI, стало сложнее охватить и понять весь ландшафт данных.

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

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

Роль баз данных

Усложнение бизнес-процессов привело к необходимости более сложных решений для принятия решений на основе данных. Одним из первых таких решений стала революция баз данных.

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

Базы данных играют ключевую роль в аналитике, поскольку позволяют эффективно хранить, организовывать и извлекать большие объёмы данных. Это даёт возможность аналитикам легко получать доступ к необходимым данным для выполнения сложных анализов. Кроме того, базы данных можно настраивать для обеспечения целостности данных, что гарантирует их точность и консистентность, делая анализ надёжным и достоверным.

Хранилища данных и аналитика

Одним из самых распространённых способов использования баз данных в аналитике является методика хранилищ данных.

Хранилище данных — это централизованное хранилище, предназначенное для упрощения работы с данными. Данные поступают в хранилище из различных источников: транзакционных систем, внешних потоков данных и других баз данных. После этого данные очищаются, трансформируются и интегрируются в единую согласованную модель. Как правило, такая модель строится с использованием методик размерного моделирования, таких как звёздная схема или Data Vault.

Ещё одной важной областью использования баз данных является дата-майнинг. Дата-майнинг применяет статистические и машинные методы для выявления закономерностей и взаимосвязей в больших наборах данных. Это позволяет идентифицировать тренды, предсказывать поведение и выполнять другие прогнозы.

Технологии и языки для работы с базами данных

Технологии баз данных и языки программирования, такие как SQL, Python и Scala, сыграли значительную роль в развитии Data Science. Они позволяют эффективно взаимодействовать с базами данных, выполнять сложные запросы и манипуляции с данными.

Инструменты для визуализации данных, такие как Tableau и Microsoft Power BI, которые легко интегрируются с базами данных, делают выводы аналитиков доступными и интуитивно понятными.

С развитием больших данных и ростом потребности в обработке огромных объёмов информации появились новые технологии баз данных, адаптированные к разнообразным задачам. Например, хранилища данных используются для агрегирования данных, дата-майнинг — для поиска скрытых закономерностей, а интеграция с BI-решениями позволяет анализировать данные в реальном времени.

Переход к аналитической инженерии

Однако подключение BI-инструментов напрямую к транзакционным базам данных (OLTP-репликам) имеет свои ограничения. Такой подход подходит для небольших наборов данных и простых запросов. Но с увеличением объёмов данных и усложнением аналитики возникают проблемы производительности и низкая скорость выполнения запросов.

Аналитическая инженерия решает эти проблемы. Аналитические инженеры оптимизируют потоки данных, трансформируют и агрегируют их для обеспечения готовности к аналитическим задачам. Они проектируют и поддерживают ETL-пайплайны, которые перемещают данные из различных источников в оптимизированные хранилища или озёра данных. Это позволяет организациям преодолеть ограничения OLTP-баз, обеспечивая быструю и эффективную аналитику с помощью инструментов, таких как Tableau.

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

Облачные вычисления и их влияние на аналитическую инженерию

За последние десятилетия мир столкнулся с рядом сложных вызовов, имеющих значительные технические последствия. Экономические спады стимулировали инновации в области финансовых технологий и систем управления рисками. Геополитическая напряжённость потребовала развития технологий кибербезопасности для защиты критической инфраструктуры и конфиденциальных данных. Глобальные кризисы в здравоохранении подчеркнули важность продвинутой аналитики данных и прогнозного моделирования для мониторинга и управления распространением заболеваний. Помимо этого, необходимость борьбы с изменением климата способствовала разработке передовых технологий возобновляемой энергии и устойчивых инженерных решений для достижения климатических целей.

На фоне этих вызовов стремление к прибыли и росту остаётся ключевым драйвером для компаний по всему миру. Однако ценность человеческого рабочего времени приобрела новое значение, что привело к значительным изменениям в способах ведения бизнеса и к тому, как облачные технологии подстраиваются под эти изменения. Эти изменения проявляются в увеличении внедрения управляемых и серверлесс-решений, которые снижают зависимость от постоянного штатного персонала, такого как администраторы баз данных.

Приспосабливаясь к этой меняющейся обстановке, компании всё больше акцентируют внимание на инновациях, дифференциации и устойчивости бизнес-моделей и стратегий. Для компаний, стремящихся к успеху в стремительно меняющемся мире, информационные технологии и системы предоставили отличные возможности для роста своих возможностей, помогая организациям преодолевать этот мир неопределённости и давления. Оптимизация операционных моделей стала срочной задачей, требующей пересмотра центров обработки данных и структуры ценообразования. Кроме того, предложения продуктов и услуг должны быть нацелены, в первую очередь, на простоту использования, снижение задержек, повышение безопасности, расширение диапазона инструментов в реальном времени, увеличение интеграции, повышение интеллектуальности, снижение необходимости написания кода и сокращение сроков выхода на рынок.

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

В отрасли практика создания, визуализации и анализа взаимосвязанных бизнес-данных в доступном формате обычно называется аналитикой данных. Исторически она также была известна как бизнес-аналитика (BI), и эти два термина тесно связаны. Хотя BI является подмножеством аналитики и ориентирована на принятие бизнес-решений, аналитика данных охватывает более широкий спектр, включая продуктовую аналитику, операционную аналитику и несколько других специализированных областей. Как BI, так и аналитика данных играют ключевую роль в предоставлении организациям конкурентных преимуществ за счёт анализа данных.

Несмотря на многочисленные преимущества аналитики данных для улучшения и перестройки бизнес-стратегий и мониторинга эффективности, её использование требует значительных финансовых вложений в серверы, лицензии на программное обеспечение и специализированный персонал, такой как инженеры данных, специалисты по анализу данных и визуализации. В условиях экономического кризиса высокие начальные и эксплуатационные затраты на ИТ-оборудование, программное обеспечение и специалистов могут восприниматься как непрактичные и малопривлекательные.

В результате решения на собственных серверах (on-premises), где инфраструктура для аналитики данных создаётся и управляется на территории компании, часто теряют свою привлекательность. Это особенно актуально для новичков в области аналитики, которые плохо знакомы с этим понятием. Как правило, on-premises решения требуют значительных вложений в оборудование, программное обеспечение и постоянное обслуживание. Они также менее гибкие и масштабируемые по сравнению с облачными решениями для аналитики данных.

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

Увеличивающееся распространение облачных вычислений в различных отраслях привело к тому, что такие компании, как Microsoft, Google и Amazon, разработали продвинутые инструменты для анализа данных и организации хранилищ данных. Эти инструменты созданы для работы в рамках парадигмы облачных вычислений и используют общие сетевые ресурсы для обеспечения более широкого доступа и упрощённого развертывания. Ярким примером этой тенденции является всеобъемлющая платформа аналитики данных от Microsoft — Microsoft Fabric.

Параллельно с этим dbt от компании dbt Labs, о котором подробно говорится далее в книге, выделяется как универсальный гибридный продукт. dbt, как и Hadoop, является решением с открытым исходным кодом, которое предоставляет пользователям возможность гибкого развертывания в соответствии с их конкретными потребностями — как в облаке, так и на локальной инфраструктуре. В своей облачной версии dbt легко интегрируется с ведущими облачными платформами, включая Microsoft Azure, Google Cloud Platform (GCP) и AWS. Благодаря своей открытости этот инструмент позволяет организациям настраивать развертывание в зависимости от уникальных требований и предпочтений инфраструктуры.

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

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

Однако, хотя облачные технологии приносят множество преимуществ, таких как экономия за счёт масштаба и гибкость, они также создают проблемы, связанные с информационной безопасностью. Концентрация данных в облачной инфраструктуре делает её привлекательной целью для несанкционированных атак. Чтобы добиться успеха в использовании облачных технологий в контексте данных, организации должны понимать и минимизировать риски, связанные с облачными вычислениями. Ключевые риски включают вопросы конфиденциальности данных, потерю контроля, неполное или ненадёжное удаление данных, несанкционированный внутренний доступ, доступность данных и сложность расчёта затрат.

Конфиденциальность данных вызывает серьёзное беспокойство, поскольку сложно проверить, обрабатывают ли поставщики данные в соответствии с законами и стандартами, даже несмотря на то, что публичные отчёты аудита поставщиков могут помочь укрепить доверие. В неинтегрированных сценариях риски для безопасности данных возрастают по мере их передачи между различными системами и центрами обработки данных, увеличивая вероятность перехвата и рассинхронизации. Ещё один важный риск — зависимость от поставщика, которая возникает, когда ответственность за управление данными полностью возлагается на одного поставщика услуг, что ограничивает возможность миграции к другим решениям. Такая зависимость в конечном итоге снижает контроль организации над принятием решений и управление данными.

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

Если все риски будут правильно учтены и смягчены в рамках соответствующей стратегии управления данными, включающей облачную стратегию, технологии, процессы, персонал и правила, организация может получить существенное конкурентное преимущество по сравнению с той, у которой такой стратегии нет.

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

Интересно, что связь между облачной платформой данных, аналитикой и ИИ является симбиотической. Внедрение облачной платформы данных ускоряет переход к архитектуре, ориентированной на аналитику, и позволяет полностью реализовать инициативы в области ИИ. Это даёт организациям возможность использовать все релевантные данные, получать инсайты на уровне всей компании и открывать новые бизнес-возможности. Устраняя необходимость управления множеством инструментов, организации могут сосредоточиться на модернизации данных, ускорении обнаружения инсайтов и использовании существующих технологических партнёрств, что способствует их продвижению в сфере ИИ.

Поэтому можно справедливо сказать, что облачные вычисления стали ключевым компонентом как современных платформ данных, так и облачных платформ для аналитики и ИИ, которые ежедневно увеличиваются в объёме, способствуя изменению отрасли.

Цикл аналитики данных

Цикл аналитики данных представляет собой последовательность шагов, направленных на преобразование необработанных данных в ценные и удобные для восприятия данные-продукты. Эти продукты могут включать в себя хорошо организованные наборы данных, панели мониторинга, отчёты, API или даже веб-приложения. Иными словами, этот цикл описывает, как данные создаются, собираются, обрабатываются, используются и анализируются для достижения определённой цели или бизнес-результата.

Увеличивающаяся сложность организационных процессов напрямую влияет на то, как обрабатываются данные. Множество сотрудников могут использовать одни и те же данные, но с различными целями. Например, топ-менеджеру может быть достаточно нескольких ключевых показателей для отслеживания эффективности бизнеса, в то время как руководителю среднего звена могут потребоваться более детализированные отчёты для поддержки ежедневных решений.

Это подчёркивает необходимость в управляемом и стандартизированном подходе к созданию и поддержанию данных-продуктов на основе общей базы данных. Учитывая большое количество решений, которые организация должна принимать в отношении управления данными, технологий и процессов, следование структурированному подходу является ключевым для документирования и регулярного обновления стратегии управления данными.

Таким образом, цикл аналитики данных — это важная структура для понимания и описания этапов и процессов, связанных с созданием и поддержанием аналитических решений (рисунок 1-1). Этот концепт является фундаментальным в области науки о данных и аналитики, предоставляя структурированный подход к управлению различными задачами и действиями, необходимыми для создания эффективного аналитического решения.

Рисунок 1-1. Цикл аналитики данных

Цикл аналитики данных обычно включает следующие этапы

Определение проблемы

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

Моделирование данных

После определения бизнес-требований и оценки источников данных можно приступать к моделированию данных, выбирая метод, который лучше всего соответствует вашим потребностям. Это может быть модель «алмазной стратегии» (Strategy Diamond Model), звёздная схема, Data Vault или даже полностью денормализованный подход. Все эти концепции будут обсуждаться в главе 2.

Поглощение и трансформация данных

Следующий этап включает в себя загрузку и подготовку данных из исходных систем, чтобы они соответствовали созданным моделям.

В зависимости от общей информационной архитектуры можно выбрать одну из стратегий:

  • Schema-on-write — усилия сосредоточены на преобразовании необработанных данных непосредственно в соответствующие модели.
  • Schema-on-read — данные загружаются и хранятся с минимальными преобразованиями, а основные трансформации выполняются на последующих уровнях платформы данных.

Хранение и структурирование данных

После проектирования (а возможно, и реализации) конвейеров данных необходимо выбрать форматы файлов и стратегии хранения. Это может быть простой формат, такой как Apache Parquet, или более продвинутые варианты, например Delta Lake или Apache Iceberg.

Также нужно решить, какие компоненты хранения использовать:

  • Объектные хранилища в облаке, такие как Amazon Simple Storage Service (S3).
  • Платформы, напоминающие хранилища данных, например Redshift, BigQuery или Snowflake.

Визуализация и анализ данных

Когда данные становятся доступными, следующим шагом будет их исследование, визуализация или создание панелей мониторинга, которые напрямую поддерживают процесс принятия решений или мониторинг бизнес-процессов. Этот этап имеет выраженную бизнес-ориентацию и требует тесного взаимодействия с заинтересованными сторонами.

Мониторинг качества данных, тестирование и документация

Хотя мониторинг качества данных иллюстрируется как завершающий этап цикла аналитики, на самом деле он должен быть сквозной задачей, реализуемой на всех этапах.

Включает в себя:

  • Внедрение механизмов контроля качества, чтобы заинтересованные стороны могли доверять предоставляемым моделям данных.
  • Документирование всех преобразований и их семантических значений.
  • Гарантирование корректного тестирования на всех этапах передачи данных по конвейерам.

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

Цикл аналитики данных — это ключевая концепция, которая позволяет организациям структурированно и последовательно подходить к процессам инженерии, анализа и науки о данных.

Следуя структурированному процессу, организации могут быть уверены, что они:

  • Решают правильную задачу.
  • Используют подходящие данные.
  • Создают точные и надёжные продукты на основе данных.

В конечном счёте это приводит к улучшению процесса принятия решений и достижению лучших бизнес-результатов.

Новая роль инженера аналитики

Как упоминалось ранее, ученые данных и аналитики теперь могут легко получать доступ к данным, необходимым для проведения сложных анализов и получения инсайтов, которые ранее были бы сложными или даже невозможными. Однако по мере роста объема данных, которые хранятся и анализируются, становится все важнее наличие в организациях специалистов, которые помогают управлять этими данными и обеспечивать необходимую инфраструктуру.

Недавно появившаяся категория специалистов, называемых инженерами аналитики (analytics engineers), играет ключевую роль в разработке и поддержании баз данных и конвейеров данных, что позволяет ученым данных и аналитикам сосредотачиваться на более сложных задачах. Инженеры аналитики отвечают за проектирование, создание и обслуживание архитектуры данных, которая помогает организациям превращать данные в ценные инсайты и принимать решения, основанные на данных.

Кроме того, переход от традиционных процессов ETL (Extract, Transform, Load) с жестко заданными схемами записи (schema-on-write) к процессу ELT (Extract, Load, Transform) с гибкими схемами чтения (schema-on-read) привел к тому, что данные теперь попадают в хранилища до их преобразования. Это создает возможности для аналитиков с глубокими техническими навыками, которые хорошо понимают бизнес и обладают способностями моделировать необработанные данные в чистые и четко определенные наборы данных — для инженеров аналитики.

Если бы такая комбинация навыков была востребована в эпоху традиционных хранилищ данных и ETL, она потребовала бы специалистов, одновременно обладающих знаниями в области программной инженерии и аналитики данных — таких найти было бы гораздо сложнее.

Роль инженера аналитики

Инженер аналитики играет роль моста между инженерами платформ данных, которые создают техническую инфраструктуру, и аналитиками данных, которые преобразуют данные в полезные продукты.

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

Эти специалисты обладают достаточной технической подготовкой, чтобы применять лучшие практики разработки программного обеспечения, такие как контроль версий и непрерывная интеграция/непрерывное развертывание (CI/CD). Однако они также должны уметь эффективно общаться с заинтересованными сторонами.

Аналогия с гражданским строительством

Инженеры платформ данных — это основа аналитического проекта. Они обеспечивают, чтобы инфраструктура была надежной, включая «системы водоснабжения, электроснабжения и фундамент». Они создают основу для всего последующего.

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

Аналитики данных — это дизайнеры интерьера. Они работают внутри уже построенных зданий, адаптируя их содержимое к потребностям пользователей, делая данные удобными и понятными для конечных потребителей.

Вместе эти роли работают над созданием целостной и функциональной аналитической среды.

Инженеры аналитики в жизненном цикле аналитики данных

Глядя на жизненный цикл аналитики данных, инженеры платформ данных создают платформы и загружают необработанные данные в корпоративные хранилища. С другой стороны, инженеры аналитики берут эти необработанные данные и преобразуют их так, чтобы они соответствовали аналитическим моделям данных, необходимым для поддержки принятия бизнес-решений.

Обязанности инженера аналитики

Роль инженера аналитики становится все более значимой с ростом объема и сложности данных, а также их разнообразного применения. Это включает проектирование и реализацию систем хранения и извлечения данных, создание и поддержку конвейеров данных, разработку и развертывание моделей машинного обучения. В этом динамичном контексте инженеры аналитики играют ключевую роль в использовании растущих объемов данных и максимизации их ценности для множества приложений.

С учетом современных тенденций основными обязанностями инженеров аналитики являются:

  • Проектирование и внедрение эффективных систем хранения и извлечения данных. Это предполагает работу с базами данных и технологиями хранения данных для создания моделей данных и структур, способных справляться с большими и сложными наборами данных.
  • Создание и поддержка конвейеров данных. Они извлекают данные из различных источников, трансформируют их и загружают в центральное хранилище для анализа.

Для многих инженеров аналитики развитие и использование моделей машинного обучения менее заметны, но все же имеют место. Это включает взаимодействие с учеными данных для понимания их требований, выбор и внедрение соответствующих алгоритмов, а также обеспечение правильной подготовки и развертывания моделей с использованием подходящих обучающих и тестовых данных. Если инженеры аналитики напрямую не занимаются машинным обучением, они активно участвуют в создании конвейеров данных, которые снабжают ученых данными для обучения и тестирования.

Ответственность в области производительности

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

Навыки и инструменты

Инженеры аналитики, как правило, владеют языками программирования и инструментами, такими как Python, R, SQL, и Spark, чтобы реализовывать конвейеры данных, модели данных и модели машинного обучения. Они также должны разбираться в облачных платформах, таких как AWS, GCP или Azure, для развертывания и масштабирования своих решений.

Основные обязанности инженера аналитики:

  • Разрабатывать и внедрять системы хранения и извлечения данных, включая базы данных и хранилища, способные работать с большими и сложными наборами данных.
  • Создавать и поддерживать конвейеры данных для извлечения, трансформации и загрузки данных из различных источников в центральное хранилище.
  • Обеспечивать точность, полноту, согласованность и доступность данных посредством проверки качества данных, отслеживания их потоков и реализации мер безопасности.
  • Использовать облачные платформы, такие как AWS, GCP, или Azure, для развертывания аналитических решений, оптимизации их масштабируемости, безопасности и стоимости.
  • Оптимизировать производительность систем хранения и извлечения данных, конвейеров данных и моделей машинного обучения для обработки сложных объемов данных.
  • Работать с учеными данных, чтобы понять их требования, выбирать и внедрять подходящие алгоритмы, а также следить за обучением и развертыванием моделей машинного обучения.
  • Мониторить производительность моделей машинного обучения, устранять проблемы и оптимизировать их при необходимости.
  • Следить за новыми технологиями и тенденциями в области инженерии данных, машинного обучения и аналитики.

Навыки и роль аналитического инженера

Работа инженера аналитики требует сочетания технических навыков, навыков решения задач и понимания бизнес-потребностей. Эти специалисты должны уверенно ориентироваться как в технических, так и в бизнес-аспектах анализа данных и уметь быть связующим звеном между учеными данных и ИТ-отделом.

Обеспечение аналитики в Data Mesh

Data Mesh — это современный подход к разработке стратегии работы с данными в организации. Он позволяет бизнес-командам самостоятельно управлять данными и предоставлять доступ к ним через соответствующие сервисы, вместо того чтобы полностью полагаться на центральную команду работы с данными. Этот подход разбивает монолитную архитектуру данных на набор независимых, автономных сервисов. Это обеспечивает масштабируемость, автономность и лучшее управление данными, а также большую гибкость в обработке различных типов данных. Data Mesh способствует культуре экспериментов, инноваций и сотрудничества, что позволяет предприятиям быстрее адаптироваться к изменениям бизнес-требований.

Преимущества Data Mesh

Data Mesh как архитектурный паттерн кардинально изменил взаимодействие аналитиков с инфраструктурой данных. Разделение монолитной архитектуры данных на независимые автономные сервисы позволяет командам решать проблемы масштабирования и управления более эффективно.

Масштабируемость и автономия. Разделение инфраструктуры на независимые части снижает риск дублирования данных и появления «смычек». Команды могут использовать инструменты и технологии, которые лучше подходят для их задач, оставаясь в рамках общих сервисов для управления жизненным циклом данных.

Управление разными типами данных. Data Mesh позволяет эффективно работать со структурированными, полуструктурированными и неструктурированными данными.

Улучшенное управление данными. Разделение архитектуры упрощает управление, повышая прозрачность и безопасность.

Роль инженера аналитики в Data Mesh

Инженеры аналитики играют ключевую роль в организации Data Mesh, сосредотачиваясь на создании и поддержке независимых, автономных сервисов данных. Эти сервисы должны быть хорошо документированы, управляемы и безопасны, чтобы обеспечивать простой доступ и использование данных.

Основные задачи инженера аналитики в Data Mesh:

  • Разработка систем управления данными, включая модели данных, обеспечивающие легкость их поиска и использования.
  • Реализация политик управления данными и обеспечение их соблюдения, включая контроль доступа, проверку качества данных и соблюдение нормативных требований.
  • Взаимодействие с владельцами данных и заинтересованными сторонами для управления данными в рамках регуляторных норм.
  • Применение распределенного подхода к данным, вместо центрального управления, позволяя командам более гибко использовать данные.

Продукты данных

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

Продукты данных должны обеспечивать доступность и повторное использование данных через API или другие методы.

Некоторые примеры продуктов данных включают:

  • REST API, позволяющий пользователям запрашивать определённую бизнес-модель данных.
  • Конвейер данных, который загружает и обрабатывает данные из различных источников.
  • Озеро данных, которое хранит и управляет большими объёмами структурированных и неструктурированных данных.
  • Инструмент визуализации данных, помогающий пользователям понимать и передавать аналитическую информацию.

Продукты данных также могут состоять из микросервисов. Это небольшие, независимые и узкоспециализированные сервисы, которые можно разрабатывать, развёртывать и масштабировать отдельно. К ним можно получить доступ через API, и они могут повторно использоваться в масштабе всей организации.

dbt как инструмент для реализации Data Mesh

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

Функциональные возможности dbt, поддерживающие создание Data Mesh:

Моделирование данных

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

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

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

Документирование данных

dbt позволяет документировать модели данных и сервисы, чтобы другие команды и приложения могли легко их понимать и использовать.

Отслеживание данных

Возможности отслеживания данных позволяют командам отслеживать происхождение моделей данных. Это упрощает понимание использования данных и их источников.

Управление данными

Функционал управления данными позволяет внедрять политики управления данными, такие как контроль доступа, отслеживание lineage и проверка качества данных, что помогает обеспечить безопасность и высокое качество данных.

Хотя основное внимание в аналитической инженерии уделяется проектированию и реализации моделей данных, важно отметить, что возможности отслеживания данных и управления ими могут значительно повысить эффективность аналитических процессов. Эти возможности особенно полезны в случаях, когда модели данных должны отслеживать происхождение данных и соответствовать строгим политикам управления данными. Применение таких практик и моделей управления, включая подход Data Mesh, может варьироваться в зависимости от специфических потребностей и сложности среды данных. Многие успешные внедрения dbt начинаются с более простых моделей данных на основе схемы одной звезды и со временем могут перейти к изучению более сложных концепций, таких как Data Mesh, по мере роста потребностей в данных.

Суть аналитической инженерии

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

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

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

dbt — это «гемба» для аналитиков и заинтересованных сторон бизнеса.

Ценность для бизнеса и заинтересованных сторон возникает, когда данные преобразованы и представлены в удобной для использования форме.

Гемба — это японский термин, означающий «реальное место». В корпоративном мире гемба относится к месту, где создаётся ценность.

В стратегии ETL преобразование данных обычно выполняется до загрузки данных в целевую систему, такую как хранилище данных или озеро данных. Данные извлекаются из различных источников, преобразуются для соответствия структуре и формату целевой системы, а затем загружаются в неё. Этот процесс обеспечивает согласованность и пригодность данных для использования в системах и приложениях.

Напротив, стратегия ELT представляет собой более современный и гибкий подход к обработке данных. В этой стратегии данные сначала извлекаются и загружаются в целевую систему, а затем подвергаются преобразованию. ELT предоставляет несколько преимуществ, включая повышенную гибкость и возможность поддержки более широкого спектра приложений, чем традиционная парадигма ETL. Одним из значительных преимуществ является его универсальность в проведении различных преобразований данных и предоставлении оперативных инсайтов непосредственно в целевой системе.

Эта гибкость позволяет организациям быстрее получать действенные инсайты из своих данных и адаптироваться к изменяющимся аналитическим потребностям.

Тем не менее, важно признать, что ELT может сопровождаться более высокими затратами на хранение и загрузку данных, поскольку сохраняются необработанные или минимально преобразованные данные. Многие компании считают эти затраты оправданными из-за значительной ценности, в частности, гибкости, которую это приносит их операциям. Поэтому ELT приобретает всё большую популярность, особенно с появлением облачных решений для хранения данных и улучшенными возможностями для преобразования и обработки данных, которые они предоставляют.

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

Устаревшие процессы

Традиционно устаревшие процессы ETL (Extract, Transform, Load) были сложными, трудоёмкими и требовали специализированных навыков для разработки, внедрения и сопровождения. Они также обычно включали значительное количество ручного кодирования и манипуляций с данными, что делало их склонными к ошибкам и сложными для масштабирования.

Кроме того, такие процессы часто были негибкими и не могли адаптироваться к изменяющимся потребностям бизнеса или новым источникам данных. С ростом объёма, разнообразия и скорости данных устаревшие процессы ETL становятся всё менее эффективными и, как следствие, заменяются более современными и гибкими подходами, такими как ELT (Extract, Load, Transform).

Ранее процессы ETL обычно выполнялись с использованием пользовательских скриптов или специализированных ETL-инструментов с визуальным интерфейсом. Эти скрипты или инструменты извлекали данные из различных источников, таких как текстовые файлы или базы данных, выполняли необходимые преобразования данных, а затем загружали данные в целевую систему, например, хранилище данных.

Примером устаревшего процесса ETL может быть использование комбинации SQL-скриптов и языков программирования, таких как Java или C#, для извлечения данных из реляционной базы данных, преобразования данных с помощью программного языка и последующей загрузки преобразованных данных в хранилище данных. Другим примером является использование специализированных ETL-инструментов, таких как Oracle Data Integrator или IBM InfoSphere DataStage, для извлечения, преобразования и загрузки данных между системами. Эти устаревшие процессы ETL часто бывают сложными, трудными для сопровождения и масштабирования, и обычно требуют наличия выделенной команды разработчиков.

Использование SQL и хранимых процедур для ETL/ELT

Ранее в некоторых платформах данных для выполнения ETL использовались хранимые процедуры в системах управления реляционными базами данных (RDBMS), таких как SQL Server или Oracle.

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

Предположим, нужно создать простую хранимую процедуру для извлечения данных из одной таблицы, их преобразования и загрузки в другую таблицу, как показано в примере 1-1.

Пример 1-1. SQL-процедура для извлечения данных

Эта хранимая процедура сначала использует оператор SELECT INTO для извлечения всех данных из исходной таблицы и сохранения их во временной таблице (#temp_table). Затем с помощью оператора UPDATE она изменяет значения в колонке column1, преобразуя их в верхний регистр, и удваивает значения в колонке column2. В заключение процедура использует оператор INSERT INTO для загрузки данных из #temp_table в target_table.

Не переживайте, если вы не знакомы с синтаксисом SQL. Глава 3 полностью посвящена основам работы с ним.

Важно отметить, что это очень простой пример, и реальные процессы ETL часто гораздо сложнее и включают множество дополнительных шагов, таких как проверка данных, обработка пустых значений и ошибок, а также логирование результатов процесса.

Хотя использование хранимых процедур для выполнения ETL возможно, следует учитывать, что это может иметь некоторые последствия, такие как необходимость в специализированных знаниях и опыте для написания и сопровождения этих процедур, а также отсутствие гибкости и масштабируемости. Кроме того, использование хранимых процедур для ETL может затруднить интеграцию с другими системами и технологиями, а также решение возникающих в процессе ETL проблем.

Использование ETL-инструментов

Как упоминалось ранее, ETL-инструменты — это программные приложения, которые ускоряют процесс создания конвейеров для загрузки и преобразования данных, предоставляя визуальный интерфейс, набор инструментов разработки (SDK) или программную библиотеку с готовым кодом и артефактами. Эти инструменты используются для извлечения, преобразования и загрузки данных из различных источников в целевые системы, такие как хранилища данных или озёра данных. Их часто применяют в организациях для автоматизации переноса данных из различных систем и баз данных в центральное хранилище или озеро данных, где эти данные могут быть проанализированы.

Airflow — это популярная платформа с открытым исходным кодом для управления и планирования данных в конвейерах. Разработанная Airbnb, она приобрела популярность в последние годы благодаря своей гибкости и масштабируемости. Airflow позволяет пользователям определять, планировать и мониторить конвейеры данных с использованием кода на Python, что упрощает создание таких конвейеров для инженеров данных и аналитиков.

Пример 1-2 демонстрирует простой DAG (направленный ациклический граф) в Airflow. DAG — это направленный граф без циклов.

Пример 1-2. DAG в Airflow

Этот код определяет DAG с именем simple_dag, который выполняется каждый час. Он включает две задачи: print_date и sleep. Первая задача выполняет команду date, которая выводит текущую дату и время. Вторая задача выполняет команду sleep 5, которая заставляет задачу «спать» в течение пяти секунд. Для второй задачи задано количество повторных попыток, равное 3. Если она завершится с ошибкой, Airflow предпримет три попытки выполнения перед тем, как прекратить попытки. Эти две задачи связаны оператором >>, что означает, что задача sleep зависит от успешного выполнения задачи print_date и будет выполнена только после её завершения.

Airflow — это продуктивный инструмент для планирования и управления ETL-конвейерами, но у него есть некоторые ограничения.

  • Во-первых, Airflow может быть довольно сложным в настройке и управлении, особенно для больших или сложных конвейеров.
  • Во-вторых, он не предназначен специально для преобразования данных и может потребовать дополнительных инструментов или пользовательского кода для выполнения определённых типов манипуляций с данными.

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

Революция dbt

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

Эта интеграция позволяет командам управлять всем конвейером данных — от их извлечения до загрузки в хранилище данных, обеспечивая актуальность и точность данных. Она упрощает автоматизацию задач конвейера данных, планирование и мониторинг его работы, а также устранение возникающих проблем.

Чтобы показать, насколько просто создать модель в dbt, можно представить задачу расчёта общего дохода компании путём суммирования доходов по каждому заказу. Такая модель может быть определена с помощью файла модели dbt, содержащего SQL-код расчёта и любые необходимые зависимости или параметры. Пример 1-3 демонстрирует, как может выглядеть такой файл модели.

Пример 1-3. Модель dbt

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

Ещё одно преимущество dbt заключается в том, что он обеспечивает более эффективное управление конвейером данных. Благодаря интеграции с инструментами оркестрации, такими как Airflow, Dagster, Prefect, а также продуктом dbt Cloud от dbt Labs, dbt помогает командам эффективно планировать, организовывать и отслеживать конвейеры данных. Это позволяет данным оставаться актуальными и точными. Синергия dbt и таких инструментов, как Airflow, обеспечивает непрерывное обновление данных и развертывание новой логики, аналогично практике CI/CD в разработке программного обеспечения. Интеграция гарантирует, что при появлении новых данных или обновлении преобразований конвейер данных будет оркестирован и выполнен эффективно, предоставляя надёжные и своевременные инсайты.

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

Резюме

За последние десятилетия область управления данными претерпела значительные изменения, переходя от структурированных методов хранения и доступа к данным, таких как хранимые процедуры на базе SQL, к более гибким и масштабируемым рабочим процессам. Эти современные рабочие процессы поддерживаются мощными инструментами, такими как Airflow и dbt. Airflow упрощает динамическую оркестрацию, а dbt поднимает код аналитики до уровня программного обеспечения промышленного качества, предлагая инновационные подходы к тестированию и преобразованию данных.

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

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

Глава 2 погрузится в тему моделирования данных и его ключевую роль в аналитической инженерии. В этой главе мы рассмотрели эволюцию управления данными, появление роли инженера-аналитика, концепции, такие как data mesh, и различия между стратегиями ELT и ETL. Этот разнообразный набор тем нацелен на предоставление всестороннего обзора ландшафта данных.

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x