次の方法で共有


モデル メトリック ビュー データ

このページでは、メトリック ビューをモデル化する方法と、それらを操作するためのベスト プラクティスについて説明します。

メトリック ビューは、データのセマンティック レイヤーを作成するのに役立ち、生のテーブルを標準化されたビジネスに適したメトリックに変換します。 測定対象、集計方法、セグメント化方法を定義し、組織全体のすべてのユーザーが同じ主要業績評価指標 (KPI) について同じ数を報告できるようにします。 目標は、ビジネス メトリックの信頼できる 1 つのソースを作成することです。

データをメトリック ビューとしてモデル化することで、複雑な SQL、テーブル構造、データ品質の問題を抽象化し、アナリストが分析に専念できるようになります。

コア コンポーネント

メトリック ビューのモデリングには、ソース データに対して次の要素を定義する必要があります。

コンポーネント Description Example
ソース 生トランザクション データを含むベース テーブル、ビュー、または SQL クエリ。 samples.tpch.orders
Dimensions メトリックをセグメント化またはグループ化するために使用される列属性 製品カテゴリ、注文月、顧客リージョン
措置 メトリックを生成する列の集計。 これらの対策は、通常報告するものです。 COUNT(o_order_id) を受注数、SUM(o_total_price) を合計収益として。
フィルター スコープを定義するためにソース データに適用される永続的な条件。
  • status = 'completed'
  • order_date > '2024-01-01'

ソースを定義する

メトリック ビューのソースとして、テーブルに似た資産または 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'

メトリック ビューのクエリまたは使用時にフィルターを追加することもできます。

高度なモデリング機能

メトリック ビュー モデリングでは、高度で再利用可能なメトリックを作成するための高度な手法がサポートされています。

Joins

結合を使用すると、関連テーブルの説明的な属性を使用してメトリック ビューを強化できます。 結合を使用すると、ファクト テーブルからディメンション テーブル (スター スキーマ) へのリレーションシップをモデル化したり、ディメンションからサブディメンションに走査したりして、正規化されたディメンション テーブル (スノーフレーク スキーマ) 間でマルチホップ結合を行うことができます。

メトリック ビューでの結合の使用を参照してください。

ウィンドウ メジャー

Important

この機能は試験段階です。

ウィンドウ メジャーを使用すると、メトリック ビューでウィンドウ集計、累積集計、または準加法集計を使用してメジャーを定義できます。 これらのタイプの手法を使用すると、移動平均、期間ごとの変化、累計など、より複雑な計算を行うことができます。 メトリック ビューでウィンドウ メジャーを使用する方法を示す例については、「メトリック ビューでのウィンドウ メジャーの使用」を参照してください。

構成可能性

メトリック ビューは構成可能であり、以前に定義された要素を参照して複雑なロジックを構築できます。 新しいディメンションで以前に定義されたディメンションを参照したり、新しいメジャーでディメンションまたは以前に定義されたメジャーを参照したり、メトリック ビューで定義された結合から列を参照したりできます。

メトリック ビューでのコンポーザビリティを参照してください。

セマンティック メタデータ

セマンティックメタデータは、ツールが測定値と次元を表示および処理する方法を理解するのに役立ちます。 これには、次のようなプロパティが含まれます。

セマンティック メタデータ Example
表示名 Total Revenueの代わりに sum_o_price します。
表示形式 通貨、パーセンテージ、日付の書式設定を標準化します。
Comments 自然言語でのメトリックのビジネス定義について説明します。

セマンティック メタデータを定義すると、メトリックと共に移動します。 たとえば、アナリストがダッシュボードで Total Revenue を使用すると、通貨として自動的に表示されます。

メトリック ビューでのセマンティック メタデータの使用を参照してください。

YAML 構文と書式設定

メトリック ビューの定義は、標準の YAML 表記構文に従います。 メトリック ビューを定義するために必要な構文と書式設定については、 YAML 構文リファレンスを参照 してください。 YAML 仕様の詳細については、 YAML 仕様 1.2.2 のドキュメントを参照してください。

ウィンドウの測定

ウィンドウ メジャーは、定義された ウィンドウまたは現在の行に関連する行の範囲に対して値を計算します。 時系列および比較分析にウィンドウ メジャーを使用して、次のようなメトリックを定義できます。

  • ローリング 30 日間の合計収益: 過去 30 日間の収益の合計
  • 年累計 (YTD) 収益: 年の初めからの累積合計
  • 前の期間の比較: 前月からの収益

メトリック ビューでのウィンドウ メジャーの使用を参照してください。

メトリック ビューのモデリングに関するベスト プラクティス

メトリック ビューをモデル化するときは、次のガイドラインを使用します。

  • アトミック メジャーのモデル化: 最初に最も単純な計算されていないメジャー (たとえば、 SUM(revenue)COUNT(DISTINCT customer_id)) を定義することから始めます。 構成可能性を活用して複雑な測定値(AOV など)を構築します。
  • ディメンション値を標準化する: 変換 ( CASE ステートメントや式など) を使用して、不可解なデータベース コードを明確なビジネス名に変換します (たとえば、注文の状態 'O' を 'Open' に、'F' を 'Fulfilled' に変換します)。
  • フィルターを使用してスコープを定義する: 永続的なフィルターについて意図的に設定してください。 メトリック ビューに完了した注文のみを含める必要がある場合は、ユーザーが誤って不完全なデータを含めないように、メトリック ビューでそのフィルターを定義します。
  • ビジネスに適した名前付けを使用する: メトリック名は、ビジネス ユーザーがすぐに認識できる必要があります (たとえば、 Customer Lifetime Valuecltv_agg_measure)。
  • 個別の時間ディメンション: 詳細レベルと傾向分析の両方をサポートするために、常に細かい時間ディメンション ( Order Date など) と切り捨てられた時間ディメンション ( Order MonthOrder Week など) を含めます。