前言

本文章主要讲解,当漏斗分析时,数据需要通过关联多个表进行获取数据,并且多个周期分析时数据出现重叠现象,针对两个点进行优化。


1.请提取新增订购4天内各个周期的,用户数留存情况、呼转情况、短信下发情况

set hivevar:v_dt=2022-06-01;

select dt

, nvl(sum(new_ord_ucn_day),0) as new_ord_ucn_day

, nvl(sum(in_ord_cn1) ,0) as in_ord_cn1

, nvl(sum(in_sk_cn1) ,0) as in_sk_cn1

, nvl(sum(in_sms_down_cn1),0) as in_sms_down_cn1

, nvl(sum(in_ord_cn2) ,0) as in_ord_cn2

, nvl(sum(in_sk_cn2) ,0) as in_sk_cn2

, nvl(sum(in_sms_down_cn2),0) as in_sms_down_cn2

, nvl(sum(in_ord_cn3) ,0) as in_ord_cn3

, nvl(sum(in_sk_cn3) ,0) as in_sk_cn3

, nvl(sum(in_sms_down_cn3),0) as in_sms_down_cn3

, nvl(sum(in_ord_cn4) ,0) as in_ord_cn4

, nvl(sum(in_sk_cn4) ,0) as in_sk_cn4

, nvl(sum(in_sms_down_cn4),0) as in_sms_down_cn4

