共用方式為


模型指標視圖資料

本頁說明如何建立指標檢視模型,以及使用這些檢視的最佳實務。

指標檢視有助於為您的資料建立語意層,將原始表格轉換為標準化、業務友好的指標。 他們定義要衡量的內容、如何匯總以及如何細分,確保組織中的每個使用者都報告相同關鍵績效指標 (KPI) 的相同數字。 目標是為業務指標建立單一事實來源。

透過將資料建模為指標檢視,您可以抽象化複雜的 SQL、表格結構和資料品質問題,讓分析師能夠專注於分析。

核心元件

建立度量檢視模型涉及在來源資料上定義下列元素:

元件 Description Example
來源 包含原始交易資料的基底資料表、檢視或 SQL 查詢。 samples.tpch.orders
維度 用來分割或分組度量的欄位屬性 產品類別、訂單月份、客戶區域
措施 產生指標的資料行彙總。 這些措施是您通常報告的內容。 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

備註

使用 SQL 查詢作為子 JOIN 句的來源時,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))

使用指標檢視做為來源時,參考維度和量值會套用相同的可組合性規則。 請參閱 組合性

尺寸

在查詢時,維度是在SELECTWHEREGROUP BY子句中使用的資料行。 每個表達式都必須傳回純量值。 維度定義為陣列。 每個維度都包含兩個元件:

  • 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

聯結可讓您使用相關表格中的描述性屬性來豐富度量檢視。 您可以使用聯結來建立從事實資料表到維度資料表的關聯性模型 (星狀結構描述),以及從維度周遊到子維度,允許跨正規化維度資料表 (雪花結構描述) 進行多躍點聯結。

請參閱 在計量檢視中使用聯結

視窗量值

這很重要

此功能為 實驗性

視窗量值可讓您在計量檢視中使用視窗化、累計或半加總匯總來定義量值。 這些類型的量值允許更複雜的計算,例如移動平均、期間內變更,以及執行總計。 如需範例來展示如何在計量檢視中使用視窗量值,請參閱 在計量檢視中使用視窗量值

可組合性

計量檢視是可組合的,可讓您藉由參考先前定義的元素來建置複雜的邏輯。 您可以在新維度中參考先前定義的維度,在新量值中參考任何維度或先前定義的量值,並在度量檢視中使用從聯結定義的直欄。

請參閱 指標檢視中的可組合性

語意元資料

語意中繼資料可協助取用工具瞭解如何顯示和處理量值和維度。 這包括以下屬性:

語意元資料 Example
顯示名稱 Total Revenue 取代 sum_o_price
顯示格式 標準化貨幣、百分比和日期的格式。
評論 以自然語言解釋指標的業務定義。

當您定義語意中繼資料時,它會隨指標一起傳輸。 例如,當分析師在儀表板中使用 總收入 時,它會自動顯示為貨幣。

請參閱在度量視圖中使用語意中繼資料。

YAML 語法和格式

計量檢視定義遵循標準 YAML 表示法語法。 請參閱 YAML 語法參考, 以瞭解定義度量視圖所需的語法和格式。 請參閱 YAML 規格 1.2.2 文件,以進一步瞭解 YAML 規格。

視窗量值

視窗量值會計算已定義 視窗的值,或與目前資料列相關的資料列範圍。 您可以使用視窗量值進行時間序列和比較分析,讓您定義指標,例如:

  • 滾動 30 天總收入:過去 30 天的收入總和
  • 年初至今 (YTD) 收入:年初以來的累計總和
  • 上一期比較:上個月的收入

請參閱 在度量檢視中使用視窗量值

建立指標檢視模型的最佳實務

建立度量視圖模型時,請使用下列準則:

  • 對原子測量進行建模:首先定義最簡單的非計算測量(例如, SUM(revenue)COUNT(DISTINCT customer_id))。 使用可組合性建置複雜的量值 (例如 AOV)。
  • 標準化維度值:使用轉換(例如CASE語句或表達式)將神秘的資料庫代碼轉換為清晰的企業名稱(例如,將訂單狀態「O」轉換為「未完成」,將「F」轉換為「已履行」)。
  • 使用篩選器定義範圍:有意識地使用持續性篩選器。 如果量度檢視應該只包含已完成的訂單,請在量度檢視中定義該篩選器,讓使用者不會意外包含不完整的資料。
  • 使用商業友善的命名:指標名稱應該可立即被商業使用者識別(例如,客戶生命週期價值與)。 cltv_agg_measure
  • 個別時間維度:一律包含精細時間維度(例如 訂單日期)和截斷時間維度(例如 訂單月份訂單週),以支援詳細資料層級和趨勢分析。