<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Yuriy Gavrilov: posts tagged BI</title>
<link>https://gavrilov.info/tags/bi/</link>
<description>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</description>
<author></author>
<language>en</language>
<generator>Aegea 11.4 (v4171e)</generator>

<itunes:owner>
<itunes:name></itunes:name>
<itunes:email>yvgavrilov@gmail.com</itunes:email>
</itunes:owner>
<itunes:subtitle>Welcome to my personal place for love, peace and happiness 🤖 Yuiry Gavrilov</itunes:subtitle>
<itunes:image href="https://gavrilov.info/pictures/userpic/userpic-square@2x.jpg?1643451008" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Новая эра трансформации данных: dbt против Bruin и aaC</title>
<guid isPermaLink="false">272</guid>
<link>https://gavrilov.info/all/novaya-era-transformacii-dannyh-dbt-protiv-bruin-i-aac/</link>
<pubDate>Sat, 23 Aug 2025 16:04:02 +0300</pubDate>
<author></author>
<comments>https://gavrilov.info/all/novaya-era-transformacii-dannyh-dbt-protiv-bruin-i-aac/</comments>
<description>
&lt;p&gt;В мире данных произошла тихая, но фундаментальная революция. На смену традиционному подходу &lt;b&gt;ETL (Extract, Transform, Load)&lt;/b&gt;, где данные преобразовывались до загрузки в хранилище, пришла новая парадигма — &lt;b&gt;ELT (Extract, Load, Transform)&lt;/b&gt;. Благодаря мощности современных облачных хранилищ (таких как Snowflake, BigQuery, Databricks, Starburst\Trino) стало выгоднее сначала загружать сырые данные, а уже затем трансформировать их непосредственно в хранилище.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/demo.gif" width="1200" height="900" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Этот сдвиг породил потребность в инструментах, которые специализируются на последнем шаге — трансформации (T). Именно в этой нише dbt (data build tool) стал безоговорочным лидером, но на его поле появляются и новые сильные игроки, такие как Bruin. Давайте разберемся, что это за инструменты, какой подход они олицетворяют и в чем их ключевые различия.&lt;/p&gt;
&lt;h4&gt;Подход «Аналитика как код»&lt;/h4&gt;
&lt;p&gt;И dbt, и Bruin являются яркими представителями движения &lt;b&gt;“Analytics as Code”&lt;/b&gt; (аналитика как код). Это не просто инструменты, а целая философия, которая переносит лучшие практики разработки программного обеспечения в мир аналитики данных.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Основные принципы и идеи:&lt;/b&gt;&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;b&gt;Версионирование:&lt;/b&gt; Все трансформации данных описываются в виде кода (в основном SQL), который хранится в системе контроля версий, такой как Git. Это позволяет отслеживать изменения, совместно работать и откатываться к предыдущим версиям.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Модульность и переиспользование (DRY – Don’t Repeat Yourself):&lt;/b&gt; Сложные трансформации разбиваются на небольшие, логически завершенные модели, которые могут ссылаться друг на друга. Это делает код чище, понятнее и позволяет повторно использовать уже написанную логику.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Тестирование:&lt;/b&gt; Код трансформаций должен быть протестирован. Инструменты позволяют автоматически проверять качество данных после преобразований: на уникальность ключей, отсутствие `NULL` значений, соответствие заданным условиям и т.д.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Документация и прозрачность:&lt;/b&gt; Процесс трансформации становится самодокументируемым. Инструменты могут автоматически генерировать документацию и строить графы зависимостей моделей (data lineage), показывая, как данные текут и преобразуются от источника к конечному виду. &lt;a href="https://www.element61.be/en/resource/when-use-dbt-or-delta-live-tables"&gt;element61.be&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CI/CD (Continuous Integration / Continuous Deployment):&lt;/b&gt; Изменения в коде трансформаций могут автоматически тестироваться и разворачиваться в продуктивную среду, что значительно ускоряет циклы разработки.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Решаемые проблемы:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;“Черные ящики” ETL:&lt;/b&gt; Заменяют сложные, трудноподдерживаемые и непрозрачные ETL-процессы на понятный и документированный код.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Рассинхронизация команд:&lt;/b&gt; Стирают границы между инженерами данных и аналитиками, позволяя аналитикам, владеющим SQL, самостоятельно создавать надежные модели данных.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Низкое качество данных:&lt;/b&gt; Встроенные механизмы тестирования помогают обеспечить надежность и согласованность данных.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;h4&gt;dbt (data build tool): Золотой стандарт трансформации&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;dbt&lt;/b&gt; — это инструмент с открытым исходным кодом, который позволяет аналитикам и инженерам трансформировать данные в их хранилищах с помощью простых SQL-запросов. Важно понимать, что dbt &lt;b&gt;не извлекает и не загружает данные&lt;/b&gt;. Он специализируется исключительно на шаге &lt;b&gt;“T”&lt;/b&gt; в ELT  &lt;a href="https://vutr.substack.com/p/why-is-dbt-so-popular"&gt;vutr.substack.com&lt;/a&gt;. &lt;a href="https://github.com/dbt-labs/dbt-core"&gt;dbt git&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Он работает как компилятор и исполнитель: вы пишете модели данных в `.sql` файлах, используя шаблонизатор Jinja для добавления логики (циклы, условия, макросы). Затем dbt компилирует этот код в чистый SQL и выполняет его в вашем хранилище данных &lt;a href="https://www.element61.be/en/resource/when-use-dbt-or-delta-live-tables"&gt;element61.be&lt;/a&gt;.&lt;/p&gt;
&lt;h5&gt;Плюсы dbt&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Огромное сообщество и экосистема:&lt;/b&gt; dbt стал де-факто стандартом индустрии. Существует огромное количество статей, курсов, готовых пакетов (библиотек) и экспертов.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Фокус на SQL:&lt;/b&gt; Низкий порог входа для аналитиков, которые уже знают SQL. Это демократизирует процесс трансформации данных.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Мощное тестирование и документирование:&lt;/b&gt; Встроенные команды для тестирования данных и автоматической генерации проектной документации с графом зависимостей.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Зрелость и надежность:&lt;/b&gt; Инструмент проверен временем и используется тысячами компаний по всему миру.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Гибкость:&lt;/b&gt; Благодаря шаблонизатору Jinja можно создавать очень сложные и переиспользуемые макросы, адаптируя dbt под любые нужды.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Минусы dbt&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Только трансформация:&lt;/b&gt; dbt не занимается извлечением (E) и загрузкой (L). Для этого вам понадобятся отдельные инструменты (например, Fivetran, Airbyte), что усложняет стек технологий.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Кривая обучения:&lt;/b&gt; Хотя основы просты, освоение продвинутых возможностей Jinja, макросов и структуры проекта требует времени.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Зависимость от Python-моделей:&lt;/b&gt; Хотя недавно появилась поддержка моделей на Python, она все еще не так нативна и проста, как основной SQL-подход, и требует дополнительных настроек.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;h4&gt;Bruin Data: Универсальный боец&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Bruin&lt;/b&gt; — это более новый игрок на рынке, который позиционирует себя как инструмент для создания “end-to-end” пайплайнов данных. В отличие от dbt, он не ограничивается только трансформацией, а стремится охватить больше этапов работы с данными, включая их загрузку (ingestion) &lt;a href="https://github.com/bruin-data/bruin"&gt;https://github.com/bruin-data/bruin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bruin разделяет ту же философию “Analytics as Code”, но предлагает более интегрированный опыт, где SQL и Python являются равноправными гражданами.&lt;/p&gt;
&lt;h5&gt;Плюсы Bruin&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Универсальность:&lt;/b&gt; Один инструмент для определения всего пайплайна: от загрузки из источников до финальных витрин данных. Это может упростить стек технологий.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Нативная поддержка SQL и Python:&lt;/b&gt; Позволяет легко комбинировать задачи на разных языках в одном пайплайне без дополнительных настроек. Это идеально для задач, где чистый SQL громоздок (например, работа с API, машинное обучение).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Простота конфигурации:&lt;/b&gt; Зачастую требует меньше шаблонного кода (boilerplate) для определения ассетов и пайплайнов по сравнению с dbt.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Встроенное качество данных:&lt;/b&gt; Как и dbt, делает акцент на проверках качества на каждом шаге.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Минусы Bruin&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt; Пока маленькое сообщество:&lt;/b&gt; Как у нового инструмента, у Bruin гораздо меньше пользователей, готовых решений и обсуждений на форумах по сравнению с dbt. Найти помощь или готовый пакет для решения специфической задачи сложнее.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Незрелость:&lt;/b&gt; Инструмент моложе, а значит, наверное, потенциально менее стабилен и может иметь меньше интеграций по сравнению с проверенным dbt. Пока нет облачных функция за деньги. Я так думал, но все же есть &lt;a href="https://getbruin.com."&gt;https://getbruin.com.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;“Мастер на все руки — эксперт ни в чем?”:&lt;/b&gt; Стремление охватить все этапы (E, L, T) может означать, что в каждом отдельном компоненте Bruin может уступать лучшим в своем классе специализированным инструментам (например, Fivetran в загрузке, dbt в трансформации), но это конечно субъективно.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Сводное сравнение&lt;/h4&gt;
&lt;table cellpadding="0" cellspacing="0" border="0" class="e2-text-table"&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;Характеристика&lt;/td&gt;
&lt;td style="text-align: center"&gt;dbt (data build tool)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Bruin Data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Основная задача&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Трансформация (T в ELT)&lt;/td&gt;
&lt;td style="text-align: center"&gt;Весь пайплайн (E, L, T)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Ключевые языки&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;SQL с шаблонизатором Jinja&lt;/td&gt;
&lt;td style="text-align: center"&gt;SQL и Python как равноправные&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Экосистема&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Огромная, стандарт индустрии&lt;/td&gt;
&lt;td style="text-align: center"&gt;Маленькая, развивающаяся&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Зрелость&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Высокая, проверен временем&lt;/td&gt;
&lt;td style="text-align: center"&gt;Низкая/Средняя&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;b&gt;Стек инструментов&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;Требует отдельных E/L инструментов&lt;/td&gt;
&lt;td style="text-align: center"&gt;Стремится быть самодостаточным&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h4&gt;Итого&lt;/h4&gt;
&lt;p&gt;Выбор между dbt и Bruin — это выбор между двумя стратегиями построения современного стека данных.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Выбирайте dbt, если:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Вы строите гибкий стек из лучших в своем классе инструментов (“best-of-breed”): один для загрузки, другой для хранения, третий для трансформации.&lt;/li&gt;
&lt;li&gt;Ваша команда в основном состоит из аналитиков, сильных в SQL.&lt;/li&gt;
&lt;li&gt;Для вас критически важны поддержка сообщества, стабильность и наличие готовых решений.&lt;/li&gt;
&lt;li&gt;Вы работаете в большой организации, где принятие отраслевых стандартов является преимуществом.&lt;/li&gt;
&lt;li&gt;Вы готовы переехать к ним в платное облако, когда нибудь. Большая часть функционала доступна там.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Выбирайте Bruin, если:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Вы предпочитаете единый, интегрированный инструмент для управления всеми пайплайнами, чтобы упростить архитектуру&lt;/li&gt;
&lt;li&gt;Вы любите open source и End-to-end дата framework: фор data ingestion + transformations + кволити. :)&lt;/li&gt;
&lt;li&gt;Ваши пайплайны требуют тесной связки SQL и Python для трансформаций (например, обогащение данных через вызовы API или модели ML).&lt;/li&gt;
&lt;li&gt;Вы начинаете новый проект или работаете в небольшой команде и цените скорость настройки и меньшее количество движущихся частей.&lt;/li&gt;
&lt;li&gt;Вы Go’шник :) –  Bruin написан на Go почти на 100%.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;И dbt, и Bruin — мощные инструменты, воплощающие современные подходы к инженерии данных. dbt предлагает проверенный, сфокусированный и невероятно мощный движок для трансформаций, ставший стандартом. Bruin же предлагает более универсальный и интегрированный подход, который может быть привлекателен для команд, стремящихся к простоте и нативной поддержке Python.&lt;/p&gt;
&lt;h4&gt;А что такое “Аналитика как код” (Analytics as Code, AaC)?&lt;/h4&gt;
&lt;p&gt;&lt;b&gt;Аналитика как код&lt;/b&gt; — это подход к управлению аналитическими процессами, при котором все компоненты аналитики — от моделей данных и метрик до отчетов и правил доступа — определяются в виде кода в человекочитаемых файлах. Эти файлы затем управляются так же, как исходный код любого другого программного обеспечения: с помощью систем контроля версий, автоматизированного тестирования и развертывания &lt;a href="https://medium.com/gooddata-developers/analytics-as-code-managing-analytics-solutions-like-any-other-software-504372ba6a61"&gt;medium.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Самая близкая и известная аналогия — это &lt;b&gt;Infrastructure as Code (IaC)&lt;/b&gt;. Как IaC (например, с помощью Terraform) позволил инженерам описывать серверы, сети и базы данных в коде вместо ручной настройки через веб-интерфейсы, так и AaC позволяет описывать в коде всё, что связано с данными &lt;a href="https://medium.com/@terezacihelkova/analytics-as-code-what-is-it-and-how-does-it-help-you-93e9a3c179ee"&gt;medium.com&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Идея проста и убедительна: “настройте свои системы один раз, выразите это в виде кода, а затем поместите в систему контроля версий” &lt;a href="https://www.holistics.io/blog/analytics-as-code/"&gt;holistics.io&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Проблема: Как было раньше?&lt;/h4&gt;
&lt;p&gt;Чтобы понять ценность AaC, нужно посмотреть на проблемы, которые он решает. В традиционном подходе аналитика часто была разрозненной и хрупкой:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Логика в “черных ящиках”:&lt;/b&gt; Сложные преобразования данных были скрыты внутри GUI-интерфейсов старых ETL-инструментов или непосредственно в настройках BI-платформы (например, Tableau, Power BI). Никто, кроме автора, не мог легко понять, как рассчитывается та или иная метрика.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Разрозненные SQL-скрипты:&lt;/b&gt; Аналитики хранили важные SQL-запросы на своих локальных машинах, в общих папках или на wiki-страницах. Не было единой версии правды, код дублировался и быстро устаревал.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Отсутствие контроля версий:&lt;/b&gt; Невозможно было отследить, кто, когда и почему изменил логику расчета ключевого показателя. Откат к предыдущей работающей версии был настоящей головной болью.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;“Ручное” тестирование:&lt;/b&gt; Проверка качества данных после изменений была ручным, подверженным ошибкам процессом. Часто о проблемах узнавали уже от бизнес-пользователей, которые видели неверные цифры в отчетах.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Рассинхронизация:&lt;/b&gt; Инженеры данных готовили сырые таблицы, а аналитики строили свою логику поверх них. Любые изменения с одной стороны могли сломать всю цепочку, не будучи замеченными вовремя.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Этот хаос приводил к главному — &lt;b&gt;недоверию к данным&lt;/b&gt;. Никто не мог быть уверен, что цифры в дашборде верны.&lt;/p&gt;
&lt;h4&gt;Ключевые принципы “Аналитики как код”&lt;/h4&gt;
&lt;p&gt;AaC решает эти проблемы, внедряя практики из мира разработки ПО.&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;&lt;b&gt;Декларативное определение:&lt;/b&gt; Все аналитические артефакты описываются в файлах.
&lt;ul&gt;
  &lt;li&gt;Модели данных:** `SELECT * FROM ...` в `.sql` файлах.&lt;/li&gt;
  &lt;li&gt;Тесты:** `not_null`, `unique` в `.yml` файлах.&lt;/li&gt;
  &lt;li&gt;Документация:** Описания таблиц и полей в `.yml` файлах.&lt;/li&gt;
  &lt;li&gt;Метрики и дашборды:** Определения в `.yml` или специализированных файлах &lt;a href="https://medium.com/gooddata-developers/analytics-as-code-managing-analytics-solutions-like-any-other-software-504372ba6a61"&gt;medium.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;b&gt;Контроль версий (Git):&lt;/b&gt; Весь код хранится в репозитории (например, на GitHub или GitLab).
