プロパティ関連付けファネル関数 finder_funnel は、特定のタイムウィンドウ内のイベントのファネル結果を計算するために使用できます。関連付けのためのイベントプロパティを指定できます。ただし、ファネル結果を時間でグループ化することはできません。このトピックでは、この関数の使用方法について説明します。
背景情報
finder_funnel 関数は、プロパティによってイベントを関連付けるために使用できます。たとえば、ゲームシナリオでファネルを設定し、ファネルにゲームへのログイン、ゲームへの参加、ゲームのプレイ、ゲームレベルの決済、ゲームからのログアウトなどのステップが含まれているとします。さらに、各イベントに「国」プロパティを指定します。この場合、このプロパティを関連付け ID として使用して、各ステップでのコンバージョンが同じプロパティ値に基づいて実行されるようにすることができます。ファネルの異なるステップで関連付けに使用されるプロパティは、同じでも異なっていてもかまいません。ただし、関連付けに使用されるプロパティは同じ型である必要があります。
制限事項
Hologres V2.2.32 以降および Hologres V3.0.12 以降のみが finder_funnel 関数をサポートしています。
注意事項
ファネル関数を使用するには、スーパーユーザとして次のステートメントを実行して拡張機能をインストールする必要があります。
CREATE extension flow_analysis; --拡張機能をインストールします。拡張機能はデータベースレベルでインストールされます。各データベースでは、拡張機能を1回だけインストールする必要があります。
デフォルトでは、拡張機能は public スキーマにロードされます。拡張機能を他のスキーマにロードすることはできません。
finder_funnel (プロパティ関連付けファネル関数)
この関数は、特定のタイムウィンドウ内での各ユーザーのパフォーマンスを計算するために使用され、指定されたイベントディメンションでの関連付け分析をサポートします。
関数の構文:
finder_funnel(window, start_timestamp, step_interval, step_numbers, num_events, attr_related, time_zone, is_relative_window, server_timestamp, client_timestamp, prop1, prop2, ..., check_event1, check_event2...)パラメーター
パラメーター
必須
説明
window
はい
統計分析のウィンドウ。単位:ミリ秒。
start_timestamp
はい
分析の開始時刻。TIMESTAMP 型と TIMESTAMPTZ 型がサポートされています。
step_interval
はい
ステップサイズの期間。コンバージョン計算と分析の粒度です。単位:秒。
step_numbers
はい
分析する必要があるステップ数。たとえば、
step_interval=86400 (1日), step_numbers=7は、start_timestamp パラメーターで指定された時刻から始まる7日間のファネルデータを示します。num_events
はい
分析する必要があるイベントの数。
attr_related
はい
イベントに関連付けられたプロパティがあるかどうかを示します。パラメーター値は INT 型の数値です。値がバイナリで表されている場合、
i番目の桁が 1 であることは、i+1番目のイベントに関連付けられたプロパティがあることを示します。ほとんどの場合、attr_related パラメーターは prop パラメーターと一緒に使用する必要があります。入力する必要がある prop 式の数は、バイナリで設定された 1 の数と同じである必要があります。説明attr_related パラメーターが 0 に設定されている場合、イベントに関連付けられたプロパティはありません。
time_zone
はい
入力時間に対応するタイムゾーン。パラメーター値は TEXT 型であり、
Asia/Shanghaiなどの標準タイムゾーン形式を使用する必要があります。is_relative_windowパラメーターが true に設定されている場合にのみ、出力結果に影響します。つまり、結果はタイムゾーンに基づいて表示されます。is_relative_window
はい
ウィンドウが複数カレンダー日のウィンドウかどうかを示します。デフォルト値は false です。このパラメーターを true に設定すると、他のパラメーターに次の制限が課せられます。
window: パラメーター値は 86,400,000 の整数倍である必要があります。
step_interval: パラメーター値は 86400 である必要があります。これは、1つの観測ステップサイズが1日であることを示します。
説明カレンダー日とは、毎日の
00:00:00 から 23:59:59までの期間を指します。最初のカレンダー日はイベント時刻から始まり 23:59:59 に終了し、後続のカレンダー日は終日です。ほとんどの場合、カレンダー日をウィンドウとして使用して毎日のファネルデータを観測し、洗練されたビジネス運用を実装できます。server_timestamp
はい
イベントが発生したサーバー時刻。TIMESTAMP 型と TIMESTAMPTZ 型がサポートされています。このパラメーターは、関数が実行されているときにイベントが属するイベントスロットまたはステップを計算するために使用されます。
client_timestamp
はい
イベントが発生したクライアント時刻。TIMESTAMP 型と TIMESTAMPTZ 型がサポートされています。このパラメーターで指定された時刻のデータ型は、start_timestamp パラメーターで指定された時刻のデータ型と同じである必要があります。このパラメーターは、関数が実行されているときにデータをソートするために使用されます。
prop
はい
イベントの関連付けられたプロパティ。すべてのプロパティのデータ型は同じである必要があります。そうでない場合、比較を実行できません。
check_event
はい
分析する必要があるイベントのリスト。window パラメーターで定義された期間内に、特定の条件を満たすイベントは有効なイベントと見なされ、コンバージョン分析に参加します。たとえば、3つのイベントを分析する場合、
EventName = 'E0001', EventName = 'E0002', EventName = 'E0003'と入力します。戻り値
この関数の戻り値は、
{<最終的に到達した n 番目のイベント>, <各ステップで最終的に到達した n 番目のイベント>}です。説明最終的に到達した n 番目のイベントは、すべてのステップの中で最も桁数の多いイベントを示します。
funnel_rep (ファネル結果セット関数)
funnel_rep 関数を使用すると、finder_funnel 関数を使用して計算されたファネル結果を集計できます。詳細については、「ディメンショングループ化ファネル関数 (finder_group_funnel)」をご参照ください。
サンプルデータ
最初にデータを準備するために、次のステートメントを実行する必要があります。
CREATE TABLE finder_funnel_test_1(id INT, event_time TIMESTAMP, event TEXT, province TEXT,city TEXT);
INSERT INTO finder_funnel_test_1 VALUES
(1111, '2024-01-02 00:00:00', 'Registration', 'Beijing','Beijing'),
(1111, '2024-01-02 00:00:01', 'Logon', 'Beijing','Beijing'),
(1111, '2024-01-02 00:00:02', 'Payment', 'Beijing','Beijing'),
(1111, '2024-01-02 00:00:03', 'Exit', 'Beijing','Beijing'),
(1111, '2024-01-03 00:00:00', 'Registration', 'Beijing','Beijing'),
(1111, '2024-01-03 00:00:01', 'Logon', 'Beijing','Beijing'),
(1111, '2024-01-03 00:00:02', 'Payment', 'Beijing','Beijing'),
(1111, '2024-01-04 00:00:00', 'Registration', 'Beijing','Beijing'),
(1111, '2024-01-04 00:00:01', 'Logon', 'Beijing','Beijing'),
(2222, '2024-01-02 00:00:00', 'Registration', 'Zhejiang','Hangzhou'),
(2222, '2024-01-02 00:00:00', 'Logon', 'Zhejiang','Hangzhou'),
(2222, '2024-01-02 00:00:01', 'Payment', 'Zhejiang','Hangzhou'),
(2222, '2024-01-02 00:00:03', 'Payment', 'Zhejiang','Hangzhou');例
シナリオ 1:プロパティ関連付けを設定せずに、各ユーザーが各ステップで到達するイベントを計算する
この例では、サンプルデータに基づいて finder_funnel 関数を使用する方法を示します。
クエリウィンドウは3日で、ステップサイズは3で1日ごとに分割され、合計4つのイベントがコンバージョンに参加します。コード:
-- クエリウィンドウは3日で、ステップサイズは3で1日ごとに分割され、合計4つのイベントがコンバージョンに参加します。
SELECT
id,
finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 0, 'Asia/Shanghai', FALSE, event_time, event_time, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
FROM
finder_funnel_test_1
GROUP BY
id;次の結果が返されます。
id | funnel_res
------+------------
2222 | {3,3,0,0}
1111 | {4,4,3,2}
(2 rows) funnel_res 列の結果の解釈:最初の数字はユーザーが最終的に到達した n 番目のイベントを示し、後続の各数字は各ステップで到達した n 番目のイベントを示します。たとえば、結果 id=1111, funnel_res={4,4,3,2} は、ユーザーが最終的に4番目のイベントに到達したことを示します。ユーザーは最初のステップで4番目のイベントに到達し、2番目のステップで3番目のイベントに到達し、3番目のステップで2番目のイベントに到達します。
シナリオ 2:関連付けのためのイベントプロパティを指定する
この例では、サンプルデータに基づいて finder_funnel 関数を使用する方法を示します。
attr_related パラメーターは 3 に設定されています。これはバイナリでは 11 です。この値は、最初と2番目のイベントに関連付けられたプロパティがあることを示します。prop パラメーターは province に設定されています。これは、2つのイベントが province のディメンションで分析されることを示します。
SELECT
id,
finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 3, 'Asia/Shanghai', FALSE, event_time, event_time, province, province, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
FROM
finder_funnel_test_1
GROUP BY
id;次の結果が返されます。
id | funnel_res
------+------------
2222 | {3,3,0,0}
1111 | {4,4,3,2}
(2 rows)funnel_res 列の結果の解釈:結果は、各ユーザーが最終的に到達した n 番目のイベントと、プロパティ関連付け後に各ユーザーが各ステップで最終的に到達した n 番目のイベントを表示します。
シナリオ 3:指定されたイベントプロパティが関連付けられた後に集計を実行する
この例では、サンプルデータに基づいて finder_funnel 関数を使用する方法を示します。
SELECT
funnel_rep (3, 4, funnel_res)
FROM (
SELECT
id,
finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 3, 'Asia/Shanghai', FALSE, event_time, event_time, province, province, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res
FROM
finder_funnel_test_1
GROUP BY
id) a;次の結果が返されます。
funnel_rep
-------------------------------------------
{"2,2,2,1","2,2,2,1","1,1,1,0","1,1,0,0"}
(1 row)シナリオ 4:複数カレンダー日をウィンドウとして使用する
このシナリオでは、複数カレンダー日をウィンドウとして使用して、各カレンダー日のファネルデータを表示します。この例では、3カレンダー日における4つのイベントのファネルデータを示します。
テーブルを作成し、テーブルにデータを挿入します。
CREATE TABLE finder_funnel_test_3(id INT, event_time TIMESTAMP, event TEXT, province TEXT,city TEXT); INSERT INTO finder_funnel_test_3 VALUES (1111, '2024-01-02 00:00:02', 'Registration', 'Beijing','Beijing'), (1111, '2024-01-02 00:00:03', 'Logon', 'Beijing','Beijing'), (1111, '2024-01-03 00:00:04', 'Payment', 'Beijing','Beijing'), (1111, '2024-01-05 00:00:01', 'Exit', 'Beijing','Beijing'), (2222, '2024-01-02 00:00:00', 'Registration', 'Zhejiang','Hangzhou'), (2222, '2024-01-02 00:00:00', 'Logon', 'Zhejiang','Hangzhou'), (2222, '2024-01-02 00:00:01', 'Payment', 'Zhejiang','Hangzhou'), (2222, '2024-01-02 00:00:03', 'Payment', 'Zhejiang','Hangzhou');3カレンダー日に基づいて計算を実行します。2024年1月2日に
idパラメーターが 1111 に設定されている場合、00:00:02 から 23:59:59までの期間がカレンダー日と見なされます。2024年1月3日と2024年1月4日は、さらに2つのカレンダー日です。2024年1月5日はウィンドウ内ではありません。したがって、カレンダー日で観測される最終結果がid=1111の場合、3番目のイベントに到達します。SELECT id, finder_funnel (86400000 * 3, EXTRACT(epoch FROM TIMESTAMP'2024-01-02 00:00:00')::BIGINT, 86400, 3, 4, 0, 'Asia/Shanghai', TRUE, event_time, event_time, event = 'Registration', event = 'Logon', event = 'Payment', event = 'Exit') AS funnel_res FROM finder_funnel_test_3 GROUP BY id;次の結果が返されます。
id | funnel_res ------+------------ 1111 | {3,3,0,0} 2222 | {3,3,0,0} (2 rows)