DatabricksのMetric Viewを定義してAI/BI Dashboardから参照してみた

DatabricksのMetric Viewを定義してAI/BI Dashboardから参照してみた

2026.04.14

さがらです。

DatabricksのUnity Catalogには、Metric Viewという機能があります。ビジネスメトリクスをカタログ上で一元定義し、ダッシュボードやGenie Spacesなど複数のツールから再利用できるオブジェクトです。

https://docs.databricks.com/aws/en/metric-views/

先日公開したAI/BI Dashboardを試してみた記事の中で、データセット追加時に「Metric viewsも選択できる」という項目を確認していました。今回はこのMetric Viewを実際に定義し、同じsamples.bakehouseデータを使ってAI/BI Dashboardから参照するところまで試してみたので、手順と確認結果をまとめます。

機能概要

Metric Viewは、Unity Catalog上でビジネスメトリクス(売上合計・注文件数など)と分析軸(ディメンション)を一元定義するオブジェクトです。

通常のビューは作成時に集約とディメンションの組み合わせを固定する必要があります。一方Metric Viewはディメンションとメジャーを分離して定義し、クエリ時にどのディメンションでグループ化するかを自由に選択できます。例えば「総売上」というメジャーを一度定義すれば、「商品別」「国別」「月別」と用途に応じて集計軸を変えて参照できます。

定義したMetric ViewはAI/BI Dashboard・Genie Spacesなど複数のDatabricksツールのデータソースとして利用できるため、ダッシュボードごとに個別の集計SQLを書く必要がなくなります。

YAML定義の詳細な構文は以下の公式リファレンスが参考になります。

https://docs.databricks.com/aws/en/business-semantics/metric-views/yaml-reference

制限事項

  • SQLクエリでMetric Viewを参照する場合、メジャー列はMEASURE()関数でラップする必要があります(SELECT *は使用不可)
  • AI/BI Dashboardでデータソースとして直接選択した場合、クエリを修正して列の絞り込みやフィルタを追加することはできません

前提条件

  • Databricks: Free Edition(AWS)
  • 使用データ: samples.bakehouse(Databricks標準搭載のサンプルデータセット)
  • 保存先のカタログ: sagara_catalogというカタログを作成しておき、このカタログにMetric viewを保存していく

事前準備

使用するテーブルの確認

今回Metric Viewのソースとして使用するのは、sales_transactionssales_franchisesの2テーブルです。

テーブル名 使用するカラム
samples.bakehouse.sales_transactions product(商品名)、paymentMethod(支払方法)、totalPrice(金額)、quantity(数量)、dateTime(日時)、franchiseID(フランチャイズID)
samples.bakehouse.sales_franchises franchiseID(フランチャイズID)、country(国)、size(規模)

前回のブログでは、この2テーブルをSQLでJOINするデータセットをダッシュボードごとに定義していました。今回はJOINとメジャー定義をMetric View側に集約します。

(以下、参考までに前回ブログで書いていたmonthly_country_salesのSQL)

SELECT
  DATE_TRUNC('month', t.dateTime) AS month,
  f.country,
  f.size                          AS franchise_size,
  SUM(t.totalPrice)               AS monthly_sales,
  COUNT(*)                        AS transaction_count
FROM samples.bakehouse.sales_transactions t
JOIN samples.bakehouse.sales_franchises f
  ON t.franchiseID = f.franchiseID
GROUP BY DATE_TRUNC('month', t.dateTime), f.country, f.size
ORDER BY month

試してみた

1. Catalog ExplorerからMetric Viewを作成

DatabricksワークスペースのサイドバーでCatalogアイコンをクリックし、検索バーにsales_transactionsと入力します。samples.bakehouse.sales_transactionsを選択してテーブル詳細画面を開きます。

その後、テーブル詳細画面上部のCreateMetric viewを選択します。

2026-04-14_15h15_14

