Свобода кода и управление BI

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

Но проблемы проявляются быстро. По умолчанию агент превращает один простой отчёт в кучу файлов: HTML, CSS, JavaScript, пару библиотек для графиков и React или Streamlit приложение. Проследить результат до источника означает идти сквозь несколько языков и файлов — это медленно для аудита и стоит агенту времени и токенов при каждом изменении.

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

Сегодня нужно выбирать между беспорядочной свободой кода и узким управлением BI-инструмента. dbt Labs предложила третий вариант.

Развал BI-пакета

Как недавно писал основатель dbt Labs Тристан Хэнди в статье BI's Second Unbundling:

Когда я начинал в data, BI-инструменты были универсальными. Всё происходило в одном продукте: загрузка данных, трансформация, вычисления, кеширование, семантика, визуализация, управление идентификацией. BI-инструмент был стеком данных. MicroStrategy, Cognos и другие — это не просто инструменты визуализации, а интегрированные платформы данных.

Потом произошла революция современного стека данных. С 2015 по 2022 год инфраструктурные слои этого пакета выделили в отдельные специализированные инструменты. Вычисления ушли в Big 5. Загрузка — в Fivetran. Трансформация — в dbt. BI-инструменту осталось: визуализация, интерактивные аналитические интерфейсы, определение семантики (иногда!), управление доступом и веб-хостинг.

Эволюция BI инструментов: от универсального пакета к распределённой архитектуре

Во время этого развала диаграммы остались в интерфейсе и не без причины: для большинства людей клик быстрее написания YAML. Но всё больше графиков будут создавать не люди. По мере того как интерфейс между человеком и системой становится чатом, предпочтение меняется. AI свободно работает с кодом, SQL и Git, но неловко в чужом UI. Значит, диаграммы должны переместиться туда, где работают агенты — в код.

Диаграммы покидают BI-инструмент

Сегодня dbt Labs делает следующий шаг в развале BI: открывает исходный код dbt Charts — нового структурированного языка на YAML, который может описать полный интерактивный дашборд в одном проверяемом файле. Можно свободно общаться с агентом, и результат получит свободу кода, оставаясь легко читаемым.

Новая архитектура: charts выделены из BI инструмента в отдельный слой

В dbt Charts SQL остаётся языком для описания ЧТО видеть, а YAML оборачивает это, описывая КАК это видеть.

Авторы долго дистиллировали язык до нескольких основных расширяемых элементов: глубоких в выразительности, но лёгких в организации и чтении. YAML оборачивает больше, чем SQL. Markdown несёт прозу, а Jinja (как в самом dbt) несёт переменные и макросы.

Вот небольшой пример: одна переменная (UI-фильтр), один запрос и один график.

variables:
  status:
    column: main.documents.status

queries:
  doc_growth: |
    SELECT DATE_TRUNC('month', created_at) AS month,
           SUM(COUNT(*)) OVER (ORDER BY month)
             AS num_docs
    FROM main.documents
    WHERE {{ filter('status', status) }}
    GROUP BY 1

charts:
  growth:
    title: Documents created, all time
    type: area
    query: doc_growth
    x: month
    y: num_docs

rows:
  - growth
Documents created, all time: диаграмма площадей, которая растёт от 184 до 58 440 элементов, отрендерена из примера выше

Этот файл — весь дашборд. CLI рендерит любой файл в статический SVG либо в HTML, PNG, PDF и даже в терминал на ноутбуке или в CI, и раздаёт папку как сайт:

dct render charts/documents.yml --format svg   # или html, png, pdf, terminal
dct serve

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

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

Полный коммерческий дашборд с KPI, столбцами, диаграммой-пончиком, графиком линий и таблицей

Полный дашборд dbt Charts, отрендерен из одного легко читаемого YAML файла.

Глубокая интеграция с dbt

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

В dbt Charts папка charts/ живёт рядом с models/ в одном Git репозитории, поэтому изменение модели и её диаграмм отправляется в одной ветке, проходит один CI и ломается до production.

your_dbt_project/
  .git/
  dbt_project.yml
  models/
  charts/          # новая папка в dbt репо для дашбордов
    revenue.yml

