本頁說明如何建立指標檢視模型,以及使用這些檢視的最佳實務。
指標檢視有助於為您的資料建立語意層,將原始表格轉換為標準化、業務友好的指標。 他們定義要衡量的內容、如何匯總以及如何細分,確保組織中的每個使用者都報告相同關鍵績效指標 (KPI) 的相同數字。 目標是為業務指標建立單一事實來源。
透過將資料建模為指標檢視,您可以抽象化複雜的 SQL、表格結構和資料品質問題,讓分析師能夠專注於分析。
核心元件
建立度量檢視模型涉及在來源資料上定義下列元素:
| 元件 | Description | Example |
|---|---|---|
| 來源 | 包含原始交易資料的基底資料表、檢視或 SQL 查詢。 | samples.tpch.orders |
| 維度 | 用來分割或分組度量的欄位屬性 | 產品類別、訂單月份、客戶區域 |
| 措施 | 產生指標的資料行彙總。 這些措施是您通常報告的內容。 |
COUNT(o_order_id) 作為訂單數量, SUM(o_total_price) 作為總收入。 |
| 篩選 | 套用至來源資料的持續性條件,以定義範圍。 |
|
定義來源
您可以使用類似數據表的資產或 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))
使用指標檢視做為來源時,參考維度和量值會套用相同的可組合性規則。 請參閱 組合性。
尺寸
在查詢時,維度是在SELECT、WHERE和GROUP 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 - 個別時間維度:一律包含精細時間維度(例如 訂單日期)和截斷時間維度(例如 訂單月份 或 訂單週),以支援詳細資料層級和趨勢分析。