dbt Cloudにおける新機能「エクスポート」の紹介と可能性

今回の記事では、dbt Cloudにまもなく登場するエキサイティングな新機能、「エクスポート機能」に焦点を当てます。この機能はデータウェアハウス内でのメトリクス管理に革命をもたらす可能性があり、データ分析の効率と精度を飛躍的に向上させることが期待されます。

エクスポート機能とは何か

エクスポート機能は、セマンティックレイヤークエリを活用して、データウェアハウス内で直接メトリクスをテーブルに構築する新しい方法です。これにより、従来の手法では難しかった高度なデータ分析やメトリクスの管理が可能になります。dbt Cloudにおいては、この機能がユーザーの手に届くまで数週間を要すると予測されています。
既にdbt Core1.7のバージョンの際にsaved_queryという仕様が公開されました。
ただ現行の仕様ではこれが一体なんの役に立つのか不明確でした。
この仕様に以下のような提案が今回入りました。新たな変更が加えられ以下のように設定をするとセマンティックモデルを通じて集計されたデータが特定のテーブルに格納される機能が追加されるようです。

コミュニティの議論と期待

dbt コミュニティでは、特に metrics.calculate() マクロを用いたレポート作成の限界やその移行について懸念が示されていました。エクスポート機能は、これらの問題に対応し、より柔軟なメトリクス管理を実現することが期待されています。ユーザーは、保存されたクエリオブジェクトをdbt DAGの一部として実行することが可能になります。

saved_queryの詳細とその可能性

savde_queryは、YAML形式で定義され、APIやdbt Cloudを通じてエクスポートされます。これにより、データの管理とアクセスが容易になり、セマンティックオブジェクト(メトリクス、次元、エンティティ)の消費に対するガバナンスが拡張されます。
saved_qurey自体は2段階の処理から構成されます。
まずMetficflowとしてsavde_query対応がされました。Metricflowとしてのsaved_queryとはCLIで実行するmf queryのパラメーターを名前をつけて事前定義しておける機能という位置づけです。dbt-coreとしてはそのフォーマットを解釈し、エクスポートの設定フォーマットに対応をした、という構成になっています。
dbt Cloudはsaved_queryを新しいノードタイプとして認識し、DAGの一部として実行順番の管理と最終的にmf queryを実行し、それを指定の場所に書き込むことを行ってくれるという風に捉えられそうです。
これまでセマンティックレイヤーやBI側のインテグレーションを強く求めるような組み込み方しかなかったのですが、このsaved_queryとそのエクスポート機能により特定のBIに依存することなくメトリクスやセマンティックモデルの管理はdbtにまかせつつ、セマンティックレイヤーの恩恵を得られるようになります。
 
dbt LabsのNickはこの機能の登場を以下のように表現しています。
💡
セマンティック・レイヤーでエクスポートをサポートする予定であるという最新情報を共有したい。 まず、エクスポートとは何か?エクスポートとは、データウェアハウスのセマンティック層のクエリからテーブルを作成する方法です。Metrics.calculate()のようなものです。 セマンティックレイヤーは、ダウンストリームのアナリティクスやBIツールで動的に使用されるときに最も力を発揮すると私たちは信じています。データ利用者が使用するすべてのデータ・ツールとのファーストクラスの統合を構築することは、非常に大きな課題です!しかし、それを完全に実現するには何年もかかるだろう。短期的には、私たちはセマンティックレイヤーがメトリックの定義をうまく統一することを望んでおり、エクスポートがそのビジョンへのギャップを埋める重要な役割を果たすことを理解しています。 エクスポートは未来ではなく、未来への架け橋です。エクスポートによって、セマンティック・レイヤーを使用して、正しい定義を持つメトリックスとディメンジョンを含むテーブルをプログラム的に構築することができるようになりますが、残念ながらエクスポートは、現在のメトリックスで経験しているのと同じ問 題を繰り返します。また、セルフサービス・インタフェースを公開することもなく、下流のツールでクエリを実行したときに、不正確なメトリック定義につながる可能性があります。 しかし、エクスポートにはいくつかの利点がある。Metabase、Looker、Sigmaなど、現在ファーストクラスで統合していないツールの統合パスを提供してくれる。最も重要な低レイテンシーのユースケースをサポートするために、特定の粒度へのメトリクスの事前実体化を可能にします(これを不要にするためにキャッシュに取り組んでいます!)。また、過去のメトリクス値の記録を保持するためにスナップショットを取ることができます。 (中略) このトピックに関するコミュニティからのフィードバックに感謝します!エクスポートの使用にご興味のある方は、ぜひご連絡ください。皆様のフィードバックをもとに機能を構築し、実装が成功するようお手伝いさせていただきます。

今後の展望と計画

dbt Labsは、将来的にCSVダウンロードやS3バケットへのアップロードなど、他のターゲットへのエクスポートも計画しています。これにより、より多様なデータの活用方法が提供され、データウェアハウス以外のターゲットとの統合も容易になりそうです。
 
このsaved_queryの仕組みとはとてもシンプルです。BigQuery上のテーブルに最終的に格納されたり、API経由で取得できるようなI/Fが誕生しだすとデータ分析はもちろんのこと、プロダクトやMLといった製品に対して提供ができる可能性が広がっていると思います。
 
saved_query自体はMetricflowの機能なためdbt Cloud以外の利用において何らかの機構を通してAPIで利用する手法やキャッシング等のCubeが先行している機能が拡充されていく可能性も多いにありそうです。

結論

dbt Cloudの「エクスポート」機能は、データウェアハウス内でのメトリクス管理を根本的に変える可能性を持っています。今までdbtまでは活用できていましたが、セマンティックレイヤーの恩恵を受け取りづらくいま一歩取り組みに熱量と関心を持てなかった人も可能性を感じることができるようになったと思います。この機能を活用することで、データ分析の効率と精度が大きく向上し、データを中心とした意思決定をより容易にすることができるでしょう。
このエントリーをはてなブックマークに追加