window_funnel
搜索滑动时间窗口内的事件列表,计算条件匹配的事件链里的最大连续事件数。该函数是一种漏斗函数,是比较常见的转化分析方法,用于分析用户在各阶段行为的转化率。
该函数遵循如下规则:
-
从事件链中的第一个条件开始判断。如果数据中包含符合条件的事件,则向计数器加 1,并以此事件对应的时间作为滑动窗口的起始时间。如果未能找到符合第一个条件的数据,则返回为 0.
-
在滑动窗口内,如果事件链中的事件按顺序发生,则计数器递增;如果超出了时间窗口,则计数器不再增加。
-
如有多条符合条件的事件链,则输出最长的事件链。
该函数从 2.3 版本开始支持。
语法
BIGINT window_funnel(BIGINT window, DATE|DATETIME time, INT mode, array[cond1, cond2, ..., condN])
参数说明
-
window:滑动窗口的大小,类型为 BIGINT。单位取决于time参数,如果time的取值类型为DATE,窗口单位为天;如果time的取值类型为 DATETIME,窗口单位为秒。 -
time:包含时间戳的列。目前支持 DATE 和 DATETIME 类型。 -
mode:事件链的筛选模式,类型为 INT。取值范围:0,1,2,4。- 默认值为
0,表示执行最一般的漏斗计算。 - 模式为
1时(bits 设置第 1 位)表示DEDUPLICATION模式,即筛选出的事件链不能有重复的事件。假设array参数为[event_type='A', event_type='B', event_type='C', event_type='D'],原事件链为 "A-B-C-B-D"。由于事件 B 重复,那么筛选出的事件链只能是 "A-B-C"。 - 模式为
2时(bits 设置第 2 位)表示FIXED模式,即筛选出的事件链不能有跳跃的事件,假设array参数如上不变,原事件链为 "A-B-D-C",由于事件 D 跳跃,那么筛选出的事件链只能是 "A-B"。 - 模式为
4时(bits 设置第3位)表示INCREASE模式,即筛选出的事件链中,连续事件的时间戳必须严格递增。此模式自 2.5 版本开始支持。
- 默认值为
-
array:定义的事件链,类型为 ARRAY 。