共用方式為


在度量視圖中使用視窗量值

這很重要

此功能為 實驗性

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

定義視窗量值

視窗量值可讓您使用視窗化、累積或半累加彙總來定義量值。 視窗量值包含下列必要值:

  • 次: 決定視窗順序的維度。

  • 範圍: 定義數據窗口的程度,例如尾端、累計或全部資料。 可能的範圍值包括下列項目:

    • current 包括視窗排序值等於目前列值的列。
    • cumulative:包括所有視窗排序值小於或等於當前資料列的值的資料列。
    • trailing <value> <unit> 包括目前列中向後移動指定時間單位數的列,例如 trailing 3 months。 這不包括當前單位。 例如, trailing 3 months 排除當月。
    • leading <value> <unit> 包括從目前列開始向前推算指定時間單位數的列,例如 leading 7 days
    • all 包括所有列,無論視窗值為何。
  • 半累計: 指定當順序欄位未包含在查詢的 GROUP BY中時,如何彙總量值。 可能的值包括 firstlast

尾隨、移動或前導視窗量值範例

下列範例會計算過去 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