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

モデルメトリクスビュー

このページでは、メトリクスビューの主要コンポーネントであるソース、フィールド、メジャー、フィルター、および結合を定義する方法について説明します。

メトリクスビューは、テーブルとビューを標準化されたビジネスメトリクスに変換することで、データにセマンティックレイヤーを作成します。何を測定し、どのように集計し、どのようにセグメント化するかを定義することで、組織全体のすべてのユーザーが同じKPIに対して同じ値を報告できるようになり、一貫性のないレポート作成をなくし、あらゆるフィールドで柔軟な分析を可能にします。

結合、フィールド、メジャー、およびエージェント メタデータを含む完全な例については、「チュートリアル:結合を使用して完全なメトリクスビューを構築する」を参照してください。

コアコンポーネント

メトリクス ビューは次の要素で構成されます。

コンポーネント

説明

ソース

データを含む基本テーブル、ビュー、またはSQLクエリ。

samples.tpch.orders

フィールド

セグメント化またはグループ メトリクスに使用される列属性。

製品カテゴリ、注文月、顧客地域

メジャー

メトリクスを生成する列集計。

COUNT(o_orderkey) 注文数としてSUM(o_totalprice)、総収益として

フィルター

範囲を定義するために、ソースデータに適用される条件。

  • status = 'completed'
  • order_date > '2024-01-01'

テーブルのJOIN

テーブル、ビュー、メトリクス ビューとエンリッチデータとの関係。

ordersテーブルとcustomersテーブルを結合します customer_key

ソースを定義する

テーブルのようなアセットまたはSQLクエリをメトリクス ビューのソースとして使用できます。 参照されるアセットに対して、少なくともSELECT権限が必要です。

テーブル状のアセット は、表形式のスキーマを公開し、テーブル、ビュー、マテリアライズドビュー、ストリーミング テーブル、フォーリンテーブル、システム テーブル、メトリクス ビューなどのSELECTクエリをサポートするUnity Catalogオブジェクトです。

テーブルのようなアセットをソースとして使用する

テーブルのようなアセットをソースとして使用するには、完全修飾名を指定します。例えば: samples.tpch.orders

メトリクス ビューをソースとして使用する

既存のメトリクス ビューを新しいメトリクス ビューのソースとして使用できます。

YAML
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に直接記述します。

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オプションを使用します。「プライマリ・キー、外部キー、および一意制約を宣言する」および「プライマリ・キーおよび一意制約を使用したクエリの最適化」を参照してください。

フィールド

フィールドは、クエリ時に SELECTWHERE、および 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注文テーブルを使用します。

YAML
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式として記述する方法を示しています。

YAML
# 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ディメンションテーブルに結合します。

YAML
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の代わりに「顧客生涯価値」)。
  • 時間フィールドの分離:粒度の高い時間フィールド(「注文日」など)と切り捨てられた時間フィールド(「注文月」や「注文週」など)を含めることで、詳細レベルと傾向分析の両方をサポートします。

その他のリソース