メトリック ビューを作成する

カタログ エクスプローラーには、 メトリック ビューを作成するためのビジュアル インターフェイスが用意されています。 フィールドとメジャーを、YAML 定義を書かずに対話的に定義できます。

このページでは、カタログ エクスプローラー UI でメトリック ビューを作成する手順について説明します。 結合と高度なメジャーのより複雑な例については、「 チュートリアル: 結合とデータ モデリングを使用してメトリック ビューを構築する」を参照してください。 既存の Tableau またはPower BIアセットに基づいてメトリック ビューを作成するには、「Genie Code を使用して Tableau または Power BI ファイルをインポートする」を参照してください。

前提条件

メトリック ビューを作成する前に、次のアクセス許可があることを確認します。

  • SELECT ソースとして使用される テーブルに似た資産 または SQL クエリに対する特権。
  • スキーマ内でメトリック ビューを作成できるように、CREATE TABLE および USE SCHEMA の特権を設定します。
  • USE CATALOG 親カタログに対する権限。
  • CAN USE Databricks Runtime 17.3 以降を実行している SQL ウェアハウスまたはその他のコンピューティング リソースに対するアクセス許可。

メタストア管理者またはカタログ所有者は、これらすべての特権を付与できます。 MANAGE権限を持つスキーマ所有者またはユーザーは、スキーマに対するUSE SCHEMAおよびCREATE TABLE権限を付与できます。

Note

メトリック ビューの作成は、Databricks Runtime 16.4 以降でサポートされています。 このページでは、Databricks Runtime 17.3 以降を必要とする機能を使用するため、この例では 17.3 が最小です。 個々の YAML 機能には、後でランタイムが必要な場合があります。 各機能の最小ランタイムについては、 メトリック ビューの機能の可用性に関する記事を参照してください。

メトリック ビューを作成する

次のいずれかの方法を使用して、カタログ エクスプローラーでメトリック ビューを作成します。

次の手順では、 UI タブと samples.tpch.orders テーブルを使用して、すべてのワークスペースで使用でき、売上分析メトリック ビューの例を作成します。 完成したメトリック ビューは、「 SQL または YAML でメトリック ビューを定義する」の定義と一致します。 このデータセットの詳細については、「 サンプル データセット」を参照してください。

手順 1: メトリック ビューを作成し、エディターを開く

  1. [データ] アイコンをクリックします。ワークスペースサイドバーのカタログ
  2. 検索バーを使用して samples.tpch.ordersを検索し、テーブル名をクリックします。
  3. [ 作成>メトリック ビュー] をクリックします。 [ メトリック ビューの作成 ] ダイアログで、名前を入力し、カタログとスキーマの変換先を選択して、[ 作成] をクリックします。

エディターが UI タブで開きます。エディターでは、すべてのソース列が [フィールド] タブに自動的に追加され、サンプル COUNT(*) メジャーが追加されます。

カタログ エクスプローラーのメトリック ビュー編集インターフェイス。

手順 2: 結合を追加

この例では、顧客属性をフィールドとして使用できるように、 customer テーブルを結合します。 結合を追加するには、エディターの右上隅にある結合ボタンをクリックします。

  1. ソースを結合するには、 samples.tpch.customer を選択し、[ 追加] をクリックします。
  2. customerとして「」と入力します。
  3. ドロップダウンを使用して、結合条件を source.o_custkey = customer.c_custkeyに設定します。 複数の結合列を追加するには、[ + 結合キー] をクリックします。 等値以外の条件を設定するには、[ ] をクリックして条件を絞り込みます。
  4. 結合カーディナリティ で、多対一 を選択します。 カーディナリティの選択については、結合カーディナリティを参照してください。
  5. [クエリ パフォーマンス] で [最大1件の一致] を選択します。 各注文は最大 1 人の顧客と一致するため、この最適化は安全であり、YAML 定義に at_most_one_match: true 設定されます。
  6. 参加 をクリックします。
  7. [ フィールドの追加 ] ダイアログで、[ すべての列の追加 ] をクリックして、ソース テーブルからすべての列を動的にインポートします。 代わりに個々の列を追加する場合は、この手順 をスキップ します。 結合されたオブジェクトのフィールドがドロップダウンに表示され、ソースのフィールドが表示されます。

