本文介绍 漏斗分析函数 的使用场景,和函数的基本用法。
漏斗分析函数业务场景:选定一段时间范围,观察此时间范围内每一个时间单位(天)内用户按一定时间范围划分的漏斗分层汇总情况。
使用 finderFunnel 计算 每个用户在一段时间窗口内的表现。
finderFunnel(window, start_timestamp, check_granularity, watch_numbers)(server_timestamp, client_timestamp, check_event1, check_event2...)
window
:分析观察的窗口总时长时长,单位和client_timestamp
一致,通常为毫秒级,下例中为 86400 *7 *1000 毫秒,也即 7 天。start_timestamp
: 分析开始时间戳,如分析从 2022-06-01 开始,所以开始时间戳为 toUInt64(toUnixTimestamp('2022-06-01')) = 1654012800
check_granularity
: 一个观察步长持续时间,多大粒度内来计算转化分析,单位和client_timestamp
一致,如 1 天则为 86400(单位:秒)。watch_numbers
: 观察几个步长,如check_granularity
是86400(1 天),watch_numbners = 7
,指代从start_timestamp
开始观察 7 天每天的漏斗情况server_timestamp
:事件发生服务器时间戳列,需转化为UInt64 类型,用于函数运行时,计算事件所属时间槽位/步进,通常为秒级。client_timestamp
:事件发生客户端时间戳列,需转化为UInt64 类型,用于函数运行时对数据进行排序,通常为毫秒级。check_event
: 计算转化的事件列表,在window
定义的分析时长范围内满足条件的将会被认为事件触发有效。如有3个事件,则输入:EventName = 'E0001', EventName = 'E0002', EventName = 'E0003'使用 funnelRep 聚合 finderFunnel 的结果,形成漏斗每一层所有用户的汇总结果。
funnelRep(number_steps, evnet_count)(funnel_res)
number_steps
:UInt 型数字,包含的时间槽位数量,通常和 finderFunnel
函数中watch_numners
保持一致。evnet_count
: UInt 型数字,表示事件转化链上事件总数,通常和finderFunnel
函数中check_event
的时间数量保持一致,funnel_res
:转化步骤列表,由 finderFunnel
子查询产生,包含每一个用户产生的所有转化步骤列表。返回结果:
number_steps
个子数组,第一个子数组是汇总的结果,第二个子数组是第一个时间槽在window
定义的分析时长范围内的漏斗计算结果,以此类推。以下示例指代返回 从 2022/6/1-2022/6/8 的 7 天中, 'E0001', 'E0002', 'E0003' 3 个事件的转化漏斗:
SELECT funnelRep(7, 3)(funnel_res) FROM ( SELECT finderFunnel(7 * 86400 * 1000, 1654012800, 86400, 7)(toUInt64(toUnixTimestamp(LOG.EventTime)), toUInt64(toUnixTimestamp(LOG.EventTime)) * 1000, LOG.EventName = 'E0001', LOG.EventName = 'E0002', LOG.EventName = 'E0003') AS funnel_res FROM LOG LEFT JOIN ( SELECT * FROM User AS t ) AS U ON LOG.Visitor = U.Visitor WHERE (EventTime >= '2022-06-01 00:00:00') AND (EventTime <'2022-06-08 00:00:00') AND (EventName IN ('E0001', 'E0002', 'E0003')) GROUP BY Visitor ) SETTINGS distributed_product_mode = 'local', distributed_group_by_no_merge = 1
上面的示例SQL 返回为
┌─funnelRep(7, 3)(funnel_res)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ [[5994501,5944849,56423],[3791527,3780488,39431],[3792876,3767458,33024],[3792031,3733089,26709],[3791519,3656585,20668],[3791859,3480158,14385],[3793389,3077233,8691],[3792344,2143108,3641]] │