HeadlinesBriefing favicon HeadlinesBriefing.com

dbt Charts: декларативные дашборды с открытым кодом

Hacker News •
×

Мы открываем исходный код dbt Charts — декларативного языка для дашбордов, чтобы даже дашборды, которые вы создаёте в чате с агентом, можно было контролировать. ИИ для данных уже здесь, и давно обещанная самостоятельная аналитика наконец происходит. Любой, у кого есть подключение к данным, может за один день создать отчёт в чате, и первые результаты впечатляют. Однако трения появляются быстро. По умолчанию агент превращает один простой отчёт в кучу файлов: HTML, CSS и Java Script, пару библиотек графиков и приложение на React или Streamlit, как только оно должно быть живым. Проследить результат до его источника означает пройти через несколько языков и файлов, что медленно для аудита людьми и стоит агенту времени и токенов при каждом изменении. Инструменты BI пошли другим путём и прикрутили копиолотов к своим приложениям, ориентированным в первую очередь на интерфейс. Это удерживает ИИ на управляемых рельсах, но узких: агент может делать только то, что открывает интерфейс. Так что сегодня вы выбираете между беспорядочной свободой кода и узким контролем инструмента BI. Мы построили третий вариант: переходите сразу к делу или читайте дальше о том, как BI к этому пришёл. Разъединение BI Как недавно написал основатель dbt Labs Tristan Handy в «Второе разъединение BI»: Когда я начинал в данных, инструменты BI были полнофункциональными. Всё происходило внутри одного продукта: приём данных, преобразование, вычисления, кэширование, семантика, визуализация, идентификация. Инструмент BI и был стеком данных. Micro Strategy, Cognos и т. д.: это не просто инструменты визуализации, это интегрированные платформы данных. Затем появился современный стек данных. Примерно с 2015 по 2022 год инфраструктурные слои этого пакета BI были вынуты и превращены в специализированную инфраструктуру. Вычисления ушли к Big 5. Приём данных ушёл к Fivetran. Преобразование ушло к dbt. Инструменту BI остались: визуализация, интерактивные аналитические интерфейсы, семантические определения (иногда!), управление идентификацией и доступом и веб-хостинг. Хранилище Big 5 ELT Извлечение Загрузка Преобразование BI всё остальное То, что осталось после этого разъединения, — это инструмент BI, который мы знаем сегодня, и графики — его самая большая часть. Они остались в интерфейсе по веской причине: для большинства людей кликать быстрее, чем писать YAML. Но всё больше графиков будут создавать не люди. По мере того как фронтенд и пользователь всего становится всё больше чат-агентом, это предпочтение переворачивается. Агенты свободно владеют кодом, SQL и Git и неуклюжи в чужом интерфейсе. Поэтому графикам нужно перейти туда, где работают агенты: в код. Сегодня мы делаем следующий шаг в разъединении BI: мы открываем исходный код dbt Charts, который выносит графики из инструмента BI и помещает их в код, а именно в новый структурированный язык YAML, способный объявить полноценный интерактивный дашборд в одном проверяемом YAML-файле. Свободно общайтесь с агентом, и то, что он создаёт, обладает свободой кода и при этом остаётся легко читаемым. Хранилище Big 5 ELT Извлечение Загрузка Преобразование Новый C График BI несколько частей В dbt Charts SQL остаётся языком для объявления ТОГО, какие данные вы хотите видеть, а мы оборачиваем его в YAML, чтобы объявить, КАК вы хотите их видеть. Мы потратили много времени, чтобы выкристаллизовать язык в несколько основных, расширяемых элементов: глубоких по выразительности, простых в организации и чтении. YAML оборачивает не только SQL.

Markdown несёт прозу, а Jinja, как и в dbt, несёт переменные и макросы. Вот небольшой пример: одна переменная (фильтр интерфейса), один запрос и один график. 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 Этот файл — вся доска. CLI рендерит любой файл доски в статический SVG или в HTML, PNG, PDF и даже в терминал, на вашем ноутбуке или в CI, и раздаёт папку с ними как сайт: dct render charts/documents.yml --format svg # или html, png, pdf, terminal dct serve Эти несколько элементов идут глубоко: более 1 100 параметров конфигурации сегодня...