HeadlinesBriefing favicon HeadlinesBriefing.com

dbt Charts: painéis declarativos de código aberto

Hacker News •
×

Estamos abrindo o código do dbt Charts, uma linguagem declarativa para painéis, para que até os painéis que você cria conversando com um agente possam ser governados. A IA para dados chegou, e a análise de autoatendimento prometida há tanto tempo finalmente está acontecendo. Qualquer pessoa com uma conexão de dados pode criar um relatório conversando em uma tarde, e os primeiros resultados são impressionantes.

As fricções aparecem rápido, porém. Por padrão, um agente transforma um relatório simples em uma pilha de arquivos: HTML, CSS e Java Script, algumas bibliotecas de gráficos e um aplicativo React ou Streamlit quando precisa estar no ar. Rastrear um resultado até sua origem significa segui-lo por várias linguagens e arquivos, o que é lento para as pessoas auditarem e custa ao agente tempo e tokens a cada alteração.

As ferramentas de BI foram pelo outro caminho e acoplaram copilotos aos seus aplicativos centrados na interface. Isso mantém a IA em trilhos governados, mas estreitos: o agente só pode fazer o que a interface expõe. Então hoje você escolhe entre a liberdade bagunçada do código e o controle estreito de uma ferramenta de BI.

Construímos uma terceira opção: pule para frente, ou continue lendo para saber como o BI chegou aqui. Desagregando o BI Como escreveu recentemente o fundador da dbt Labs, Tristan Handy, em A Segunda Desagregação do BI: Quando comecei em dados, as ferramentas de BI eram full-stack. Tudo acontecia dentro de um único produto: ingestão de dados, transformação, computação, cache, semântica, visualização, identidade.

A ferramenta de BI era a stack de dados. Micro Strategy, Cognos, etc.: não são apenas ferramentas de visualização, são plataformas de dados integradas. Então a stack de dados moderna aconteceu.

De cerca de 2015 a 2022, as camadas de infraestrutura desse pacote de BI foram extraídas e transformadas em infraestrutura feita sob medida. A computação foi para as Big 5. A ingestão foi para a Fivetran.

A transformação foi para o dbt. A ferramenta de BI ficou com: visualização, interfaces analíticas interativas, definições semânticas (às vezes!), gestão de identidade e acesso, e hospedagem web. Armazenamento de dados Big 5 ELT Extrair Carregar Transformar BI todo o resto O que essa desagregação deixou para trás é a ferramenta de BI que conhecemos hoje, e os gráficos são sua maior peça.

Eles ficaram na interface por um bom motivo: para a maioria das pessoas, clicar é mais rápido do que escrever YAML. Mas cada vez mais gráficos não serão feitos por pessoas. À medida que o front end e o usuário de tudo se torna cada vez mais um agente de chat, essa preferência se inverte. Os agentes são fluentes em código, SQL e Git, e desajeitados na interface de outra pessoa.

Então os gráficos precisam se mover para onde os agentes trabalham: para o código. Hoje damos o próximo passo na desagregação do BI: estamos abrindo o código do dbt Charts, que tira os gráficos da ferramenta de BI e os coloca no código, especificamente uma nova linguagem YAML estruturada que pode declarar um painel interativo completo em um único arquivo YAML auditável. Converse livremente com um agente, e o que ele cria tem a liberdade do código enquanto permanece fácil de ler.

Armazenamento de dados Big 5 ELT Extrair Carregar Transformar Novo C Gráfico BI alguns pedaços No dbt Charts, SQL continua sendo a linguagem para declarar QUAIS dados você quer ver, e nós a envolvemos em YAML para declarar COMO você quer vê-los. Passamos muito tempo destilando a linguagem em alguns elementos centrais e extensíveis: profundos no que podem expressar, fáceis de organizar e ler. O YAML envolve mais do que SQL.

Markdown carrega a prosa, e Jinja, como no dbt, carrega variáveis e macros. Aqui está um pequeno exemplo: uma variável (um filtro de interface), uma consulta e um gráfico. 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 Esse arquivo é o quadro inteiro. A CLI renderiza qualquer arquivo de quadro em SVG estático, ou em HTML, PNG, PDF e até no terminal, no seu laptop ou em CI, e serve uma pasta deles como um site: dct render charts/documents.yml --format svg # ou html, png, pdf, terminal dct serve Esses poucos elementos vão fundo: mais de 1.100 opções de configuração hoje...