メトリクスビューデータのモデル化
このページでは、メトリクス ビューをモデル化する方法と、それらを操作するためのベスト プラクティスについて説明します。
メトリクス ビューは、データのセマンティック レイヤーを作成し、生のテーブルを標準化されたビジネス フレンドリーなメトリクスに変換するのに役立ちます。 測定対象、集計方法、セグメント化方法を定義し、組織全体のすべてのユーザーが同じ主要業績評価指標 (KPI) に対して同じ数値を報告するようにします。目標は、ビジネス メトリクスのための真実の単一ソースを作成することです。
データをメトリクス ビューとしてモデル化することで、複雑なSQL 、テーブル構造、データ品質の問題が抽象化され、アナリストは純粋に分析に集中できるようになります。
コアコンポーネント
メトリクス ビューのモデル化には、ソース データに対して次の要素を定義することが含まれます。
コンポーネント | 説明 | 例 |
|---|---|---|
ソース | 生のトランザクション データを含む基本テーブル、ビュー、または SQL クエリ。 |
|
ディメンション | メトリクスをセグメント化またはグループ化するために使用される列属性 | 製品カテゴリー、受注月、顧客地域 |
対策 | メトリクスを生成する列の集計。 これらの測定値は通常レポートするものです。 |
|
フィルター | スコープを定義するためにソース データに適用される永続的な条件。 |
|
ソースを定義する
テーブルのようなアセットまたはSQLクエリをメトリクス ビューのソースとして使用できます。 テーブルのようなアセットを使用するには、アセットに対する少なくともSELECT権限が必要です。
テーブルをソースとして使用する
テーブルをソースとして使用するには、次の例のように、完全修飾テーブル名を含めます。
source: samples.tpch.orders
SQLクエリをソースとして使用する
SQL クエリを使用するには、クエリ テキストを YAML に直接記述します。
source: SELECT * FROM samples.tpch.orders o
LEFT JOIN samples.tpch.customer c
ON o.o_custkey = c.c_custkey
JOIN句を含むソースとして SQL クエリを使用する場合、Databricks では、基になるテーブルに主キーと外部キーの制約を設定し、該当する場合はクエリ時に最適なパフォーマンスを得るためにRELYオプションを使用することをお勧めします。主キー制約と外部キー制約の使用の詳細については、 「主キーと外部キーの関係の宣言」および「主キー制約を使用したクエリの最適化」を参照してください。
メトリクス ビューをソースとして使用する
既存のメトリクス ビューを新しいメトリクス ビューのソースとして使用することもできます。
version: 1.1
source: views.examples.source_metric_view
dimensions:
# Dimension referencing dimension from source_metric_view
- name: Order date
expr: order_date_dim
measures:
# Measure referencing dimension from source_metric_view
- name: Latest order month
expr: MAX(order_date_dim_month)
# Measure referencing measure from source_metric_view
- name: Latest order year
expr: DATE_TRUNC('year', MEASURE(max_order_date_measure))
メトリクス ビューをソースとして使用する場合、同じ構成ルールがディメンションとメジャーの参照に適用されます。 「コンポーザビリティ」を参照してください。
寸法
ディメンションは、クエリ時にSELECT 、 WHERE 、およびGROUP BY句で使用される列です。各式はスカラー値を返す必要があります。次元は配列として定義されます。各ディメンションは次の 2 つのコンポーネントで構成されます。
-
name: 列の別名。 -
expr: メトリクス ビューでディメンションまたは以前に定義されたディメンションを定義するソース データのSQL式。
バージョン 1.1 以降では、各ディメンションのセマンティック メタデータ (表示名、形式、同義語) も定義できます。詳細については、 「メトリクス ビューでのセマンティック メタデータの使用」を参照してください。
対策
メジャーは、事前に決定された集計レベルなしで結果を生成する式の配列として定義される列です。集計関数を使用して表現する必要があります。クエリでメジャーを参照するには、 MEASURE関数を使用する必要があります。メジャーは、ソース データまたは以前に定義されたディメンションの基本フィールドを参照できます。各メジャーは次のコンポーネントで構成されます。
-
name: メジャーのエイリアス。 -
expr: SQL 集計関数を含めることができる集計 SQL 式。
次の例は、一般的な測定パターンを示しています。
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 dimension
- name: Average Revenue per Month
expr: SUM(o_totalprice) / COUNT(DISTINCT DATE_TRUNC('MONTH', o_orderdate))
集計関数のリストについては、 「集計関数」を参照してください。
measure集計関数を参照してください。
バージョン 1.1 以降では、各メジャーのセマンティック メタデータ (表示名、形式、同義語) も定義できます。詳細については、 「メトリクス ビューでのセマンティック メタデータの使用」を参照してください。
フィルターを適用する
メトリクス ビューの YAML 定義内のフィルターは、それを参照するすべてのクエリに適用されます。 これはSQLブール式として記述する必要があり、 SQLクエリでWHERE句を使用するのと同じです。
次の例は、一般的なフィルタ パターンを示しています。
# Single condition filter
filter: o_orderdate > '2024-01-01'
# Multiple conditions with AND
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'
# Multiple conditions with OR
filter: o_orderpriority = '1-URGENT' OR o_orderpriority = '2-HIGH'
# Complex filter with IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'
# Filter with NOT
filter: o_orderstatus != 'O' AND o_totalprice > 1000.00
# Filter with LIKE pattern matching
filter: o_comment LIKE '%express%' AND o_orderdate > '2024-01-01'
メトリクス ビューをクエリまたは使用するときにフィルターを追加することもできます。
高度なモデリング機能
メトリクス ビュー モデリングは、洗練された再利用性の高いメトリクスを作成するための高度な技術をサポートしています。
結合
結合を使用すると、関連テーブルからの説明的な属性を使用してメトリクス ビューを充実させることができます。 結合を使用すると、ファクト テーブルからディメンション テーブル (スター スキーマ) への関係をモデル化したり、ディメンションからサブディメンションに移動したりして、正規化されたディメンション テーブル間でのマルチホップ結合 (スノーフレーク スキーマ) が可能になります。
「メトリクス ビューでの結合の使用」を参照してください。
窓の対策
実験段階
この機能は実験的なものです。
ウィンドウ メジャーを使用すると、メトリクス ビューでウィンドウ集計、累積集計、または準加法集計を使用してメジャーを定義できます。 これらのタイプのメジャーを使用すると、移動平均、前期比の変化、累計などのより複雑な計算が可能になります。メトリクス ビューでウィンドウ メジャーを使用する方法を示す例については、「メトリクス ビューでウィンドウ メジャーを使用する」を参照してください。
構成可能性
メトリクス ビューは構成可能であり、以前に定義された要素を参照して複雑なロジックを構築できます。 新しいディメンションで以前に定義したディメンションを参照したり、新しいメジャーで任意のディメンションまたは以前に定義したメジャーを参照したり、メトリクス ビューで定義された結合から列を参照したりできます。
「メトリクス ビューの構成可能性」を参照してください。
セマンティックメタデータ
セマンティック メタデータは、メジャーとディメンションを表示および処理する方法を消費ツールが理解するのに役立ちます。これには次のようなプロパティが含まれます。
セマンティックメタデータ | 例 |
|---|---|
表示名 |
|
表示形式 | 通貨、パーセンテージ、日付の書式設定を標準化します。 |
コメント | メトリクスのビジネス定義を自然言語で説明します。 |
セマンティック メタデータを定義すると、メトリクスとともに転送されます。 たとえば、アナリストがダッシュボードで 総収益を 使用すると、自動的に通貨として表示されます。
「メトリクス ビューでのセマンティック メタデータの使用」を参照してください。
YAML構文とフォーマット
メトリクス ビューの定義は、標準の YAML 表記構文に従います。 メトリクス ビューを定義するために必要な構文と書式設定については、YAML 構文リファレンスを参照してください。 YAML 仕様の詳細については、YAML仕様 1.2.2 のドキュメントを参照してください。
窓の対策
ウィンドウ メジャーは、定義された ウィンドウ 、つまり現在の行に関連する行の範囲にわたって値を計算します。時系列分析および比較分析にウィンドウ メジャーを使用すると、次のようなメトリクスを定義できます。
- 30日間の累計収益 : 過去30日間の収益の合計
- 年初からの累計収益
- 前期比較 :前月比
「メトリクス ビューでウィンドウ メジャーを使用する」を参照してください。
メトリクス ビューのモデリングのベスト プラクティス
メトリクス ビューをモデル化するときは、次のガイドラインに従ってください。
- アトミック メジャーをモデル化します 。まず、最も単純な、計算されないメジャーを定義します (例:
SUM(revenue)、COUNT(DISTINCT customer_id))。コンポーザビリティを使用して複雑なメジャー (AOV など) を構築します。 - ディメンション値を標準化する : 変換 (
CASEステートメントや式など) を使用して、難解なデータベース コードを明確なビジネス名に変換します (たとえば、注文ステータス「O」を「Open」に、「F」を「Fulfilled」に変換します)。 - フィルターを使用してスコープを定義する : 永続的なフィルターを意図的に使用します。メトリクス ビューに完了した注文のみを含める必要がある場合は、ユーザーが不完全なデータを誤って含めることができないように、メトリクス ビューでそのフィルターを定義します。
- ビジネス向けの名前を使用する : メトリクス名は、ビジネス ユーザーがすぐに認識できるものにする必要があります (例: 顧客生涯価値 と
cltv_agg_measure)。 - 個別の時間ディメンション : 詳細レベルと傾向分析の両方をサポートするには、細かい時間ディメンション ( 注文日 など) と切り捨てられた時間ディメンション ( 注文月 や 注文週 など) を常に含めます。