HeadlinesBriefing favicon HeadlinesBriefing.com

dbt Charts:チャット向けオープンソース宣言型ダッシュボード

Hacker News •
×

私たちは dbt Charts をオープンソース化します。これはダッシュボードのための宣言型言語であり、エージェントとチャットして作ったダッシュボードでさえガバナンスできるようにするものです。データのための AI はすでに到来しており、長らく約束されてきたセルフサービス分析がついに実現しつつあります。データ接続さえあれば誰でも午後ひとつでチャットからレポートを作り出せ、最初の成果は目を見張るものがあります。しかし、摩擦はすぐに現れます。デフォルトでは、エージェントはひとつの簡単なレポートを大量のファイルに変えてしまいます。HTML、CSS、Java Script、いくつかのチャートライブラリ、そしてライブにする必要が出た時点での React または Streamlit アプリです。結果をその出所までたどるには、複数の言語とファイルを追いかけることになり、人にとっては監査が遅く、変更のたびにエージェントの時間とトークンを消費します。BI ツールは逆の道を進み、UI ファーストのアプリにコパイロットを後付けしました。それにより AI はガバナンスされたレールに乗りますが、そのレールは狭いものです。エージェントは UI が公開する以上のことはできません。つまり今日、あなたはコードの乱雑な自由と BI ツールの狭い統制のどちらかを選ぶことになります。私たちは第三の選択肢を作りました。先に進みたい方は読み飛ばしてください。BI がどうここに至ったかを知りたい方は読み続けてください。BI のアンバンドリング dbt Labs の創業者 Tristan Handy が最近「BI の第二のアンバンドリング」で書いたように。私がデータの世界に入った頃、BI ツールはフルスタックでした。すべてがひとつの製品の中で起きていました。データの取り込み、変換、計算、キャッシュ、セマンティクス、可視化、アイデンティティ。BI ツールがデータスタックそのものだったのです。Micro Strategy、Cognos などは、単なる可視化ツールではなく、統合されたデータプラットフォームです。その後、モダンデータスタックが登場しました。2015 年頃から 2022 年にかけて、その BI バンドルのインフラ層が引き出され、専用に作られたインフラへと変わりました。計算は Big 5 へ。取り込みは Fivetran へ。変換は dbt へ。BI ツールに残されたのは、可視化、インタラクティブな分析インターフェース、セマンティック定義(時に!)、アイデンティティとアクセス管理、そして Web ホスティングでした。ウェアハウジング Big 5 ELT 抽出 ロード 変換 BI その他すべて そのアンバンドリングが残したものが、今日私たちが知る BI ツールであり、チャートはその最大の部分です。チャートが UI に残ったのには十分な理由があります。ほとんどの人にとって、クリックする方が YAML を書くより速いからです。しかし、ますます多くのチャートは人間によって作られなくなります。あらゆるもののフロントエンドとユーザーがますますチャットエージェントになるにつれ、この選好は反転します。エージェントはコード、SQL、Git に堪能で、他人の UI では不器用です。だからチャートはエージェントが働く場所、つまりコードへ移る必要があります。今日、私たちは BI のアンバンドリングの次の一歩を踏み出します。dbt Charts をオープンソース化し、チャートを BI ツールから取り出してコードに置きます。具体的には、完全なインタラクティブダッシュボードをひとつの監査可能な YAML ファイルで宣言できる新しい構造化 YAML 言語です。エージェントと自由にチャットし、それが作るものはコードの自由を持ちながら、読みやすいままです。ウェアハウジング Big 5 ELT 抽出 ロード 変換 新しい C チャート BI いくつかの部分 dbt Charts では、SQL はどのデータを見たいかを宣言する言語であり続け、それを YAML で包んでどのように見たいかを宣言します。私たちは言語をいくつかの核となる拡張可能な要素に蒸留するのに長い時間を費やしました。表現できることにおいて深く、整理と読解が容易です。YAML が包むのは SQL だけではありません。Markdown が文章を担い、dbt と同様に Jinja が変数とマクロを担います。小さな例を示します。ひとつの変数(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 そのファイルがボード全体です。CLI は任意のボードファイルを静的 SVG に、あるいは HTML、PNG、PDF、さらにはターミナルに、あなたのラップトップ上でも CI でもレンダリングし、それらをフォルダごとサイトとして配信します。dct render charts/documents.yml --format svg # または html、png、pdf、terminal dct serve これらのわずかな要素は深く広がります。今日では 1,100 を超える設定オプションがあります…