メトリクスビューでのウィンドウメジャーの使用
実験段階
この機能は 試験段階です。
ウィンドウ・メジャーを使用すると、メトリクス・ビューでウィンドウ・アグリゲーション、累積アグリゲーション、または半加法アグリゲーションを持つメジャーを定義できます。これらの種類のメジャーでは、移動平均、前期比の変化、累計など、より複雑な計算が可能です。このページには、メトリクスビューでウィンドウメジャーを操作する方法を示す実際の例が含まれています。
ウィンドウ メジャーの定義
ウィンドウ・メジャーを使用すると、ウィンドウ・アグリゲーション、累積アグリゲーション、または半加法アグリゲーションを使用してメジャーを定義できます。ウィンドウ メジャーには、次の必須値が含まれます。
-
命令: ウィンドウの順序を決定するディメンション。
-
範囲: ウィンドウの範囲 (トレーリング、累積、すべてのデータなど) を定義します。可能な範囲値は次のとおりです。
current
: ウィンドウの順序付け値が現在の行の値と等しい行を含めます。cumulative
: ウィンドウの順序付け値が現在の行の値以下であるすべての行が含まれます。trailing <value> <unit>
: 現在のローから、指定した時間単位数だけ戻るローが含まれます (trailing 3 months
など)。これには、現在のユニットは含まれません。たとえば、trailing 3 months
は現在の月を除外します。leading <value> <unit>
: 現在のローから、指定した時間単位数だけ進むローが含まれます (leading 7 days
など)。all
: ウィンドウの値に関係なく、すべての行を含めます。
-
半付加的: order フィールドがクエリの
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 日前 (日付自体を除く) と定義しています。
半加法: 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
次の詳細は、この定義の主要な部分を示しています。
順序: date
は、 date
ディメンションがウィンドウを順序付けていることを確認します。
範囲: cumulative
、ウィンドウを各日付までのすべてのデータとして定義します。
セミアディティブ: last
は、ディメンションを集計するときに最後の累積値が使用されるようにします。
Period to date メジャーの例
特定の期間の累計を計算します。
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 日に制限し、日をまたいで集計しません。 -
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