&lt;ul&gt;
  &lt;li&gt;Прозрачность:** Каждое изменение — это `commit` с понятным описанием.&lt;/li&gt;
  &lt;li&gt;Совместная работа:** Аналитики работают в отдельных ветках, а изменения вносятся через `Pull Request` (или `Merge Request`), что позволяет проводить ревью кода (code review).&lt;/li&gt;
  &lt;li&gt;Восстанавливаемость:** Если что-то пошло не так, можно легко откатиться к предыдущей версии.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;&lt;b&gt;Автоматизированное тестирование:&lt;/b&gt; Тесты являются неотъемлемой частью кода. Они запускаются автоматически при каждом изменении, чтобы гарантировать, что данные по-прежнему соответствуют ожиданиям (например, `user_id` всегда уникален и не равен `NULL`).&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;b&gt;CI/CD (Непрерывная интеграция и развертывание):&lt;/b&gt; Процессы полностью автоматизированы.
&lt;ul&gt;
  &lt;li&gt;Когда аналитик вносит изменения в `Pull Request`, автоматически запускаются тесты.&lt;/li&gt;
  &lt;li&gt;После одобрения и слияния ветки изменения автоматически развертываются в продуктивной среде (например, dbt Cloud или Jenkins запускает команду `dbt run`).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;&lt;b&gt;Модульность и переиспользование (DRY – Don’t Repeat Yourself):&lt;/b&gt; Сложные потоки данных разбиваются на небольшие, логичные и переиспользуемые модели. Одна модель может ссылаться на другую, создавая четкий граф зависимостей (lineage), который можно визуализировать.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Преимущества подхода AaC&lt;/h4&gt;