結合は、ソース テーブルを他のテーブルまたはクエリと結合します。 スター スキーマやスノーフレーク スキーマ、YAML パターンなど、結合モデリングの概念については、「 結合の操作」を参照してください。

手順 3: フィルターを定義する

このページの後の完全な YAML 定義 には、メトリック ビューを 1990 年 1 月 1 日以降の注文に制限するフィルターが含まれています。

Builder または Custom を使用して式を入力する

フィルター、フィールド、またはメジャーを定義するときは、[式] セクションの 2 つのオプションのいずれかを使用して を設定します。

  • ビルダー: コンテキスト対応のドロップダウンから選択すると、エディターによって SQL 式が作成されます。
  • カスタム: SQL 式を直接入力します。

次の手順では、単純な列のフィルター処理、変換、集計に Builder を使用し、ビルダーが作成できない式 (ステートメントや構成済みメジャーなど) のCASEを使用します。

フィルターを定義するには:

  1. メトリック ビュー エディターの右上隅にあるフィルター アイコンフィルターをクリックします。
  2. フィルター式を設定します。
    • Builder で、Columnsource.o_orderdateOperatorGreater than選択します。
    • [カスタム] で、SQL 式のsource.o_orderdate > '1990-01-01'を記述します。

フィルターは、メトリック ビューを参照するすべてのクエリに適用されます。 フィルター モデリングの概念と YAML パターンについては、「 フィルターの適用」を参照してください。

手順 4: フィールドを追加する

フィルター、フィールド、またはメジャーを定義するときは、[式] セクションの 2 つのオプションのいずれかを使用して を設定します。

  • ビルダー: コンテキスト対応のドロップダウンから選択すると、エディターによって SQL 式が作成されます。 使用可能な選択肢は、列の種類と値に基づいて変わります。
  • カスタム: SQL 式を直接入力します。

次の手順では、各式の複雑さに基づいて 2 つのオプションを切り替えます。 単純な列変換と集計には Builder を使用し、ステートメントや構成済みメジャーなど、Builder で作成できない式のCASE に切り替えます。

この例では、ソースから変換された 2 つの列と結合された customer テーブルの 1 つの列という 3 つのフィールドを定義します。 ディメンションとも呼ばれるフィールドは、通常のテーブル列のように動作します。 フィールドには、グループ化とフィルター処理に使用されるカテゴリ列、またはクエリ時に集計できる集計されていない数値列を指定できます。 モデリング フィールドの詳細については、「 フィールド」を参照してください。

エディターは、すべてのソース列を [ フィールド] タブに自動的に追加します。 この例と一致するには、必要のない列を削除して、 source.o_orderdatesource.o_orderstatuscustomer.c_mktsegment のみを残します。

フィールドを削除するには:

  1. [ フィールド ] タブをクリックします。
  2. フィールド名の左側にあるチェック ボックスをオンにして、削除するフィールドを選択します。
  3. [削除] をクリックします。

個々のフィールドを削除するには、フィールド名の右側にある Kebab メニュー アイコン を使用します。

フィールドを編集するときに、メタデータを追加することもできます。

  • 表示名: わかりやすいラベル。
  • コメント: フィールドの説明。
  • 類義語: AI ツールがフィールドを検出するのに役立つ代替名。 シノニムを参照してください。
  • 書式: 値の表示方法を制御するカスタム データの書式設定。 書式は、数値、日付、および datetime 列でのみ使用できます。 形式の 仕様を参照してください。
  • 管理タグ: 分類とガバナンスのための 管理タグ

メトリック ビュー UI のフィールド エディター。

各フィールドを定義するには、[ フィールド ] タブでその名前をクリックし、式を作成して、オプションのコメントを追加します。 変換を実行して結果を表示するには、[ Play IconPreview] をクリックします。

  1. 注文月: [ビルダー] をクリックします。 次に、 source.o_orderdate を選択し、月変換を適用して DATE_TRUNC('MONTH', source.o_orderdate)を生成します。 コメント Month of orderを追加します。

  2. 注文の状態: [ カスタム] をクリックします。 次に、コメント Status of order を追加し、次の式を入力します。

    CASE
      WHEN source.o_orderstatus = 'O' THEN 'Open'
      WHEN source.o_orderstatus = 'P' THEN 'Processing'
      WHEN source.o_orderstatus = 'F' THEN 'Fulfilled'
    END
    
  3. 市場セグメント: ビルダーで、結合されたcustomer.c_mktsegmentテーブルからcustomer列を選択します。 コメント Customer market segmentを追加します。

