Databricks Unity Catalog メトリクス ビューをAI/BIダッシュボードやGenieで使ってみる


# 導入

Databricks Unity Catalogにメトリクスビューが導入されました。

https://qiita.com/taka_yayoi/items/0b57f38c05b2c4720ed1

こちら、昨年のData+AI Summitで発表された[Unity Catalog Metrics](https://www.databricks.com/blog/whats-new-databricks-unity-catalog-data-ai-summit-2024)のこと・・・ですよね。
発表を聞いていて、かなり欲しい機能だと思っていたのですが、いよいよ実装されました。

上記記事内で使い方は解説されており、私もキャッチアップのためにメトリクスビューの作成＆Databricks GenieやAI/BIだっしゅぼーどでの利用をしてみたいと思います。

# メトリクスビューを作る

以前の記事中で作成したダミーの販売データを使ってみます。

https://qiita.com/isanakamishiro2/items/e2747f35e88eb6f784d6#%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%83%80%E3%83%9F%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%BA%96%E5%82%99%E3%81%99%E3%82%8B

以下のようなテーブルです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/c98b8eab-dd0a-4ca1-b11d-6796caa87472.png)


カタログエクスプローラから、メトリクスビューを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/e5c43542-46c5-4d2d-b42a-695ed7babb2c.png)

ここでデフォルトのメトリクス定義(YAML形式)の編集画面が表示されるはずなのですが、エラーぽいメッセージが記載さるのみ。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/8dce776c-909d-49ed-9727-f70cd123cd40.png)

原因不明なのですが、定義自体は問題なく編集できるので[公式ドキュメントのサンプル](https://docs.databricks.com/aws/ja/metric-views/)を基に以下のように修正。

```yaml
version: 0.1

source: training.llm.sales_sample

dimensions:
  # 4月から会計年度が始まると仮定
  - name: 年度
    expr: "CASE
      WHEN month(`売上日`) in (1, 2, 3) then year(`売上日`) + 1
      ELSE  year(`売上日`) END"

  - name: 年月
    expr: "year(`売上日`) || '-' || month(`売上日`)"

  - name: 商品
    expr: "`商品コード`"

  - name: 部門
    expr: "`部門コード`"

measures:
  - name: 売上件数
    expr: COUNT(1)

  - name: 売上金額合計
    expr: "ROUND(SUM(`金額`), 1)"

  - name: 売上数量合計
    expr: "SUM(`数量`)"

  - name: 平均単価
    expr: "ROUND(SUM(`金額`) / SUM(`数量`), 1)"
```

以下のようなメトリクスビューが出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/ffbe4bea-d924-481f-8357-a9b575105e03.png)

今のところ、AI Assistantを利用した説明文やコメントの生成はUIから出来ない模様。

SQLエディタを開き、簡単にクエリを実行してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/73d8944e-c10d-4e24-8825-40631e94db63.png)

通常のビューのように結果を取得できました。
なお、メジャーについてはMEASURE関数で列をラップしないとエラーになります。

# Genieで使ってみる

では、Databricks Genieからも使ってみましょう。

といっても、通常のビューと利用方法は同じです。
メトリクスビューをカタログエクスプローラで開いている状態から、作成→Genieスペースでメトリクスビューを対象としたGenieスペースが作成できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/7139ce7a-0883-4ab6-bc37-8e64036b8c1b.png)

サンプル質問も、ディメンションとメジャーを加味して作ってくれる模様。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/a2505ba8-174b-4b43-81d5-e842332f29cd.png)

試しに年月別の売上金額を集計。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/436d1c88-379a-4a83-93b9-4c0a7ad6f6ae.png)

意図的にディメンション名とは異なる表現で質問。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/e8c61c30-d936-4584-ab2a-7fc71eba4a98.png)

正しいディメンジョン・メジャーが使われていますね。
メタデータをメンテすれば、より適切な回答を得られやすくもなりそうですね。

# AI/BI ダッシュボードで使ってみる

ダッシュボードでも使ってみます。
といっても、こちらも表面上は通常のビューを利用するのと同じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/b20b89aa-7a7e-4080-883f-5903e2491c04.png)


データビューは、通常のテーブルやビューと異なり、ディメンションとして設定されている内容が結果テーブルで表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/709bfde4-e6e5-4d79-8112-74861d20e391.png)

スキーマ表示は、ディメンション（フィールド）とメジャーが分けて表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/56bf4309-25da-43dd-b3c1-2704c099fbb4.png)

Canvasビューでは、一部の可視化でディメンションのみ指定できる箇所と両方指定できる箇所の制御が入っているようです。
例えば、ヒートマップのX軸/Y軸はディメンションしか設定できませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/28f6ee10-7534-4dea-ab8c-cc36198e9ce8.png)

テーブルも表示できるのはディメンションだけになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168727/48ad83e9-1822-4378-9687-87f8dbbf1033.png)

特にテーブルはこれだと不便なので、やがて改善される気がします。
（素直にピボットを使えという話かもしれませんが）

# まとめ

軽くですが、Databricks Unity CatalogのメトリクスビューをGenieやダッシュボードで利用してみました。
昨年のData+AI Summitで目を付けていた機能だったのでとても嬉しいです。
これがDatabricksなりのセマンティックレイヤーに対するひとつの回答なのかなという気もしています。

現状まだいくつか制約があり、例えばDelta Sharingには対応していません。PowerBIなど外部ツールとの連携でDelta Sharingを使うこともあるため、このあたりは早く対応されることを願っています。

企業においてはこういった週次集計の定義は揺らぐことも多い（集計する人によって結果が変わる問題）ので、共通メトリクスを定義できるメトリクスビューは積極的に活用していきたいですね。

<br>

しかし、Data+AI Summit 2025が近づいていることもあってリリース内容が増えており、キャッチアップにかける時間が増えてきています。。。（最近は記事作成後回しでキャッチアップに時間を取ってます）
何かと忙しい状態なのですが、何とかアウトプットとインプット、両方頑張っていきたいと思います。