&lt;p&gt;Принятие этой философии дает компании ощутимые выгоды:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Надежность и доверие:&lt;/b&gt; Благодаря автоматическому тестированию и ревью кода значительно повышается качество данных, а вместе с ним и доверие бизнеса к аналитике.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Скорость и гибкость:&lt;/b&gt; Аналитики могут вносить изменения гораздо быстрее. Цикл от идеи до готового отчета сокращается с недель до дней или даже часов.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Масштабируемость:&lt;/b&gt; Кодовая база легко поддерживается и расширяется. Новые члены команды могут быстро разобраться в проекте благодаря документации и прозрачности.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Прозрачность и обнаруживаемость:&lt;/b&gt; Автоматически сгенерированная документация и графы зависимостей позволяют любому сотруднику понять, откуда берутся данные и как они рассчитываются.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Демократизация:&lt;/b&gt; AaC дает возможность аналитикам, владеющим SQL, самостоятельно создавать надежные и протестированные модели данных, не дожидаясь инженеров данных. Это стирает барьеры между командами.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В конечном итоге, “Аналитика как код” — это культурный сдвиг, который превращает аналитику из ремесленного занятия в зрелую инженерную дисциплину, обеспечивая скорость, надежность и масштабируемость, необходимые современному бизнесу.&lt;/p&gt;
</description>
</item>

