メトリクス ビューでウィンドウ メジャーを使用する
実験段階
この機能は実験的なものです。
ウィンドウ メジャーを使用すると、メトリクス ビューでウィンドウ集計、累積集計、または準加法集計を使用してメジャーを定義できます。 これらのタイプのメジャーを使用すると、移動平均、前期比の変化、累計などのより複雑な計算が可能になります。このページには、メトリクス ビューでウィンドウ メジャーを操作する方法を示す実践的な例が含まれています。
ウィンドウの測定を定義する
ウィンドウ メジャーを使用すると、ウィンドウ集計、累積集計、または半加法集計を使用してメジャーを定義できます。ウィンドウ メジャーには、次の必須値が含まれます。
-
order: ウィンドウの順序を決定する次元。
-
範囲: 末尾のデータ、累積のデータ、すべてのデータなど、ウィンドウの範囲を定義します。可能な範囲の値は次のとおりです。
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
この例では、次の構成が適用されます。
順序: 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
この例では、次の条件が適用されます。
-
2 つのウィンドウメジャーが使用されます。1 つは前日の合計売上を計算するためのもので、もう 1 つは当日の売上を計算するためのものです。
-
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次元がウィンドウを順序付けるようにします。
範囲: 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
次の詳細は、この定義の重要な部分を強調しています。
-
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
次の詳細は、この定義の重要な部分を強調しています。
-
順序:
dateは、date次元がウィンドウを順序付けるようにします。 -
範囲:
currentは、日をまたがる集計を行わずにウィンドウを 1 日に制限します。 -
準加法:
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