from (

     select

–按统计周期划分

     casewhen a.dt in('a1','a2','a3','a4') then '${hivevar:v_dt}'when a.dt in('b1','b2','b3')      then date_add('${hivevar:v_dt}',1)when a.dt in('c1','c2')           then date_add('${hivevar:v_dt}',2)when a.dt in('d1')                then date_add('${hivevar:v_dt}',3)end  as dt--a.dt=a1、a2、a3、a4限制漏斗周期范围,a.dt、b.dt、c.dt、d.dt=a1、a1、a1、a1限制漏斗数据范围,case when a.dt='a1'                                           then 1 when a.dt='b1'                                           then 1 when a.dt='c1'                                             then 1 when a.dt='d1'                                             then 1 end as new_ord_ucn_day       --当日新增订购用户数,case when a.dt='a1' and b.dt='a1'                             then 1 when a.dt='b1' and b.dt='b1'                             then 1 when a.dt='c1' and b.dt='c1'                               then 1 when a.dt='d1' and b.dt='d1'                               then 1 end as in_ord_cn1            --第1天留存用户数,case when a.dt='a1' and b.dt='a1' and c.dt='a1'               then 1 when a.dt='b1' and b.dt='b1' and c.dt='b1'               then 1 when a.dt='c1' and b.dt='c1' and  c.dt='c1'                then 1 when a.dt='d1' and b.dt='d1' and  c.dt='d1'                then 1 end as in_sk_cn1             --第1天留存有呼转用户数,case when a.dt='a1' and b.dt='a1' and c.dt='a1' and d.dt='a1' then 1 when a.dt='b1' and b.dt='b1' and c.dt='b1' and d.dt='b1' then 1 when a.dt='c1' and b.dt='c1' and  c.dt='c1' and  d.dt='c1' then 1 when a.dt='d1' and b.dt='d1' and  c.dt='d1' and  d.dt='d1' then 1 end as in_sms_down_cn1       --第1天留存有呼转有短信下发用户数,case when a.dt='a2' and b.dt='a2'                             then 1 when a.dt='b2' and b.dt='b2'                             then 1 when a.dt='c2' and b.dt='c2'                               then 1 end as in_ord_cn2            --第2天留存用户数,case when a.dt='a2' and b.dt='a2' and c.dt='a2'               then 1 when a.dt='b2' and b.dt='b2' and c.dt='b2'               then 1 when a.dt='c2' and b.dt='c2' and  c.dt='c2'                then 1 end as in_sk_cn2             --第2天留存有呼转用户数,case when a.dt='a2' and b.dt='a2' and c.dt='a2' and d.dt='a2' then 1 when a.dt='b2' and b.dt='b2' and c.dt='b2' and d.dt='b2' then 1 when a.dt='c2' and b.dt='c2' and  c.dt='c2' and  d.dt='c2' then 1 end as in_sms_down_cn2       --第2天留存有呼转有短信下发用户数,case when a.dt='a3' and b.dt='a3'                             then 1 when a.dt='b3' and b.dt='b3'                             then 1 end as in_ord_cn3            --第3天留存用户数,case when a.dt='a3' and b.dt='a3' and c.dt='a3'               then 1 when a.dt='b3' and b.dt='b3' and c.dt='b3'               then 1 end as in_sk_cn3             --第3天留存有呼转用户数,case when a.dt='a3' and b.dt='a3' and c.dt='a3' and d.dt='a3' then 1 when a.dt='b3' and b.dt='b3' and c.dt='b3' and d.dt='b3' then 1 end as in_sms_down_cn3       --第3天留存有呼转有短信下发用户数,case when a.dt='a4' and b.dt='a4'                             then 1 end as in_ord_cn4            --第4天留存用户数,case when a.dt='a4' and b.dt='a4' and c.dt='a4'               then 1 end as in_sk_cn4             --第4天留存有呼转用户数,case when a.dt='a4' and b.dt='a4' and c.dt='a4' and d.dt='a4' then 1 end as in_sms_down_cn4       --第4天留存有呼转有短信下发用户数from (--新增用户数select dt, user_numfrom (--新增天期数据切块,按漏斗块切select split(concat_ws('|', case when dt = '${hivevar:v_dt}'              then 'a1' end--漏斗周期1的漏斗数据1, case when dt = '${hivevar:v_dt}'              then 'a2' end--漏斗周期1的漏斗数据2, case when dt = '${hivevar:v_dt}'              then 'a3' end--漏斗周期1的漏斗数据3, case when dt = '${hivevar:v_dt}'              then 'a4' end--漏斗周期1的漏斗数据4, case when dt = date_add('${hivevar:v_dt}', 1) then 'b1' end--漏斗周期2的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 1) then 'b2' end--漏斗周期2的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 1) then 'b3' end--漏斗周期2的漏斗数据3, case when dt = date_add('${hivevar:v_dt}', 2) then 'c1' end--漏斗周期3的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 2) then 'c2' end--漏斗周期3的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 3) then 'd1' end--漏斗周期4的漏斗数据1), '\\|') as dt_arr,user_numfrom dw.tds_status_detail_hly_norm_his twhere dt in (cast('${hivevar:v_dt}' as date)      --第1天, cast(date_add('${hivevar:v_dt}', 1) as date)--第2天, cast(date_add('${hivevar:v_dt}', 2) as date)--第3天, cast(date_add('${hivevar:v_dt}', 3) as date)--第4天) and opt = '27' and prov_id = '44') t1 LATERAL VIEW explode(dt_arr) emp_temp AS dt group by dt, user_num) a--留存用户数LEFT JOIN (select dt, user_numfrom (**--留存天期数据切块,按漏斗块切**select split(concat_ws('|', case when dt = date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗数据3, case when dt = date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗数据4, case when dt = date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗数据3, case when dt = date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗数据1), '\\|') as dt_arr,user_numfrom dw.ads_status_hly_daily twhere dt in (cast(date_add('${hivevar:v_dt}', 1) as date)--第1天, cast(date_add('${hivevar:v_dt}', 2) as date)--第2天, cast(date_add('${hivevar:v_dt}', 3) as date)--第3天, cast(date_add('${hivevar:v_dt}', 4) as date)--第4天) and status = 1 and prov_id = '44') t1 LATERAL VIEW explode(dt_arr) emp_temp AS dt group by dt, user_num) bON A.user_num = b.user_num and A.dt = b.dt--漏斗块关联,主要方便后面组成需要的漏斗分析--呼转用户数LEFT JOIN (select dt, user_numfrom (--呼转天期数据切块,按漏斗块切select split(concat_ws('|', case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗数据1, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗数据2, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗数据3, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗数据4, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗数据1, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗数据2, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗数据3, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗数据1, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗数据2, case when dt >= date_add('${hivevar:v_dt}', 3) and dt <= date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗数据1), '\\|') as dt_arr, user_numfrom dw.dws_sk_called_m_daily t where dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 4) and data_type = 'all' and prov_id = '44' and sk_day_cn > 0) t1 LATERAL VIEW explode(dt_arr) emp_temp AS dt group by dt, user_num) cON A.user_num = c.user_num and A.dt = c.dt**--漏斗块关联,主要方便后面组成需要的漏斗分析**--短信下发用户数LEFT JOIN (select dt, user_numfrom (--短信下发天期数据切块,按漏斗块切select split(concat_ws('|', case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗数据1, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗数据2, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗数据3, case when dt >= '${hivevar:v_dt}'              and dt <= date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗数据4, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗数据1, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗数据2, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗数据3, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗数据1, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗数据2, case when dt >= date_add('${hivevar:v_dt}', 3) and dt <= date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗数据1), '\\|') as dt_arr, user_numfrom dw.tds_sms_down_his t where dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 4)  and data_type = 1 and prov_id = '44') t1 LATERAL VIEW explode(dt_arr) emp_temp AS dt group by dt, user_num) d ON A.user_num = d.user_num and A.dt = d.dt**--漏斗块关联,主要方便后面组成需要的漏斗分析**

) u1

