このチュートリアルでは、TPC-H データセットに対して売上分析メトリック ビューを作成します。 最終的には、次のメトリック ビューが表示されます。
- スノーフレーク スキーマを使用して、複数のテーブル間で注文と顧客を結合します。
- 時間、地理、および順序属性のフィールド (ディメンションとも呼ばれます) を定義します。
- 比率、フィルター処理された集計、ウィンドウ メジャーなど、単純なメジャーと複雑なメジャーを計算します。
- コンポーザビリティを活用して、より単純な測定値から複雑なメトリクスを構築します。
- クエリ時に割引率を適用するパラメーターを定義します。
- ダッシュボードと AI ツールの エージェント メタデータ が含まれています。
メトリック ビューを初めて使用する場合は、「 メトリック ビューを作成 する」から基本を学習します。 このチュートリアルでは、その基盤を実際の複雑さに拡張します。
必要条件
このチュートリアルを完了するには、以下が必要です。
- Unity カタログで有効になっているワークスペース。
- Databricks Runtime 17.3 以降を実行している SQL ウェアハウスまたはコンピューティング リソース。
メトリック ビューを作成するために必要な権限の完全な一覧については、「 前提条件」を参照してください。
Note
メトリック ビューの作成は、Databricks Runtime 16.4 以降でサポートされています。 このチュートリアルでは、Databricks Runtime 17.3 以降を必要とする機能を使用します。一部の手順では、後でランタイムが必要になります。 各機能の最小ランタイムについては、 メトリック ビューの機能の可用性に関する記事を参照してください。
データ モデル
TPC-H データセットは、卸売サプライ チェーンをモデル化します。 このチュートリアルでは、スノーフレーク スキーマで結合された 3 つのテーブルを使用します。
-
ordersは、o_custkey = c_custkeyのcustomerに参加します -
customerは、c_nationkey = n_nationkeyのnationに参加します
| 表 | Role | キー列 |
|---|---|---|
orders |
注文処理のファクトテーブル |
o_orderkey、o_custkey、o_totalprice、o_orderdate、o_orderstatus |
customer |
ディメンションテーブル (顧客の詳細) |
c_custkey、c_name、c_mktsegment、c_nationkey |
nation |
ディメンション テーブル (国または地域の参照) |
n_nationkey、n_name、n_regionkey |
手順 1: メトリック ビューを作成し、エディターを開く
このメトリック ビューは、カタログ エクスプローラー UI でビルドしたり、 Genie Code で生成したり、完全な YAML 定義を直接記述したりできます。 3 つのメソッドはすべて、メトリック ビューをモデル化する 1 つの YAML 定義に解決されます。 以降の各手順で、[ カタログ エクスプローラー UI] または[YAML エディター ] タブを選択して、任意の方法に従います。 YAML エディターを使用する場合、各ステップのコード例は、そのステップでビルドした内容に対応する YAML 定義の部分です。
Note
このチュートリアルの YAML の例では、 fields キーワードを使用します。 低コード エディターでメトリック ビューをビルドすると、生成される YAML では、代わりに同等の dimensions キーワードが使用されます。
「フィールド」を参照してください。
メトリック ビューを作成するための UI に慣れていない場合は、「メトリック ビューを 作成する」を参照してください。
メトリック ビューを作成するには、カタログ エクスプローラーで次の手順を実行します。
-
samples.tpch.ordersを検索します。 - テーブル名をクリックします。
- [ 作成>メトリック ビュー ] をクリックし、ビューに名前を付けます。
詳細な作成手順については、「 メトリック ビューの作成」を参照してください。 エディターが開いたら、[ UI ] タブを使用して対話形式でビルドするか、 <> ボタンをクリックして YAML 定義を直接編集します。
手順 2: メトリック ビューを設定する
メトリック ビューのバージョンと説明を設定します。
versionは YAML 仕様のバージョンを決定し、commentは、カタログ エクスプローラーに表示されるメトリック ビューの目的を文書化します。 Azure Databricksはバージョンを管理します。
カタログ ブラウザ ユーザーインターフェース
そのバージョンはあなた向けに定義されています。 メトリック ビューを保存した後に説明を追加または編集するには:
- カタログ エクスプローラーでメトリック ビューを検索し、その名前をクリックします。
- [ 説明] をクリックし、メトリック ビューの説明を入力します。 YAML エディター タブに示されているサンプルの説明を使用できます。
このテキストは、YAML 定義の comment フィールドに対応します。 メトリック ビューを編集する方法の詳細については、「メトリック ビュー の編集」を参照してください。
YAML エディター
version: 1.1
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
手順 3: ソースと結合を定義する
プライマリ ソース テーブルを定義し、関連テーブルを結合します。
-
sourceは、ファクト テーブル (注文) を粒度として設定します。 -
joinsは、多対一のリレーションシップを使用して顧客データを取り込む。 - ネストされた
nation結合は、customerを介して地理データに到達するように結合するスノーフレーク スキーマ パターンを示しています。ここで、国は顧客のサブディメンションです。
カタログ ブラウザ ユーザーインターフェース
この例では、スノーフレーク スキーマをモデル化するために、2 つの結合 ( 多対 1) を追加します。
customer結合を追加するには:
- エディターで、右上隅にある [ 結合 ] をクリックして、[ 結合の追加 ] ダイアログを開きます。
-
samples.tpch.customerを検索し、テーブル名をクリックして、[追加] をクリックします。 - 結合条件を
o_custkey = c_custkeyに設定します。 - 結合カーディナリティ で、多対一 を選択します。 カーディナリティの選択については、結合カーディナリティを参照してください。
次に、入れ子になった nation 結合を追加します。
customer の結合の手順を繰り返し、c_nationkey = n_nationkey で samples.tpch.nation を結合します。 join を customer の下にネストすると、customer のサブディメンションとして国をモデル化します。
完全な結合ダイアログの手順については、「 手順 2: 結合を追加する」を参照してください。
YAML エディター
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
手順 4: フィルターを定義する
filterではソース データが制限され、メトリック ビューのすべてのクエリに適用されます。 このチュートリアルでは、メトリック ビューを最新のデータに制限します。
カタログ ブラウザ ユーザーインターフェース
フィルターを定義するには:
- エディターで、右上隅にある
フィルターをクリックします。
- ドロップダウン メニューを使用して 、列 を
o_orderdate、 演算子 を>=、 値 を1995-01-01に設定します。
フィルターの詳細については、「 手順 3: フィルターを定義する」を参照してください。
YAML エディター
filter: o_orderdate >= '1995-01-01'
手順 5: フィールドを定義する
フィールドは、ユーザーがグループ化してフィルター処理する属性です。 フィールドには、ユーザーがクエリ時に集計するカテゴリ列 (地域や状態など) や、集計されていない数値列 (年齢や数量など) を指定できます。
エージェントメタデータ
このチュートリアルの各フィールドとメジャーには、ダッシュボードと AI ツールでのメトリック ビューの動作を改善する エージェント メタデータ プロパティが含まれています。
-
display_name: 技術的な列名の代わりに視覚化に表示される読み取り可能なラベル。 -
synonyms: Genie などの AI ツールが自然言語クエリを使用してフィールドとメジャーを検出するのに役立つ代替名。 -
format: ダッシュボード、ノートブック、SQL クエリ結果などのダウンストリーム サーフェスに値を表示する方法 (通貨、数値、パーセンテージなど)。
これらのプロパティは省略可能ですが、推奨されます。 フィールドとメジャーの定義は下記の手順でインライン に含まれます。.
フィールド定義
このチュートリアルでは、次の内容を追加します。
-
時間フィールド:
order_date、order_month、およびorder_yearを複数の粒度で使用して、さまざまな分析ニーズをサポートします。 -
変換されたフィールド:
order_statusとorder_priority。ソース コードを読み取り可能なラベルに変換するためにCASEとSPLITを使用します。 -
結合されたフィールド:
customer_name、market_segment、customer_nation。結合されたテーブルは結合名を使用して参照されます。 入れ子になった結合列では、customer.nation.n_nameなどのチェーンドット表記を使用して、スノーフレーク スキーマを走査します。
カタログ ブラウザ ユーザーインターフェース
エディターは、すべてのソース列を [ フィールド] タブに自動的に追加します。 フィールドの編集、名前の変更、削除、追加を行い、メトリック ビューで次の内容を正確に定義できるようにします。 各フィールドの名前をクリックして編集するか、[追加]
を クリックして作成し、 式をビルダー または カスタム モードで設定します。 次に示すように、各フィールドの 表示名 と シノニム を設定します。
order_date: ビルダー モードで、
o_orderdate列を選択します。 表示名をOrder Dateに設定します。order_month: カスタム モードで、「
DATE_TRUNC('MONTH', order_date)」と入力します。 表示名をOrder Monthに設定します。order_year: カスタム モードで、「
YEAR(order_date)」と入力します。 表示名をOrder Yearに設定します。order_status: カスタム モードで、次の式を入力します。 表示名を
Order Statusに設定し、シノニムをstatus、fulfillment statusに設定します。CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority: カスタム モードで、「
SPLIT(o_orderpriority, '-')[0]」と入力します。 表示名をPriorityに設定します。customer_name: ビルダー モードで、結合された
c_nameテーブルからcustomer列を選択します。 表示名をCustomer Nameに設定します。market_segment: ビルダー モードで、結合された
c_mktsegmentテーブルからcustomer列を選択します。 表示名をMarket Segmentに設定し、シノニムをsegment、industryに設定します。customer_nation: カスタムモードで、ネストされた
nation結合を参照するには、customer.nation.n_nameを入力します。 表示名をCountryに設定し、シノニムをnation、countryに設定します。
フィールドの完全な手順については、「 手順 4: フィールドを追加する」を参照してください。
YAML エディター
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
手順 6: パラメーターを定義する
パラメーターを使用すると、クエリを実行するときにメトリック ビューに値を渡すことができるため、1 つの定義で多数のクエリ バリアントを処理できます。 このチュートリアルで追加される discount パラメーターは、後でメジャーによって使用され、割引になった収益が計算されます。 パラメーターの既定値は 0 であるため、値を渡さないクエリは未集計の収益を返します。 パラメーターの詳細については、「 メトリック ビューでパラメーターを使用する」を参照してください。
カタログ ブラウザ ユーザーインターフェース
エディターの見出しで、[ パラメーターの追加] をクリックします。 名前として「 discount 」と入力し、既定値の 0 を入力し、 double データ型を選択します。
YAML エディター
parameters:
- name: discount
data_type: double
default: 0
手順 7: 指標を定義する
尺度とは、ユーザーが分析したい計算のことです。 最初にアトミック メジャーを定義してから、コンポーザビリティを使用して、 MEASURE() 関数で以前に定義されたメジャーを参照する複雑なメトリックを構築します。
エージェント メタデータで説明されているように、各指標のdisplay_name、format、およびsynonymsを設定します。 このチュートリアルでは、次の内容を追加します。
-
Atomic メジャー:
order_count,total_revenueとunique_customersであり、シンプルな集計によって構成要素を形成します。 -
構成済みメジャー:
avg_order_valueとrevenue_per_customer。集計ロジックを複製するのではなく、MEASURE()を使用して以前に定義されたメジャーを参照します。total_revenue変更された場合、これらのメジャーは更新された定義を自動的に使用します。 コンポーザビリティを参照してください。 -
フィルター済みメジャー:
open_order_revenueおよびfulfilled_order_revenue。これらはFILTER (WHERE ...)を使用して、個別のフィールドなしで条件付きメトリクスを作成します。 -
パラメーター化されたメジャー:
discounted_revenueであり、discountパラメーターを参照して割引率を適用します。 メトリック ビューでのパラメーターの使用を参照してください。 -
ウィンドウ集計:
t7d_customersユニーク顧客数の直近7日間のローリングカウントを計算します。 ウィンドウ メジャー パターンの詳細については、ウィンドウ メジャー を参照してください。
カタログ ブラウザ ユーザーインターフェース
エディターは、サンプル COUNT(*) 小節を自動的に追加します。 これを編集または削除し、メトリック ビューが次の内容を正確に定義するようにメジャーを追加してください。 メジャーごとに、
[追加] をクリックしてから式をビルダー モードまたはカスタム モードに設定します。
表示名、書式、シノニムを次のように設定します。 通貨形式には小数点以下 2 桁、数値形式の場合は小数点以下 0 桁を使用します。
-
order_count: ビルダー モードで、 [個別のカウント] 集計を
o_orderkeyで選択します。 表示名をOrder Countに設定し、書式を数値に設定 します。 -
total_revenue: ビルダー モードで、の
o_totalprice集計を選択します。 表示名をTotal Revenueに設定し、書式を 通貨 (USD)、シノニムをrevenue、salesに設定します。 -
discounted_revenue: カスタム モードで、「
SUM(o_totalprice * (1 - discount))」と入力します。 表示名をDiscounted Revenueに設定し、書式を 通貨 (USD) に設定します。 -
unique_customers: ビルダー モードで、 [個別のカウント] 集計を
o_custkeyで選択します。 表示名をUnique Customersに設定し、書式を数値に設定 します。 -
avg_order_value: カスタム モードで、「
MEASURE(total_revenue) / MEASURE(order_count)」と入力します。 表示名をAvg Order Value、書式を Currency (USD)、シノニムをAOVに設定します。 -
revenue_per_customer: カスタム モードで、「
MEASURE(total_revenue) / MEASURE(unique_customers)」と入力します。 表示名をRevenue per Customerに設定し、書式を 通貨 (USD) に設定します。 -
open_order_revenue: カスタム モードで、「
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')」と入力します。 表示名をOpen Order Revenueに設定し、書式を 通貨 (USD)、シノニムをbacklogに設定します。 -
fulfilled_order_revenue: カスタム モードで、「
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')」と入力します。 表示名をFulfilled Revenueに設定し、書式を 通貨 (USD) に設定します。 -
t7d_customers: カスタム モードで、「
COUNT(DISTINCT o_custkey)」と入力します。 次に、[+ ウィンドウ] をクリックし、範囲order_dateと準加法集計を使用してtrailing 7 day順lastウィンドウを構成します。 表示名を7-Day Rolling Customersに設定し、書式を数値に設定 します。
メジャー全体の手順については、「手順 5: メジャーを追加する」を参照してください。
YAML エディター
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
完全な定義を確認する
上記の手順を完了すると、メトリック ビューには次の完全な定義が表示されます。
完全な YAML 定義を表示する
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
SQL を使用してメトリック ビューを作成する
カタログ エクスプローラーの外部でこの定義をビルドする場合は、次の SQL を実行してメトリック ビューを作成します。
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
$$;
メトリック ビューを作成するその他の方法については、「メトリック ビュー の作成」を参照してください。
手順 8: メトリック ビューのクエリを実行する
ビジネスに優しい構文を使用してメトリック ビューのクエリを実行します。
MEASURE()関数は、選択したフィールドの粒度でメジャーを集計します。
ディメンションごとの指標の集計
この例では、複数のフィールドにまたがる指標を集計します。 顧客の国と市場セグメント別の総収益、注文数、平均注文値が返され、最初に最も高い収益でランク付けされます。
SELECT
customer_nation,
market_segment,
MEASURE(total_revenue) AS total_revenue,
MEASURE(order_count) AS order_count,
MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;
毎月の傾向を分析する
この例では時刻フィールドをメジャーと結合して傾向を追跡します。 月別および注文ステータス別の合計収益と未完了注文収益 (バックログ) が返されます。
SELECT
order_month,
order_status,
MEASURE(total_revenue) AS total_revenue,
MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;
パラメーター値を渡す
メトリック ビューではパラメーターが定義されているため、それをテーブル値関数として呼び出し、クエリ時に値を渡すことができます。 次のクエリでは、10% 割引が適用されます。
discountの既定値は 0 であるため、引数を省略したクエリは未集計の収益を返します。
SELECT
customer_nation,
MEASURE(total_revenue) AS total_revenue,
MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;
学習した内容
次を示すメトリック ビューを作成しました。
| 特徴 | Example |
|---|---|
| スノーフレークスキーマ結合 | 注文から顧客、さらに国へのネストされた多対一結合 |
| 時間フィールド | 日付、月、年単位の粒度 |
| 変換されたフィールド |
CASE ステートメント、 SPLIT 関数 |
| 簡単な対策 |
COUNT、SUM |
| コンポーザビリティ | 以前に定義された測定をavg_order_valueを使用してrevenue_per_customerMEASURE()参照します。 |
| フィルター処理された指標 |
FILTER (WHERE ...) 条件付き集計の場合 |
| ウィンドウ寸法 |
trailing 7 day を使用して7日間の顧客数をローリング更新する |
| パラメーター |
discount パラメーターを discounted_revenue メジャーに適用 |
| エージェントメタデータ | フィールドとメジャーの display_name、format、synonyms |
その他のリソース
- ローリング平均と年累計の合計を計算するためのウィンドウ関数。
- 大規模なデータセットのクエリ パフォーマンスを向上させるためのメトリック ビューの具体化。
- メトリックビューを利用して AI/BI ダッシュボードでそのメトリックビューを活用します。