這很重要
此功能為 實驗性。
視窗量值可讓您在計量檢視中使用視窗化、累計或半加總匯總來定義量值。 這些類型的量值允許更複雜的計算,例如移動平均、期間內變更,以及執行總計。 本頁包含示範如何在度量檢視中使用視窗量值的實際範例。
定義視窗量值
視窗量值可讓您使用視窗化、累積或半累加彙總來定義量值。 視窗量值包含下列必要值:
次: 決定視窗順序的維度。
範圍: 定義數據窗口的程度,例如尾端、累計或全部資料。 可能的範圍值包括下列項目:
-
current: 包括視窗排序值等於目前列值的列。 -
cumulative:包括所有視窗排序值小於或等於當前資料列的值的資料列。 -
trailing <value> <unit>: 包括目前列中向後移動指定時間單位數的列,例如trailing 3 months。 這不包括當前單位。 例如,trailing 3 months排除當月。 -
leading <value> <unit>: 包括從目前列開始向前推算指定時間單位數的列,例如leading 7 days。 -
all: 包括所有列,無論視窗值為何。
-
半累計: 指定當順序欄位未包含在查詢的
GROUP BY中時,如何彙總量值。 可能的值包括first和last。
尾隨、移動或前導視窗量值範例
下列範例會計算過去 7 天內尾隨或前導時間範圍的量值。
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'
dimensions:
- name: date
expr: o_orderdate
measures:
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: date
range: trailing 7 day
semiadditive: last
在此範例中,適用下列組態:
排序:date 指定日期維度來排序視窗。
範圍: 規格將trailing 7 day的時間範圍定義為每個日期之前的 7 天,不包含該日期。
半累加:last 表示使用 7 天視窗中的最後一個值。
期間對比視窗量值範例
計算從上一期間到當前期間的變化。
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'
dimensions:
- name: date
expr: o_orderdate
measures:
- name: previous_day_sales
expr: SUM(o_totalprice)
window:
- order: date
range: trailing 1 day
semiadditive: last
- name: current_day_sales
expr: SUM(o_totalprice)
window:
- order: date
range: current
semiadditive: last
- name: day_over_day_growth
expr: (MEASURE(current_day_sales) - MEASURE(previous_day_sales)) / MEASURE(previous_day_sales) * 100
在此範例中,適用下列條件:
使用兩個視窗量值:一個用於計算前一天的總銷售額,另一個用於當天的總銷售額。
第三個量值計算當前和前幾天之間的百分比變化(增長)。
累積 (累計) 總度量範例
計算每個時間點的量值的累計。
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'
dimensions:
- name: date
expr: o_orderdate
measures:
- name: running_total_sales
expr: SUM(o_totalprice)
window:
- order: date
range: cumulative
semiadditive: last
以下詳細資料突出顯示此定義的關鍵部分:
排序:date 確保 date 維度對視窗進行排序。
範圍:cumulative 定義為截至每個日期的所有資料(包括每個日期)。
半加性:last 確保在維度彙總時使用最後的累積值。
期間至今量值範例
計算給定期間內的累計。
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > DATE'1997-01-01'
dimensions:
- name: date
expr: o_orderdate
- name: year
expr: DATE_TRUNC('year', o_orderdate)
measures:
- name: ytd_sales
expr: SUM(o_totalprice)
window:
- order: date
range: cumulative
semiadditive: last
- order: year
range: current
semiadditive: last
以下詳細資料突出顯示此定義的關鍵部分:
使用兩個視窗函數:一個用於在
date維度上的累計總和,另一個用於將總和限制在current年。累計總和受維度限制
year,以檢查它是否僅在當前年份內計算。
半加法測量範例
計算不應在特定維度(例如銀行餘額)上加總的指標。
dimensions:
- name: date
expr: date
- name: customer
expr: customer_id
measures:
- name: semiadditive_balance
expr: SUM(balance)
window:
- order: date
range: current
semiadditive: last
以下詳細資料突出顯示此定義的關鍵部分:
順序:
date確保date維度對視窗進行排序。範圍:
current將視窗限制為一天,且不會跨天進行彙總。半加性:
last確保在多天的彙總中傳回最近的餘額。
備註
此窗口量值仍會加總所有客戶,以取得每天的總餘額。
查詢視窗量值
您可以使用視窗量測來查詢度量檢視,就像對任何其他度量檢視一樣。 下列範例會查詢度量檢視:
SELECT
state,
DATE_TRUNC('month', date),
MEASURE(t7d_distinct_customers) as m
FROM sales_metric_view
WHERE date >= DATE'2024-06-01'
GROUP BY ALL