group by dt

;

2.漏斗分析数据结果

dt new_ord_ucn_day in_ord_cn1 in_sk_cn1 in_sms_down_cn1 in_ord_cn2 in_sk_cn2 in_sms_down_cn2 in_ord_cn3 in_sk_cn3 in_sms_down_cn3 in_ord_cn4 in_sk_cn4 in_sms_down_cn4

2022-06-01 53050 52469 2108 51 52336 2496 61 52204 2805 69 52051 3159 80

2022-06-02 4096 3931 689 51 3918 834 68 3908 978 81 0 0 0

2022-06-03 4715 4540 799 82 4529 987 103 0 0 0 0 0 0

2022-06-04 4546 4367 682 63 0 0 0 0 0 0 0 0 0

Time taken: 69.733 seconds, Fetched: 4 row(s)

3.炸裂数据周期的作用

主要把需要关联的数据,按周期划分炸裂成一块一块,方便后面and 各个表的块数据,组成需要的漏斗分析

列子: ,case when a.dt=‘a4’ and b.dt=‘a4’ and c.dt=‘a4’ and d.dt=‘a4’ then 1 end as in_sms_down_cn4 --第4天留存有呼转有短信下发用户数

–新增天期数据切块,按漏斗块切

              select split(concat_ws('|', case when dt = '${hivevar:v_dt}'              then 'a1' end--漏斗周期1的漏斗数据1, case when dt = '${hivevar:v_dt}'              then 'a2' end--漏斗周期1的漏斗数据2, case when dt = '${hivevar:v_dt}'              then 'a3' end--漏斗周期1的漏斗数据3, case when dt = '${hivevar:v_dt}'              then 'a4' end--漏斗周期1的漏斗数据4, case when dt = date_add('${hivevar:v_dt}', 1) then 'b1' end--漏斗周期2的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 1) then 'b2' end--漏斗周期2的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 1) then 'b3' end--漏斗周期2的漏斗数据3, case when dt = date_add('${hivevar:v_dt}', 2) then 'c1' end--漏斗周期3的漏斗数据1, case when dt = date_add('${hivevar:v_dt}', 2) then 'c2' end--漏斗周期3的漏斗数据2, case when dt = date_add('${hivevar:v_dt}', 3) then 'd1' end--漏斗周期4的漏斗数据1), '\\|') as dt_arr,user_numfrom dw.tds_status_detail_hly_norm_his twhere dt in (cast('${hivevar:v_dt}' as date)      --第1天, cast(date_add('${hivevar:v_dt}', 1) as date)--第2天, cast(date_add('${hivevar:v_dt}', 2) as date)--第3天, cast(date_add('${hivevar:v_dt}', 3) as date)--第4天) and opt = '27' and prov_id = '44') t1 LATERAL VIEW explode(dt_arr) emp_temp AS dt group by dt, user_num

