本文介绍日志服务支持的窗口漏斗函数语法及常见场景的使用示例。
说明
在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time'
代表字符串,time
或 "time"
代表字段名或列名。
函数名称 | 语法 | 说明 |
---|---|---|
WINDOW_FUNNEL(sliding_window, | 在滑动的时间窗口中搜索事件链并计算事件链中发生的最大连续的事件数。 | |
WINDOW_FUNNEL(sliding_window, | 在滑动的时间窗口中搜索事件链并计算事件链中发生的最大连续的事件数。 |
窗口漏斗函数用于在滑动的时间窗口中搜索事件链并计算事件链中发生的最大连续的事件数。根据您定义的事件链,从第一个事件开始匹配,依次做有序最长的匹配,返回最大连续事件数。
语法格式
如果数据中已定义事件列(event_id),可选择如下语法。
WINDOW_FUNNEL(sliding_window, timestamp, event_id, array[event_list01, event_list02...])
如果您想要自定义事件的非枚举值,可选择如下语法,更具有灵活性。
WINDOW_FUNNEL(sliding_window, timestamp, ARRAY[event_id=event_list01, event_id=event_list02...])
参数说明
参数 | 说明 |
---|---|
sliding_window | 滑动的时间窗口,单位为秒。参数值为 Bigint 类型。 |
timestamp | 时间戳,单位为秒。参数值为bigint类型。推荐使用日志服务内置的时间字段**time**。 |
event_id | 日志字段,该字段值表示事件,例如:A、B、C。参数值为varchar类型。 |
event_list | 自定义的事件链,最多支持32个事件。参数值为array类型。例如:
|
返回值说明
返回值为 Bigint 类型。
示例1
场景
根据user_key
进行分组,查询每个user前进的最多连续stage数。
日志样例
检索和分析语句
* | SELECT user_key, WINDOW_FUNNEL(86400,__time__/1000,ARRAY [stage_key='stage1', stage_key='stage2',stage_key='stage3']) AS levels GROUP BY user_key ORDER BY user_key
检索和分析结果
示例2
场景
根据 user_key
进行分组,查询每个user前进的最多连续stage数。
日志样例
检索和分析语句
* | SELECT user_key, WINDOW_FUNNEL(86400,__time__/1000,stage_key, ARRAY ['stage1', 'stage2', 'stage3']) AS levels GROUP BY user_key ORDER BY user_key
检索和分析结果