Important
この機能は試験段階です。
ウィンドウ メジャーを使用すると、メトリック ビューでウィンドウ集計、累積集計、または準加法集計を使用してメジャーを定義できます。 これらのタイプの手法を使用すると、移動平均、期間ごとの変化、累計など、より複雑な計算を行うことができます。 このページには、メトリック ビューでウィンドウ メジャーを操作する方法を示す実際の例が含まれています。
ウィンドウ測定を定義する
ウィンドウ メジャーを使用すると、ウィンドウ集計、累積集計、または半加法集計を使用してメジャーを定義できます。 ウィンドウ計測値には、次の必須項目が含まれます。
命令: ウィンドウの順序を決定するディメンション。
範囲: ウィンドウの範囲 (末尾、累積、すべてのデータなど) を定義します。 指定できる範囲の値は次のとおりです。
-
current: ウィンドウの順序の値が現在の行の値と等しい行が含まれます。 -
cumulative: ウィンドウ順序の値が現在の行の値以下であるすべての行が含まれます。 -
trailing <value> <unit>: 現在の行から指定した時間単位 (trailing 3 monthsなど) だけ過去に遡って行を含めます。 これには、現在のユニットは含まれません。 たとえば、trailing 3 monthsは現在の月を除外します。 -
leading <value> <unit>: 指定された時間単位数 (leading 7 daysなど) 分、現在の行から前方の行を含めます。 -
all: ウィンドウ値に関係なく、すべての行が含まれます。
-
semiadditive: 注文フィールドがクエリの
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
この例では、次の構成が適用されます。
order:date は、日付ディメンションがウィンドウの順序を指定します。
範囲:trailing 7 day仕様では、日付自体を除き、各日付の 7 日前としてウィンドウが定義されます。
semiadditive: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
この例では、次の条件が適用されます。
前日と当日それぞれの総売上を計算するために、2つのウィンドウメジャーが使用されます。
3 番目の指標は、現在と前日の変化率を計算します。
累積 (実行中) 合計メジャーの例
各時点までの指標の累計を計算します。
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
次の詳細では、この定義の重要な部分が強調表示されています。
order:date は、 date ディメンションがウィンドウを順序付けられるようにします。
range:cumulative 各日付までのすべてのデータを含むウィンドウとして定義されます。
semiadditive: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
次の詳細では、この定義の重要な部分が強調表示されています。
2 つのウィンドウ メジャーが使用されます。1 つは
dateディメンションの累積合計に対して、もう 1 つは合計を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
次の詳細では、この定義の重要な部分が強調表示されています。
order:
dateは、dateディメンションがウィンドウを順序付けられるようにします。range:
currentでは、期間を 1 日に制限し、日をまたいで集計を行いません。semiadditive:
lastは、数日にわたって集計するときに最新の残高が返されることを保証します。
注
このウィンドウの測定値は、1 日あたりの全体的な残高を取得するために、すべての顧客に対して引き続き合計されます。
ウィンドウ測定を問い合わせる
他のメトリック ビューと同様に、ウィンドウ メジャーを使用してメトリック ビューにクエリを実行できます。 次の例では、メトリック ビューに対してクエリを実行します。
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