メインコンテンツまでスキップ

メトリクスビューの作成

Catalog Explorerは、メトリクスビューを作成するための視覚的なインターフェースを提供します。YAML定義を記述することなく、フィールドとメジャーを対話的に定義します。

このページでは、カタログエクスプローラUIでのメトリクスビューの構築について説明します。結合と高度な測定値を含むより複雑な例については、チュートリアル: 結合とデータモデリングを使用してメトリクスビューを構築するをご覧ください。

前提条件

メトリックビューを作成する前に、次の権限があることを確認してください。

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

注記

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

メトリクスビューの作成

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

  • UIエディター : UI tab で、コードを記述せずにフィールドとメジャーをインタラクティブに定義します。
  • YAML エディター : 定義を直接編集するには、<> ボタンをクリックしてください。構文については、メトリクスビュー YAML 構文リファレンスを参照してください。SQL ステートメントで YAML 定義を使用してメトリクスビューを作成することもできます。YAML と SQL の両方での完全な例については、SQL または YAML でメトリクスビューを定義するを参照してください。
  • Genie Code :エディターの右上隅にあるSparkle genieコードアイコン。ボタンからGenie Codeを開き、自然言語でやりたいことを記述します。「Genie Codeの使用」を参照してください。

以下のステップでは、すべてのワークスペースで利用可能な UI tabとsamples.tpch.ordersテーブルを使用して、販売アナリティクス用メトリクスビューの例を構築します。完成したメトリクスビューは、SQLまたはYAMLでメトリクスビューを定義の定義と一致します。このデータセットの詳細については、サンプルデータセットを参照してください。

ステップ1: メトリクスビューを作成し、エディターを開きます

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

エディターは「UI」tabで開きます。 エディターはすべてのソース列を自動的に「Fields」tabに追加し、サンプル COUNT(*)メジャーを追加します。

Catalog Explorer のメトリクスビュー編集インターフェース。

ステップ 2: 結合を追加する

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

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

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

ステップ3:フィルターを定義する

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

Builderまたはカスタムで式を入力します

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

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

以下のステップでは、シンプルな列のフィルタリング、変換、集計には ビルダー を使用し、ビルダーでは構成できない式(CASEステートメントや複合測定値など)には カスタム を使用します。

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

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

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

ステップ 4: フィールドを追加します

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

  • ビルダー : コンテキストに応じたドロップダウンから選択し、エディターがSQL式を作成します。利用可能な選択肢は、列のタイプと値に基づいて変更されます。
  • カスタム :SQL式を直接入力してください。

続くステップでは、各式の複雑さに基づいて2つのオプションを切り替えます。シンプルな列変換と集計には Builder を使用し、Builderが構成できない式には Custom に切り替えます。たとえば、CASEステートメントや構成されたメジャーなどです。

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

エディターは、すべてのソース列を Fields tabに自動的に追加します。例と一致させるには、不要な列を削除し、source.o_orderdatesource.o_orderstatuscustomer.c_mktsegmentのみが残るようにします。

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

  1. Fields tabをクリックします。
  2. 削除するフィールドを選択するには、フィールド名の左側にあるチェックボックスをクリックしてください。
  3. 削除 をクリックします。

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

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

  • 表示名 :説明ラベル。
  • コメント :フィールドの説明です。
  • 同義語 :AIツールがフィールドを発見するのに役立つ代替名。同義語を参照してください。
  • 書式 : 値の表示方法を制御するカスタムデータ書式設定。書式設定は、数値、日付、および日時の列でのみ利用可能です。書式仕様を参照してください。
  • 管理タグ : 分類とガバナンスのための管理タグです。

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

各フィールドを定義するには、 Fields tabでその名前をクリックし、その式を構築し、オプションのコメントを追加します。変換を実行し、結果を表示するには、再生アイコン プレビュー をクリックします。

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

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

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

ステップ 5: メジャーを追加

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

メジャーを編集する際、フィールド で利用可能なメタデータと同じく、「**表示名**」、「**コメント**」、「**類義語**」、「**フォーマット**」、および「**管理タグ**」も追加できます。

各測定値を追加するには、 [測定値] tabで + をクリックし、その式を作成して、オプションのコメントを追加します。集計を実行して結果を表示するには、再生アイコン [プレビュー] をクリックします。測定値を追加すると、Genieの提案が測定値エディターペインの上部に表示されます。提案をクリックして、その測定値を作成します。

  1. 注文数 : ビルダー で、 カウント 集計を選択して COUNT(1) を生成します。コメント Total number of orders を追加します。
  2. 合計収益Builder で、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 でメトリクスをプレビューします。

移動平均や累積合計などの時系列計算のためのウィンドウメジャーを追加するには、メジャーの編集中に + Window をクリックします。ウィンドウメジャーを参照してください。

ステップ6:メトリクスビューを保存

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

SQLまたはYAMLでメトリクスビューを定義します。

UIでメトリクスビューを作成する代わりに、YAMLで直接定義するか、またはWITH METRICS句を含むCREATE VIEWステートメントを使用してSQLで定義できます。以下はサンプルメトリクスビューの完全な定義です。samples.tpch.orderssamples.tpch.customerが結合され、注文月、注文ステータス、顧客市場セグメントのフィールド、および注文数、総収益、顧客あたりの収益のメトリクスを備えた、フィルタリングされたビューです。

注記

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

YAML 定義

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 でメトリクスビューを作成するには、YAML 定義を WITH METRICS 句のある CREATE VIEW ステートメントで囲み、YAML を $$ デリミターで挟みます。

SQL ステートメントを表示する

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"
$$

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

適用対象: Databricks Runtime 18.2以降(YAML仕様1.1の場合)

すべてのフィールドをリストする代わりに、exprでワイルドカードを使用して、ソースまたは結合されたテーブルからすべての列をインポートできます。これは、メトリクスビューがアップストリーム アセットからすべての列を公開するようにしたい場合に役立ちます。Databricks は各列名をソースから導出するため、ワイルドカードのnameを省略します。ワイルドカードと明示的に定義されたフィールドおよびメジャーを混在させることができます。

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

YAML
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 Codeを使用します

Genie Codeは、エディターの右上隅にあるSparkle genieコードアイコン。ボタンから開くAIアシスタントです。自然言語でやりたいことを記述すると、Genie Codeがメトリクスビューの定義を更新します。Genie Codeはコンテキストを認識します。 UI tabではエディターを更新し、YAMLエディターではYAMLを挿入します。

既存のメトリクスビューに単一のメジャーを追加するには、次のように記述します。

プロンプト

これを行うには、Genie Code (エージェントモード) に指示してください。

add an average sales per customer measure

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

プロンプト

これを行うには、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.

追加のリソース

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