漏斗周期漏斗数据关联优化相关推荐

  1. 一文带你读懂单目视觉SLAM数据关联优化

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 联盟成员读书笔记带你深入理解单目SLAM 数据关联的优化 基于图像的特征检测与匹配不可避免地带有误差.如果直接使用图 ...

  2. 杜邦分析法、漏斗分析法和矩阵关联分析法

    数据分析工作涉及到很多的分析方法,比如说杜邦分析法.漏斗分析法以及矩阵关联分析法,这些方法都是能够帮助我们更好地进行数据分析工作.在这篇文章中我们就给大家介绍一下关于杜邦分析法.漏斗分析法和矩阵关联分 ...

  3. 网络优化正在从经验型优化向大数据关联分析优化转变

    大数据技术的快速发展,不仅推动通信业务的创新,同时也在给传统网络的建设和运维带来变革.近几年,大数据技术正在越来越多地应用到网络优化中,成为提升网络优化效率,降低网络运营成本的新手段.在日前召开的&q ...

  4. ClickHouse 实现有序漏斗分析与数据可视化

    Clickhouse 实现漏斗分析与数据可视化 1.前言 2.环境准备 2.1.测试表 2.2.插入伪造的样例数据 2.2.1.插入伪造的登录数据 2.2.2.插入伪造的浏览数据 2.2.3.插入伪造 ...

  5. charts漏斗图表_漏斗图 | ECharts 数据可视化实验室

    介绍 漏斗图又叫倒三角图,漏斗图将数据呈现为几个阶段,每个阶段的数据都是整体的一部分,从一个阶段到另一个阶段数据自上而下逐渐下降,所有阶段的占比总计100%.与饼图一样,漏斗图呈现的也不是具体的数据, ...

  6. 百万数据量下,使用延迟关联优化超大分页

    百万数据量下,使用延迟关联优化超大分页 MySQL 并不是跳过 offset 行,而是取 offset + N 行,然后返回放弃前 offset 行,返回 N 行,那当offset 特别大的时候,效率 ...

  7. 漏斗分析|漏斗分析你真的懂了吗?以淘宝逆向业务为例,诠释漏斗分析全流程...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 春潮带雨晚来急,野渡无人舟自横. ...

  8. 网易互娱数据成本优化治理实践

    1. 项目背景 我们团队为网易互娱大量游戏产品提供了常规概况.经济分析.留存分析.回流分析.付费分析.服务器分析.渠道分析.定制专题.社交分析.全球分析.问卷分析.全球设备等多种游戏分析专题服务,也支 ...

  9. Clipper: 开源的基于图论框架的鲁棒点云数据关联方法(ICRA2021)

    <CLIPPER: A Graph-Theoretic Framework for Robust Data Association>(ICRA 2021 ) 基于图论的点云数据关联方法,通 ...

最新文章

  1. sizeof _countof _tcslen的比较
  2. 后台开发经典书籍--大话设计模式
  3. 一图揭示:营销的目的、策略、战略
  4. python 操作mongodb数据库参考文档
  5. 【HISI系列】之Hi3559A V100R001C02SPC010文档及SDK
  6. 数据说话!UCloud「硬刚」腾讯云,高性能 AMD 云主机哪家强?
  7. 电子双缝干涉,可以在穿过缝前进行探测
  8. SAP 批导程序导入Excel后,Excel自动打开
  9. oracle中聚合比较函数,Oracle 分析函数与聚合函数区别
  10. Java 创建一个Customer类,类中的属性有姓名、年龄、性别,然后创建两个Customer对象,把这两个对象存储在ArrayList对象中,然后再从ArrayList对象中读取出来。
  11. python怎么画波浪,字符波浪|Python练习系列[14]
  12. Python爬虫(二)——urllib库,Post与Get数据传送区别,设置Headers,urlopen方法,简单爬虫
  13. NLP 论文领读 | 缺少有标注的数据集怎么训练文本检索模型?来看看 LaPraDoR怎么做的吧
  14. 动力电池产业剧变中,宁德时代拿什么保住“一哥”地位?
  15. 全球与中国苯二亚甲基二异氰酸酯(XDI)市场发展形势与未来前景分析报告2022-2028年
  16. 关于电子科技大学在校大学生经济状况的调查
  17. 冷启动、热启动时间性能优化
  18. 你懂“晚安”的含义吗?看都高情商的回复,难怪女神会主动找你
  19. c++(3):std::is_arithmetic
  20. 跟我学c++中级篇——类型擦除

热门文章

  1. Jetson Nano 按键切换摄像头
  2. unity3d 混淆
  3. 【报告分享】2020百度美妆行业研究-人群篇-百度营销(附下载)
  4. 大顶堆及小顶堆求最大或最小K个数
  5. 利用大顶堆实现top-k算法
  6. Asterisk PBX
  7. 2016各大公司智力题和找规律题
  8. 2021年,谁发现了边缘计算的赚钱生意?
  9. PullToRefresh第三方刷新控件使用总结
  10. 【MacOS】命令行配置zsh以及powerlevel10k主题