<item>
<title>Эволюция бизнес-аналитики: от монолитной к компонуемой архитектуре</title>
<guid isPermaLink="false">193</guid>
<link>https://gavrilov.info/all/evolyuciya-biznes-analitiki-ot-monolitnoy-k-komponuemoy-arhitekt/</link>
<pubDate>Thu, 13 Feb 2025 01:23:28 +0300</pubDate>
<author></author>
<comments>https://gavrilov.info/all/evolyuciya-biznes-analitiki-ot-monolitnoy-k-komponuemoy-arhitekt/</comments>
<description>
&lt;p&gt;Перевод: &lt;a href="https://www.pracdata.io/p/the-evolution-of-business-intelligence-stack"&gt;https://www.pracdata.io/p/the-evolution-of-business-intelligence-stack&lt;/a&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-132.png" width="1336" height="944" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;По мере того, как мы вступаем в 2025 год, область инженерии данных продолжает свою стремительную эволюцию. В этой серии мы рассмотрим преобразующие тенденции, меняющие ландшафт инженерии данных, от новых архитектурных шаблонов до новых подходов к инструментарию.&lt;/p&gt;
&lt;p&gt;Это первая часть нашей серии, посвященная эволюции архитектуры бизнес-аналитики (BI).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Введение&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ландшафт бизнес-аналитики (BI) претерпел значительные преобразования в последние годы, особенно в том, как данные представляются и обрабатываются.&lt;/p&gt;
&lt;p&gt;Эта эволюция отражает более широкий переход от монолитных архитектур к более гибким, компонуемым решениям, которые лучше отвечают современным аналитическим потребностям.&lt;/p&gt;
&lt;p&gt;В этой статье прослеживается эволюция BI-архитектуры через несколько ключевых этапов: от традиционных монолитных систем, через появление безголовой (headless) и бездонной (bottomless**) BI, до последних разработок в области BI-as-Code и встроенной аналитики.&lt;/p&gt;
&lt;p&gt;** 😂 👯‍♀️&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/evolyuciya-biznes-analitiki-ot-monolitnoy-k-komponuemoy-arhitekt.png" width="2156" height="222" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Если серьезно, то наверное лучший вариант бескрайний&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Традиционная BI-архитектура: Монолитный подход&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Традиционные BI-инструменты были построены как комплексные, тесно связанные системы со значительным акцентом на дизайне пользовательского интерфейса.&lt;/p&gt;
&lt;p&gt;Эти системы обеспечивали обширную гибкость благодаря функциональности “кликай и смотри” для нарезки, разделения и группировки данных с использованием различных визуализаций. В своей основе эти системы состояли из трех взаимосвязанных компонентов, которые работали в гармонии для предоставления бизнес-аналитики.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-133.png" width="473" height="487" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;*Традиционный BI-стек*&lt;/p&gt;
&lt;p&gt;Серверный уровень служил основой, обрабатывая прием данных из источников OLAP и создавая оптимизированные кубы данных на сервере. Эти кубы содержали предварительно вычисленные измерения, которые позволяли исследовать данные в режиме реального времени.&lt;/p&gt;
&lt;p&gt;Работая совместно с серверной частью, клиентский уровень предоставлял интерфейс визуализации, подключаясь к серверной части для доступа к кубам данных и построения панелей мониторинга.&lt;/p&gt;
&lt;p&gt;Семантический уровень завершал архитектуру, определяя ключевые показатели эффективности (KPI) и метрики, встроенные в BI-программное обеспечение.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Недостатки традиционных BI-инструментов&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Хотя эти традиционные системы были мощными, они имели значительные накладные расходы.&lt;/p&gt;
&lt;p&gt;Организациям требовалась существенная инфраструктура для локального развертывания до того, как управляемые облачные BI-сервисы стали более доступными, а стоимость лицензирования часто была непомерно высокой.&lt;/p&gt;
&lt;p&gt;Сроки реализации были длительными, даже демонстрации концепции требовали недель настройки и конфигурации. Для предприятий, обслуживающих большую пользовательскую базу, требования к ресурсам были особенно высокими.&lt;/p&gt;
&lt;p&gt;Эти фундаментальные ограничения в сочетании с растущей потребностью в гибкости и экономичности вызвали серию архитектурных инноваций в области BI.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Появление бездонных (Bottomless) BI-инструментов&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;В ответ на эти вызовы появилось новое поколение легких, дезагрегированных BI-инструментов. Заметные решения с открытым исходным кодом, такие как Apache Superset, Metabase и Redash, начали появляться около десяти лет назад, причем Superset, первоначально разработанный в Airbnb, приобрел особую известность в экосистеме.&lt;/p&gt;
&lt;p&gt;Эти новые инструменты приняли “безднную” архитектуру, устранив тяжелый серверный уровень, традиционно используемый для вычислений, построения и кеширования объектов куба.&lt;/p&gt;
&lt;p&gt;Вместо того чтобы поддерживать свой собственный вычислительный уровень, они полагаются на подключенные исходные движки для запроса и предоставления данных на панели мониторинга во время выполнения. Этот архитектурный сдвиг вводит различные стратегии для обслуживания данных.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-134.png" width="1456" height="1147" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Работа с задержкой запросов&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Отсутствие сервера отчетов представляет собой серьезную проблему для бездонных BI-инструментов: управление задержкой запросов при доступе к данным в режиме реального времени.&lt;/p&gt;
&lt;p&gt;Чтобы решить эту проблему, эти инструменты используют несколько стратегий оптимизации. Один из ключевых подходов включает использование предварительно вычисленных агрегатов, хранящихся в основном хранилище данных, что позволяет панелям мониторинга эффективно предоставлять результаты.&lt;/p&gt;
&lt;p&gt;Кроме того, такие инструменты, как Superset, реализуют уровни кеширования с использованием Redis для хранения часто используемых наборов данных. Этот механизм кеширования оказывается особенно эффективным: после того, как первоначальный запрос загружает набор данных, последующие визуализации и перезагрузки панели мониторинга могут обращаться к кешированной версии до тех пор, пока не изменятся базовые данные, что значительно сокращает время отклика.&lt;/p&gt;
&lt;p&gt;Для компаний, работающих с большими объемами данных, интеграция со специализированными OLAP-движками реального времени, такими как Druid и ClickHouse, обеспечивает аналитические возможности с низкой задержкой.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-135.png" width="1339" height="1173" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Появление универсального семантического слоя&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;По мере того, как отрасль стремилась к большей гибкости в своем BI-стеке, переносимый семантический слой, или то, что известно как безголовая (headless) BI, появился в качестве промежуточного шага между традиционными монолитными системами и полностью легкими решениями.&lt;/p&gt;
&lt;p&gt;Платформы безголовой BI предоставляют выделенный семантический слой, а некоторые объединяют движок запросов, позволяя организациям использовать любой инструмент визуализации по своему выбору. Этот подход полностью отделяет уровень представления (фронтенд) от семантического слоя.&lt;/p&gt;
&lt;p&gt;С помощью таких инструментов, как Cube и MetricFlow (теперь часть dbt Labs), например, организации могут определять свои метрики и модели данных в центральном месте, а затем подключать различные инструменты визуализации, пользовательские приложения или легкие BI-решения к этому семантическому слою.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-136.png" width="542" height="755" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Этот архитектурный шаблон предлагает несколько преимуществ по сравнению с традиционными BI-системами. Он позволяет организациям поддерживать согласованные определения метрик в различных инструментах визуализации, поддерживает несколько интерфейсных приложений одновременно и обеспечивает лучшие возможности интеграции с современными стеками данных.&lt;/p&gt;
&lt;p&gt;Семантический слой действует как универсальный переводчик между источниками данных и уровнями визуализации, обеспечивая согласованную бизнес-логику во всех аналитических приложениях.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Движение BI-as-Code&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;В последние годы наблюдается появление BI-as-Code, представляющего собой еще более легкий подход к разработке панелей мониторинга и интерактивных приложений для работы с данными.&lt;/p&gt;
&lt;p&gt;Этот сдвиг парадигмы привносит рабочие процессы разработки программного обеспечения в разработку BI, позволяя использовать контроль версий, тестирование и методы непрерывной интеграции. Поскольку код служит основной абстракцией, а не пользовательским интерфейсом, разработчики могут реализовывать правильные рабочие процессы разработки перед развертыванием в производственной среде.&lt;/p&gt;
&lt;p&gt;Известные инструменты в этой области, такие как Streamlit, легко интегрируются с экосистемой Python, позволяя разработчикам оставаться в рамках своих проектов Python без необходимости установки внешнего программного обеспечения для создания панелей мониторинга и приложений для работы с данными.&lt;/p&gt;
&lt;p&gt;Этот подход делает упор на простоту и скорость, используя SQL и декларативные инструменты, такие как YAML, для создания панелей мониторинга. Полученные веб-приложения можно легко разместить самостоятельно, обеспечивая гибкость развертывания.&lt;/p&gt;
&lt;p&gt;Хотя Streamlit лидирует по популярности, в последние годы появились новые решения с открытым исходным кодом, такие как Evidence, Rill, Vizro и Quary, каждое из которых привносит свой собственный подход к концепции BI-as-Code.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-137.png" width="688" height="745" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Ограничения BI-as-Code&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Инструменты BI-as-Code в настоящее время имеют ограничения с точки зрения интерактивных функций исследования данных и предоставления BI-возможностей корпоративного уровня.&lt;/p&gt;
&lt;p&gt;Они не обеспечивают тот же пользовательский опыт для нарезки и разделения данных, что и традиционные BI-инструменты, и им не хватает поддержки управления данными и семантического слоя, которые есть как в традиционных, так и в легких BI-решениях.&lt;/p&gt;
&lt;p&gt;Тем не менее, BI-as-Code все чаще используется различными способами, например, командами специалистов по обработке данных, создающими интерактивные автономные приложения, командами разработчиков продуктов, создающими встроенные функции аналитики, и аналитиками, разрабатывающими внутренние приложения для работы с данными.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая развивающаяся тенденция: BI + Встроенная аналитика&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Последняя эволюция в BI-архитектуре включает интеграцию высокопроизводительных встраиваемых OLAP-движков запросов, таких как Apache DataFusion и DuckDB.&lt;/p&gt;
&lt;p&gt;Этот подход устраняет несколько пробелов в текущем ландшафте, сохраняя при этом преимущества легких, дезагрегированных архитектур.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://gavrilov.info/pictures/image-138.png" width="1209" height="1094" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Новая полнофункциональная компонуемая BI-архитектура дает несколько ключевых преимуществ:&lt;/p&gt;
&lt;p&gt;Во-первых, она предлагает настоящую компонуемость и совместимость с возможностью замены встроенных вычислительных движков по мере необходимости, сохраняя при этом автономный семантический слой для определения метрик.&lt;/p&gt;
&lt;p&gt;Возможности встроенной аналитики особенно мощны благодаря интеграции без копирования через стандартные фреймворки, в основном Apache Arrow, обеспечивающей доступ к данным на уровне микросекунд через оптимизированные столбчатые форматы в памяти.&lt;/p&gt;
&lt;p&gt;Интеграция без копирования относится к методу оптимизации производительности, при котором доступ к данным и их обработка могут осуществляться без необходимости сериализации и преобразования данных между различными представлениями в памяти. В контексте DataFusion и Apache Arrow это означает, что когда данные загружаются в память в столбчатом формате Arrow, DataFusion может напрямую выполнять вычисления с этими данными без необходимости их преобразования или копирования во внутренний формат.&lt;/p&gt;
&lt;p&gt;Прямая поддержка озер данных и lakehouse представляет собой еще один значительный шаг вперед, позволяя командам создавать панели мониторинга непосредственно поверх открытых табличных форматов, таких как Apache Iceberg и Apache Hudi, без промежуточного перемещения данных.&lt;/p&gt;
&lt;p&gt;Эта возможность в сочетании с комплексной поддержкой федеративных запросов решает давнюю проблему в существующих легких BI-инструментах, которые с трудом эффективно объединяли данные из нескольких источников без необходимости использования внешнего движка федеративных запросов.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Внедрение в отрасли&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Внедрение встраиваемых движков запросов в отрасли набирает обороты в экосистеме BI.  Коммерческие поставщики возглавляют эту трансформацию: Omni интегрировала DuckDB в качестве своего основного аналитического движка, в то время как Cube.dev реализовала сложное сочетание Apache Arrow и DataFusion в своей безголовой BI-архитектуре.&lt;/p&gt;
&lt;p&gt;Аналогичным образом, GoodData приняла эту тенденцию, реализовав Apache Arrow в качестве основы уровня кеширования своей системы FlexQuery, а Preset (Managed Superset) интегрировалась с MotherDuck (Managed DuckDB).&lt;/p&gt;
&lt;p&gt;В области открытого исходного кода и Superset (с использованием библиотеки duckdb-engine), и Metabase теперь поддерживают встроенное подключение DuckDB с потенциальной будущей интеграцией в их основные движки.&lt;/p&gt;
&lt;p&gt;Движение BI-as-Code также приняло встраиваемые движки. Rilldata объявила об интеграции DuckDB в 2023 году для автоматического профилирования и интерактивного моделирования при разработке панелей мониторинга, в то время как Evidence представила &lt;a href="https://evidence.dev/blog/why-we-built-usql"&gt;Universal SQL в 2024 году&lt;/a&gt;, основанный на реализации WebAssembly от DuckDB.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Заключение&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ландшафт бизнес-аналитики продолжает развиваться в сторону более гибких и эффективных решений.&lt;/p&gt;
&lt;p&gt;Каждое архитектурное изменение принесло явные преимущества: безголовая BI обеспечила согласованность метрик между инструментами, бездонная BI снизила сложность инфраструктуры, BI-as-Code привнесла рабочие процессы разработчиков в аналитику, а встроенные движки теперь объединяют эти преимущества с высокопроизводительными возможностями запросов.&lt;/p&gt;
&lt;p&gt;Интеграция встраиваемых движков запросов с легкими BI-инструментами представляет собой перспективное направление для реализации легкой BI, объединяющее лучшие аспекты традиционных BI-возможностей с современными архитектурными шаблонами. По мере развития этих технологий и роста экосистемы компании могут рассчитывать на все более сложные, но компонуемые решения для своих аналитических потребностей.&lt;/p&gt;
</description>
</item>


</channel>
</rss>