ステップ 5: 指標を追加する

この例では、3つの指標を定義します。 メジャーとは、総収益や注文数などのビジネス指標を算出する集計式です。 エディターは、 COUNT(*) メジャーを自動的に追加します。編集または削除できます。

メジャーを編集するときに、フィールドで使用できるのと同じメタデータである表示名コメントシノニム書式および管理タグを追加することもできます。

各メジャーを追加するには、[ メジャー ] タブの [ +] をクリックし、式を作成して、オプションのコメントを追加します。 集計を実行して結果を表示するには、[ Play IconPreview] をクリックします。 メジャーを追加すると、Genie の候補がメジャー エディター ウィンドウの上部に表示されます。候補をクリックして、そのメジャーを作成します。

  1. 注文数: ビルダーで、[ カウント ] 集計を選択して COUNT(1)を生成します。 コメント Total number of ordersを追加します。
  2. 合計収益: ビルダーで、 source.o_totalprice合計 集計を選択して、 SUM(source.o_totalprice)を生成します。 コメント Sum of all order pricesを追加します。
  3. 顧客ごとの合計収益: [カスタム] に「 SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)」と入力します。 コメント Average revenue per unique customerを追加します。

メトリック ビュー UI で指標をプレビューします。

移動平均や実行合計などの時系列計算のウィンドウ メジャーを追加するには、メジャーの編集中に [ + ウィンドウ ] をクリックします。 「ウィンドウの寸法」を参照してください。

手順 6: メトリック ビューを保存する

保存 をクリックします。 完成したメトリック ビューは、「 SQL または YAML でメトリック ビューを定義する」の定義と一致します。

SQL または YAML でメトリック ビューを定義する

UI でメトリック ビューを構築する代わりに、CREATE VIEW句で WITH METRICS ステートメントを使用して、YAML または SQL で直接定義できます。 メトリック ビューの例の完全な定義を次に示します。 これは、samples.tpch.orderssamples.tpch.customer に結合したフィルター済みビューで、注文月、注文ステータス、顧客の市場セグメントのフィールドと、注文数、総収益、顧客当たりの収益のメジャーがあります。

Note

これらの例では、 fields キーワードを使用します。 低コード エディターでメトリック ビューをビルドすると、生成される YAML では、代わりに同等の dimensions キーワードが使用されます。 「フィールド」を参照してください。

YAML 定義

メトリック ビューを YAML で直接定義するには、次の定義を使用します。

YAML 定義を表示する
version: 1.1
comment: 'Orders KPIs for sales analysis'
source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    'on': source.o_custkey = customer.c_custkey
    rely:
      at_most_one_match: true

filter: source.o_orderdate > '1990-01-01'

fields:
  - name: Order Month
    expr: DATE_TRUNC('MONTH', source.o_orderdate)
    comment: 'Month of order'

  - name: Order Status
    expr: |-
      CASE
        WHEN source.o_orderstatus = 'O' THEN 'Open'
        WHEN source.o_orderstatus = 'P' THEN 'Processing'
        WHEN source.o_orderstatus = 'F' THEN 'Fulfilled'
      END
    comment: 'Status of order'

  - name: Market Segment
    expr: customer.c_mktsegment
    comment: 'Customer market segment'

measures:
  - name: Order Count
    expr: COUNT(1)
    comment: 'Total number of orders'

  - name: Total Revenue
    expr: SUM(source.o_totalprice)
    comment: 'Sum of all order prices'

  - name: Total Revenue per Customer
    expr: SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)
    comment: 'Average revenue per unique customer'

YAML 構文の詳細については、 メトリック ビューの YAML 構文リファレンスを参照してください

SQL ステートメント

SQL でメトリック ビューを作成するには、CREATE VIEW 句を使用して WITH METRICS ステートメントで YAML 定義をラップし、YAML を$$区切り記号の間に配置します。