Запросы достигают моделей через ref(), разрешаемый из манифеста, так что переименованная модель или пропущенный столбец ломает pull request, который его сломал, ещё до того как dbt run пересчитает warehouse:

dbt parse && dct validate charts/

Поддержка dbt Semantic Layer запланирована, так что дашборд может использовать метрику как её определяет проект вместо повторного написания SQL. Следите за dbt-labs/dbt-charts#1.

Построено для чата

Агенты могут быть довольно слепы, и лучше всего работают с плотным циклом обратной связи. dbt Charts даёт им его: строгая валидация как YAML, так и SQL, и обширный набор проверок визуализации, которые отмечают проблемы до того как кто-то видит дашборд:

$ dct render charts/revenue.yml
WARN-BAR-BAND-WIDTH-TOO-NARROW
182 bands x 2 series across 640px
Fix: roll up to a coarser grain.

WARN-TABLE-COLUMNS-OVERFLOW
Table needs 980px but only 640px is available.
Fix: drop columns or widen the slot.

Красивая, связная система отчётности

dbt Labs надеется, что dbt Charts, как и сам dbt до этого, станет открытым стандартным языком для своего слоя стека данных. Авторы спроектировали его для будущего, где люди и AI создают вместе, и хотели, чтобы он выглядел как это будущее, а не как ещё одна сетка дашбордов. Они привлекли RJ Andrews, дизайнера данных, автора и историка, чтобы спроектировать графики. Его понимание истории ремесла делает результат свежим: он заглядывает в эпоху до дашбордов, когда люди рисовали диаграммы с заботой.

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

Дашборд dbt Charts: showcase/general/dundersign-commercial-finance Дашборд dbt Charts: showcase/general/one-dataset-nine-ways Дашборд dbt Charts: showcase/boards/dundersign-support-operations Дашборд dbt Charts: showcase/boards/quarterly-business-review Дашборд dbt Charts: showcase/charts/composed-chart-shapes

Результат — связная система диаграмм, которая выглядит выше текущего уровня BI.

dbtCharts.com: BI-платформа на основе dbt Charts

Наряду с открытым языком, сегодня запущена dbtCharts.com в открытой бета: хостируемая платформа для остального BI. С диаграммами выделенными, остаётся в основном хостинг, управление доступом и UI. По своей природе это, возможно, не может быть выделено или, по крайней мере, не должно быть, так что платформа обрабатывает это поверх открытого языка.

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

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

Диаграмма, выбранная в визуальных элементах управления дизайном, её палитра фона открыта, в реальном рабочем пространстве dbt Charts, с дашбордом Commercial performance и иллюстративным диалогом AI. Определение дашборда в реальном рабочем пространстве dbt Charts, с дашбордом Commercial performance и иллюстративным диалогом AI. Сохранённая история дашборда в реальном рабочем пространстве dbt Charts, с дашбордом Commercial performance и иллюстративным диалогом AI. Выбор людей и команд для общего доступа к дашборду в реальном рабочем пространстве dbt Charts, с дашбордом Commercial performance и иллюстративным диалогом AI.

Одна доска. Каждый способ работать. Потому что это построено на открытом языке, каждое изменение, из чата, визуального редактора или кода, приземляется в том же YAML в вашем Git репо. Ничего не заперто: тот же дашборд работает на вашем ноутбуке, в CI и на платформе, и команды могут самообслужить себя, агента в руке, без создания второго, скрытого стека данных.

Попробуйте бету

Язык dbt Charts открыт под лицензией Apache 2.0, и можно писать, рендерить и раздавать дашборды локально без создания аккаунта. Установите сами или дайте одну строку вашему агенту кода:

Терминал

uv tool install dbt-charts

Claude / AI

Make charts of this with dbt Charts. Start with: uv tool install dbt-charts && dct skills intro

dbt Charts находится в pre-1.0 и ещё меняется. Когда грамматика меняется, дашборды мигрируют при разборе, так что дашборды, написанные сегодня, продолжают рендериться. Попробуйте, скажите нам, что не хватает, присоединитесь к обсуждению в #dbt-charts на Slack и помогите построить слой диаграмм, которого ждала открытая инфраструктура данных.