説明
V4.4.2バージョンでは、この関数はV4.4.2 BP1バージョンから導入されました。
宣言
WINDOW_FUNNEL(window, mode, timestamp, cond1, cond2, ..., condN)
説明
WINDOW_FUNNELは、ファネル分析の集約関数であり、指定された時間窓内で条件を順次満たす最大ステップ数を計算します。
この関数はHologres/ClickHouseの構文と互換性があります。
パラメータ説明
パラメータ |
タイプ |
説明 |
|---|---|---|
| window | BIGINT |
統計のスライディング時間ウィンドウサイズを表します。単位は timestamp 列に依存します。
注意このパラメータは定数式でなければなりません。最初の条件に合致するデータがない場合、関数は0を返します。 |
| mode | VARCHAR |
マッチングモードを表します。値は以下のとおりです:
|
| timestamp | DATE/INT/NUMBER |
タイムスタンプの列を表します。 |
| cond1, cond2, ..., condN | BOOLEAN |
条件イベントチェーンを表します。ブール式であり、最大256個のイベントをサポートします。 |
戻り値説明
UINT32型の値を返します。値の範囲は[0, N]で、Nは条件イベントの数です。- 指定された時間窓内で、最初の条件から順にマッチした最大ステップ数を表します。
例
テーブル
test_tbl1を作成します。obclient> CREATE TABLE test_tbl1 (col1 INT, col2 DATE, col3 VARCHAR2(50));テーブル
test_tbl1にテストデータを挿入します。obclient> INSERT INTO test_tbl1 VALUES (1, TO_DATE('2026-01-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'step1'), (1, TO_DATE('2026-01-01 10:05:00', 'YYYY-MM-DD HH24:MI:SS'), 'step2'), (1, TO_DATE('2026-01-01 10:09:00', 'YYYY-MM-DD HH24:MI:SS'), 'step3'), -- 10分のウィンドウ内で (2, TO_DATE('2026-01-01 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'step1'), (2, TO_DATE('2026-01-01 11:05:00', 'YYYY-MM-DD HH24:MI:SS'), 'step2'), (2, TO_DATE('2026-01-01 11:15:00', 'YYYY-MM-DD HH24:MI:SS'), 'step3'), -- 10分のウィンドウを超える (3, TO_DATE('2026-01-01 11:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'step1'), (3, TO_DATE('2026-01-01 11:01:00', 'YYYY-MM-DD HH24:MI:SS'), 'step2'), (3, TO_DATE('2026-01-01 11:02:00', 'YYYY-MM-DD HH24:MI:SS'), 'step1'), -- 重複するstep1 (3, TO_DATE('2026-01-01 11:03:00', 'YYYY-MM-DD HH24:MI:SS'), 'step3');col1でグループ化し、col1の値が1または2の場合、各グループ内のユーザー(col2で識別)が600秒以内に 'step1' → 'step2' → 'step3' プロセスのファネル段階を完了した割合を集計します。obclient> SELECT col1, WINDOW_FUNNEL( 600, 'default', col2, col3 = 'step1', col3 = 'step2', col3 = 'step3') AS funnel_stage FROM test_tbl1 WHERE col1 IN (1, 2) GROUP BY col1 ORDER BY col1;実行結果は次のとおりです:
+------+--------------+ | COL1 | FUNNEL_STAGE | +------+--------------+ | 1 | 3 | | 2 | 2 | +------+--------------+ 2 rows in set異なるモードの比較:
defaultモードとstrict_deduplicationモードの違いを示します。defaultモード:col1でグループ化し、col1 = 3のユーザー(col2で識別)が1800秒以内に 'step1' → 'step2' → 'step3' プロセスのファネル段階を完了した割合を集計します。obclient> SELECT col1, WINDOW_FUNNEL( 1800, 'default', col2, col3 = 'step1', col3 = 'step2', col3 = 'step3') AS funnel_stage FROM test_tbl1 WHERE col1 = 3 GROUP BY col1;実行結果は次のとおりです:
+------+--------------+ | COL1 | FUNNEL_STAGE | +------+--------------+ | 3 | 3 | +------+--------------+ 1 row in setstrict_deduplicationモード(重複イベント発生時に停止):col1でグループ化し、col1 = 3のユーザー(col2で識別)が1800秒以内に 'step1' → 'step2' → 'step3' プロセスのファネル段階を完了した割合を集計します。obclient> SELECT col1, WINDOW_FUNNEL( 1800, 'strict_deduplication', col2, col3 = 'step1', col3 = 'step2', col3 = 'step3') AS funnel_stage FROM test_tbl1 WHERE col1 = 3 GROUP BY col1;実行結果は次のとおりです:
+------+--------------+ | COL1 | FUNNEL_STAGE | +------+--------------+ | 3 | 2 | +------+--------------+ 1 row in set