モデルメトリクスビュー
このページでは、メトリクスビューの主要コンポーネントであるソース、フィールド、メジャー、フィルター、および結合を定義する方法について説明します。
メトリクスビューは、テーブルとビューを標準化されたビジネスメトリクスに変換することで、データにセマンティックレイヤーを作成します。何を測定し、どのように集計し、どのようにセグメント化するかを定義することで、組織全体のすべてのユーザーが同じKPIに対して同じ値を報告できるようになり、一貫性のないレポート作成をなくし、あらゆるフィールドで柔軟な分析を可能にします。
結合、フィールド、メジャー、およびエージェント メタデータを含む完全な例については、「チュートリアル:結合を使用して完全なメトリクスビューを構築する」を参照してください。
コアコンポーネント
メトリクス ビューは次の要素で構成されます。
コンポーネント | 説明 | 例 |
|---|---|---|
ソース | データを含む基本テーブル、ビュー、またはSQLクエリ。 |
|
フィールド | セグメント化またはグループ メトリクスに使用される列属性。 | 製品カテゴリ、注文月、顧客地域 |
メジャー | メトリクスを生成する列集計。 |
|
フィルター | 範囲を定義するために、ソースデータに適用される条件。 |
|
テーブルのJOIN | テーブル、ビュー、メトリクス ビューとエンリッチデータとの関係。 |
|
ソースを定義する
テーブルのようなアセットまたはSQLクエリをメトリクス ビューのソースとして使用できます。 参照されるアセットに対して、少なくともSELECT権限が必要です。
テーブル状のアセット は、表形式のスキーマを公開し、テーブル、ビュー、マテリアライズドビュー、ストリーミング テーブル、フォーリンテーブル、システム テーブル、メトリクス ビューなどのSELECTクエリをサポートするUnity Catalogオブジェクトです。
テーブルのようなアセットをソースとして使用する
テーブルのようなアセットをソースとして使用するには、完全修飾名を指定します。例えば: samples.tpch.orders 。
メトリクス ビューをソースとして使用する
既存のメトリクス ビューを新しいメトリクス ビューのソースとして使用できます。
version: 1.1
source: views.examples.source_metric_view
fields:
- name: Order month
expr: '`Order Month`'
measures:
- name: Latest order month
expr: MAX(`Order month`)
- name: Latest order year
expr: "DATE_TRUNC('year', MEASURE(`Latest order month`))"
メトリクス ビューをソースとして使用する場合、フィールドとメジャーの参照には、同じコンポーザビリティ ルールが適用されます。構成可能性をご覧ください。
SQLクエリをソースとして使用する
SQLクエリを使用するには、クエリテキストをYAMLに直接記述します。
version: 1.1
source: SELECT * FROM samples.tpch.orders o LEFT JOIN samples.tpch.customer c ON o.o_custkey
= c.c_custkey
fields:
- name: Order key
expr: o_orderkey
measures:
- name: Order Count
expr: COUNT(o_orderkey)
JOIN句を持つSQLクエリをソースとして使用する場合、基になるテーブルに主キー制約と外部キー制約を設定し、最適なクエリパフォーマンスを得るにはRELYオプションを使用します。「プライマリ・キー、外部キー、および一意制約を宣言する」および「プライマリ・キーおよび一意制約を使用したクエリの最適化」を参照してください。
フィールド
フィールドは、クエリ時に SELECT、WHERE、および GROUP BY 句で使用される列です。各式はスカラー値を返す必要があります。フィールドは、ソースデータからのカラム、またはメトリクスビューで以前に定義されたフィールドを参照できます。各フィールドは、2つのコンポーネントで構成されます。
name: 列の別名expr:メトリックビュー内のソースデータまたは以前に定義されたフィールドを参照するSQL式
メトリクスビューのフィールドは、ソース列がCHARまたはVARCHARの場合でも、常にSTRINGです。テーブル境界に適用されたCHAR(n)のスペースパディングは失われるため、ソーステーブルとの比較結果が異なる可能性があります。例えば、CHAR(10) の値 'COLLEGE' は 'COLLEGE ' として保存されます。そのため、column = 'COLLEGE' はテーブルでは true を返しますが、メトリクスビューフィールドでは false を返します。
メジャー
メジャーは、あらかじめ集計レベルを決定することなく結果を生成する式です。集計関数を用いて表現する必要があります。クエリ内でメジャーを参照するには、「MEASURE」関数を使用します。メジャーは、ソースデータ内の基本列、以前に定義されたフィールド、または以前に定義されたメジャーを参照できます。各メジャーは次のコンポーネントで構成されています。
name: 尺度の別名expr: SQL集計関数を含めることができる集計SQL式
以下の例は、注文データと収益データを分析するための一般的な測定パターンを示しています。これらの例では、注文価格( o_totalprice )、顧客識別子( o_custkey )、注文キー( o_orderkey )、注文日( o_orderdate )、優先度レベル( o_orderpriority )などの販売取引データを含むTPC-H注文テーブルを使用します。
measures:
# Simple count measure
- name: Order Count
expr: COUNT(1)
# Sum aggregation measure
- name: Total Revenue
expr: SUM(o_totalprice)
# Distinct count measure
- name: Unique Customers
expr: COUNT(DISTINCT o_custkey)
# Calculated measure combining multiple aggregations
- name: Average Order Value
expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)
# Filtered measure with WHERE condition
- name: High Priority Order Revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderpriority = '1-URGENT')
# Measure using a field
- name: Average Revenue per Month
expr: SUM(o_totalprice) / COUNT(DISTINCT DATE_TRUNC('MONTH', o_orderdate))
集計関数の一覧については、 「集計関数」を参照してください。
フィルターを適用する
YAML 定義内のフィルターは、メトリクス ビューを参照するすべてのクエリに適用されます。 次の例は、フィルタをBoolean式として記述する方法を示しています。
# Single condition
filter: o_orderdate > '2024-01-01'
# Multiple conditions
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'
# IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'
結合を操作する
メトリクスビューは、結合をサポートしており、関連テーブルの属性でソースデータをエンリッチできます。スタースキーマ(ファクトテーブルがディメンションテーブルに結合されたもの)、スノーフレークスキーマ(多段階のディメンション結合)、および1対多のリレーションシップ(ディメンションソースからのファクトの展開)をモデル化できます。結合タイプ、カーディナリティ、スキーマパターン、および制限の詳細については、「メトリクス ビューでの結合」を参照してください。
次の例では、ordersファクトテーブルをcustomerディメンションテーブルに結合します。
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
fields:
- name: Customer name
expr: customer.c_name
measures:
- name: Total revenue
expr: SUM(o_totalprice)
YAML構文とフォーマット
メトリクス ビューの定義は、標準の YAML 表記構文に従います。 必要な構文と形式については、メトリクス ビューの YAML 構文リファレンスを参照してください。
ベストプラクティス
メトリクス ビューをモデル化するときは、次のガイドラインに従ってください。
- モデルの原子尺度 : まず最も単純な尺度を定義することから始めます (たとえば、
SUM(revenue)、COUNT(DISTINCT customer_id))。構成可能性を活用して、複雑なメジャーを構築する。 - フィールド値の標準化 : 変換(
CASEステートメントなど)を使用して、データベースコードを明確なビジネス名に変換します(例:注文ステータス「O」を「Open」に、「F」を「Fulfilled」に変換します)。 - フィルターを使用して範囲を定義する : メトリクス ビューに完了した注文のみを含める必要がある場合は、ユーザーが不完全なデータを誤って含めることができないように、メトリクス ビューでそのフィルターを定義します。
- 明確な名前を使用する : メトリクス名はビジネス ユーザーが認識できるものにする必要があります (たとえば、
cltv_agg_measureの代わりに「顧客生涯価値」)。 - 時間フィールドの分離:粒度の高い時間フィールド(「注文日」など)と切り捨てられた時間フィールド(「注文月」や「注文週」など)を含めることで、詳細レベルと傾向分析の両方をサポートします。