名前・カタログ・スキーマを指定するダイアログが表示されます。以下のように設定してCreateをクリックします。

  • Name: sales_transactions_metric_view ※デフォルトで入力されていた名称
  • Catalog: 任意のカタログ
  • Schema: 任意のスキーマ

2026-04-14_15h17_03

2. Metric ViewのYAML定義

Metric Viewのエディタは、デフォルトでGUI(低コードUI)が表示されます。今回はYAMLで定義したいのでYAMLタブをクリックして切り替えます。

2026-04-14_15h18_21

既存のYAMLの内容を消去し、以下の内容を入力します。sales_transactionsをソースとし、sales_franchisesをJOINして、ディメンションとメジャーを定義しています。

version: 1.1
source: SELECT * FROM samples.bakehouse.sales_transactions
joins:
  - name: franchise
    source: samples.bakehouse.sales_franchises
    'on': source.franchiseID = franchise.franchiseID
dimensions:
  - name: product
    expr: source.product
    display_name: 商品名
  - name: payment_method
    expr: source.paymentMethod
    display_name: 支払方法
  - name: country
    expr: franchise.country
    display_name: 
  - name: franchise_size
    expr: franchise.size
    display_name: フランチャイズ規模
  - name: order_month
    expr: DATE_TRUNC('month', source.dateTime)
    display_name: 売上月
measures:
  - name: total_revenue
    expr: SUM(source.totalPrice)
    display_name: 総売上
  - name: order_count
    expr: COUNT(1)
    display_name: 注文件数
  - name: avg_order_value
    expr: AVG(source.totalPrice)
    display_name: 平均注文金額

YAMLの各要素のポイントは以下の通りです。

  • version: 1.1: display_nameなどのセマンティックメタデータを使用するためのバージョン指定です
  • source: ベーステーブルをSELECT文で指定します。以降の定義でsourceエイリアスで参照できます
  • joins: JOINするテーブルを定義します。on句でJOIN条件を記述し、nameフィールドのエイリアスで参照します
  • dimensions: GROUP BYWHERE句で使う列を定義します。JOINしたテーブルのカラムもfranchise.countryのように参照できます
  • measures: SUMCOUNTAVGなどの集計式を定義します

YAML入力後、Saveをクリックして保存します。バリデーションエラーが出ずに保存されればOKです。

2026-04-14_15h19_42

2026-04-14_15h20_46

3. AI/BI DashboardでMetric Viewをデータセットとして追加

新しいDashboardを作成します。

2026-04-14_15h26_05

ダッシュボードとページの名前を適当に変更した上で、Dataタブを押し、Add datasetをクリックします。

2026-04-14_15h34_23

先ほど作成したMetric Viewを選択し、Addを押します。

2026-04-14_15h36_53

4. ビジュアライゼーションで確認

データセットを追加したら、キャンバスのタブに切り替えてビジュアライゼーションを作成します。

キャンバス下部のAdd a visualizationをクリックし、右ペインでデータセットにsales_transactions_metric_viewを選択します。 ※現時点ではフィールドの選択ではdisplay_nameに書いた日本語名が表示されないため、ご注意ください。

  • Dataset: sales_transactions_metric_view
  • Visualization: Bar
  • X axis: product
  • Y axis: total_revenue ※選択するとMEASURE(total_revenue)と表示されます。

グラフの軸名は、Metric Viewで定義した日本語のdisplay_nameが表示されていることがわかります。

2026-04-14_15h45_21

最後に

DatabricksのMetric Viewを定義し、AI/BI Dashboardからデータセットとして参照できることを確認しました。

Metric Viewの便利な点は、JOINと集計ロジックをカタログ側に一元化できることです。前回のブログではmonthly_country_salespayment_country_summaryなどのデータセット用にそれぞれSQLを書いていましたが、Metric ViewにJOIN定義とメジャーを持たせることで、ダッシュボード側のSQLをシンプルにでき、ロジックの再利用も容易に可能となります。

複数のダッシュボードやGenie Spacesから同じメトリクスを参照するケースでは、Metric Viewによる一元管理を試してみてください。

この記事をシェアする

関連記事