starrocks 漏斗分析 window_funnel 开发

本文详细描述了在Starrocks数据库中利用window_funnel函数进行漏斗分析的过程,包括事件时间单位设置、SQL查询示例以及如何根据查询结果计算转化率、到达率等关键指标。作者还提到如何添加任意事件的查询功能。
摘要由CSDN通过智能技术生成

近期做漏斗分析的功能开发,总结一下开发过程。
数据库使用的是 starrocks,由于支持 window_funnel 函数,所以直接使用,点击查看

直接上 sql:

SELECT bi_device_id,
     window_funnel(3600, datetime, 0, [(event_name like 'account_login_success') AND (`date` <='2023-12-27'), event_name like 'ad_click']) as `funnel`
FROM business_table
WHERE (date >= '2023-12-26' AND date <= '2023-12-28')
GROUP BY bi_device_id

window_funnel 参数说明:

  1. 3600 单位依赖第二个参数,如果是 date 类型,单位为天,如果是 datetime 类型,单位为秒
  2. 取的是 business_table 表中的事件时间字段
  3. 模式,查看上面链接有 0,1,2,4
  4. 事件数组,event_name 为表中事件名称的字段,漏斗事件的顺序,其中每一个事件都可以有自己的筛选条件

查询结果如下:

bi_device_idfunnel
e4b5175c-d6b0-45ad-817f-99e3b61e527a4
c10decef-a12b-4625-9169-4fc9d7c4dc274
00de37e6-cd7e-4414-ad04-daa7ef14e3763
3b818e3b-bc6f-4171-a5de-aa8fd4ae75292
94e4f3f0-c972-46cb-a639-7608ae8867181
06ec42a7-ffe6-406e-a136-f25424dfa0840

2023-12-26 到 12-28 之间的所有事件中,
2023-12-27 号之前触发account_login_success事件后 3600 秒内设备触发 ad_click 事件的数量。
基于上述结果可以根据业务做转化率和流失率、到达率的计算,上 sql:

SELECT ifnull(sum(if(funnel >= 1, 1, 0)), 0)                                        as `account_login_success_step_1`,
       ifnull(sum(if(funnel >= 2, 1, 0)), 0)                                        as `ad_click_step_2`,
       ifnull(sum(if(funnel >= 3, 1, 0)), 0)                                        as `ad_impression_step_3`,
       ifnull(sum(if(funnel >= 4, 1, 0)), 0)                                        as `ad_request_step_4`,
       ifnull(round(sum(if(funnel >= 4, 1, 0)) / sum(if(funnel >= 1, 1, 0)), 4), 0) as `all_conversion_rate`,
       '1.0'                                                                        as `1->1_rate`,
       ifnull(round(sum(if(funnel >= 2, 1, 0)) / sum(if(funnel >= 1, 1, 0)), 4), 0) as `1->2_rate`,
       ifnull(round(sum(if(funnel >= 2, 1, 0)) / sum(if(funnel >= 1, 1, 0)), 4), 0) as `1->2_arrival_rate`,
       ifnull(round(sum(if(funnel >= 3, 1, 0)) / sum(if(funnel >= 2, 1, 0)), 4), 0) as `2->3_rate`,
       ifnull(round(sum(if(funnel >= 3, 1, 0)) / sum(if(funnel >= 1, 1, 0)), 4), 0) as `2->3_arrival_rate`,
       ifnull(round(sum(if(funnel >= 4, 1, 0)) / sum(if(funnel >= 3, 1, 0)), 4), 0) as `3->4_rate`,
       ifnull(round(sum(if(funnel >= 4, 1, 0)) / sum(if(funnel >= 1, 1, 0)), 4), 0) as `3->4_arrival_rate`
FROM (SELECT bi_device_id,
			     window_funnel(3600, datetime, 0, 
			     [(event_name like 'account_login_success') AND (`date` <='2023-12-27'),
			     event_name like 'ad_click',
			     event_name like 'ad_impression',
			     event_name like 'ad_request']) as `funnel`
			FROM business_table
			WHERE (date >= '2023-12-26' AND date <= '2023-12-28')
			GROUP BY bi_device_id) t

查询结果出来就是各步骤的转化率和到达率。

基于上述功能,新增了任意事件,任意事件使用 event_name like ‘%%’ 实现查询任意事件。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值