SQL ステートメントを表示する
CREATE OR REPLACE VIEW orders_metric_view WITH METRICS LANGUAGE YAML AS
$$
  version: 1.1
  comment: "Orders KPIs for sales analysis"
  source: samples.tpch.orders

  joins:
    - name: customer
      source: samples.tpch.customer
      'on': source.o_custkey = customer.c_custkey
      rely:
        at_most_one_match: true

  filter: source.o_orderdate > '1990-01-01'

  fields:
    - name: Order Month
      expr: DATE_TRUNC('MONTH', source.o_orderdate)
      comment: "Month of order"

    - name: Order Status
      expr: |-
        CASE
          WHEN source.o_orderstatus = 'O' THEN 'Open'
          WHEN source.o_orderstatus = 'P' THEN 'Processing'
          WHEN source.o_orderstatus = 'F' THEN 'Fulfilled'
        END
      comment: "Status of order"

    - name: Market Segment
      expr: customer.c_mktsegment
      comment: "Customer market segment"

  measures:
    - name: Order Count
      expr: COUNT(1)
      comment: "Total number of orders"

    - name: Total Revenue
      expr: SUM(source.o_totalprice)
      comment: "Sum of all order prices"

    - name: Total Revenue per Customer
      expr: SUM(source.o_totalprice) / COUNT(DISTINCT source.o_custkey)
      comment: "Average revenue per unique customer"
$$

ワイルドカードを使用してフィールドとメジャーを一括インポートする

適用対象: YAML 仕様 1.1 を使用した Databricks Runtime 18.2 以降

すべてのフィールドを一覧表示する代わりに、 expr でワイルドカードを使用して、ソーステーブルまたは結合テーブルからすべての列をインポートできます。 これは、メトリック ビューでアップストリームアセットのすべての列を公開する場合に便利です。 Azure Databricksはソースから各列名を派生させるので、ワイルドカードのnameを省略します。 ワイルドカードを、明示的に定義されたフィールドやメジャーと組み合わせることができます。

次の定義では、ソースから 1 つを除くすべてのフィールドをインポートし、結合された customer テーブルからフィールドを追加し、明示的なメジャーを定義します。

version: 1.1
source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    'on': source.o_custkey = customer.c_custkey

fields:
  - expr: source.* EXCEPT (o_comment)
  - name: Market Segment
    expr: customer.c_mktsegment

measures:
  - name: Order Count
    expr: COUNT(1)

結合テーブル (customer.*) からすべての列をインポートする、構造体の拡張、名前の競合を解決するなど、完全なワイルドカード構文については、「ワイルドカードを使用した フィールドとメジャーの一括インポート」を参照してください。

Genie コードを使用する

Genie Code は AI アシスタントであり、エディターの右上隅にある [スパークル genie コード] アイコン から開きます。 自然言語で必要なものを記述すると、Genie Code によってメトリック ビューの定義が更新されます。 Genie Code はコンテキストに対応しています。 UI タブではエディターが更新され、YAML エディターでは YAML が挿入されます。

既存のメトリック ビューに1つのメジャーを追加するには、それを指定します。

Tip

Genie Code (エージェント モード) にこれを行うように指示します。

add an average sales per customer measure

自然言語の説明から完全なメトリック ビューを作成するには、Genie Code に説明します。 結果は、このページの のような定義になります。正確なフィールド名とコメントは異なる場合があります。

Tip

Genie Code (エージェント モード) にこれを行うように指示します。

Create a metric view on samples.tpch.orders joined to samples.tpch.customer on o_custkey = c_custkey. Add a field for order month by truncating the order date to the month, a field for order status that maps 'O' to Open, 'P' to Processing, and 'F' to Fulfilled, and a field for the customer market segment. Add measures for the total number of orders, the total revenue as the sum of order price, and the total revenue per unique customer. Filter to orders placed after January 1, 1990.

Tableau または Power BI ファイルをインポートしてメトリック ビューを作成することもできます。 Genie Code を使用して Tableau または Power BI ファイルをインポートするを参照してください。

その他のリソース

メトリック ビューを作成したら、次のリソースを使用して、作業のクエリ、モデル化、管理を行います。