日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

漏斗周期漏斗数据关联优化

發(fā)布時(shí)間:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漏斗周期漏斗数据关联优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本文章主要講解,當(dāng)漏斗分析時(shí),數(shù)據(jù)需要通過(guò)關(guān)聯(lián)多個(gè)表進(jìn)行獲取數(shù)據(jù),并且多個(gè)周期分析時(shí)數(shù)據(jù)出現(xiàn)重疊現(xiàn)象,針對(duì)兩個(gè)點(diǎn)進(jìn)行優(yōu)化。


1.請(qǐng)?zhí)崛⌒略鲇嗁?gòu)4天內(nèi)各個(gè)周期的,用戶數(shù)留存情況、呼轉(zhuǎn)情況、短信下發(fā)情況

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

–按統(tǒng)計(jì)周期劃分

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限制漏斗數(shù)據(jù)范圍,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 --當(dāng)日新增訂購(gòu)用戶數(shù),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天留存用戶數(shù),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天留存有呼轉(zhuǎn)用戶數(shù),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天留存有呼轉(zhuǎn)有短信下發(fā)用戶數(shù),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天留存用戶數(shù),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天留存有呼轉(zhuǎn)用戶數(shù),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天留存有呼轉(zhuǎn)有短信下發(fā)用戶數(shù),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天留存用戶數(shù),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天留存有呼轉(zhuǎn)用戶數(shù),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天留存有呼轉(zhuǎn)有短信下發(fā)用戶數(shù),case when a.dt='a4' and b.dt='a4' then 1 end as in_ord_cn4 --第4天留存用戶數(shù),case when a.dt='a4' and b.dt='a4' and c.dt='a4' then 1 end as in_sk_cn4 --第4天留存有呼轉(zhuǎn)用戶數(shù),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天留存有呼轉(zhuǎn)有短信下發(fā)用戶數(shù)from (--新增用戶數(shù)select dt, user_numfrom (--新增天期數(shù)據(jù)切塊,按漏斗塊切select split(concat_ws('|', case when dt = '${hivevar:v_dt}' then 'a1' end--漏斗周期1的漏斗數(shù)據(jù)1, case when dt = '${hivevar:v_dt}' then 'a2' end--漏斗周期1的漏斗數(shù)據(jù)2, case when dt = '${hivevar:v_dt}' then 'a3' end--漏斗周期1的漏斗數(shù)據(jù)3, case when dt = '${hivevar:v_dt}' then 'a4' end--漏斗周期1的漏斗數(shù)據(jù)4, case when dt = date_add('${hivevar:v_dt}', 1) then 'b1' end--漏斗周期2的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 1) then 'b2' end--漏斗周期2的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 1) then 'b3' end--漏斗周期2的漏斗數(shù)據(jù)3, case when dt = date_add('${hivevar:v_dt}', 2) then 'c1' end--漏斗周期3的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 2) then 'c2' end--漏斗周期3的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 3) then 'd1' end--漏斗周期4的漏斗數(shù)據(jù)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--留存用戶數(shù)LEFT JOIN (select dt, user_numfrom (**--留存天期數(shù)據(jù)切塊,按漏斗塊切**select split(concat_ws('|', case when dt = date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗數(shù)據(jù)3, case when dt = date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗數(shù)據(jù)4, case when dt = date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗數(shù)據(jù)3, case when dt = date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗數(shù)據(jù)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--漏斗塊關(guān)聯(lián),主要方便后面組成需要的漏斗分析--呼轉(zhuǎn)用戶數(shù)LEFT JOIN (select dt, user_numfrom (--呼轉(zhuǎn)天期數(shù)據(jù)切塊,按漏斗塊切select split(concat_ws('|', case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗數(shù)據(jù)1, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗數(shù)據(jù)2, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗數(shù)據(jù)3, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗數(shù)據(jù)4, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗數(shù)據(jù)1, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗數(shù)據(jù)2, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗數(shù)據(jù)3, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗數(shù)據(jù)1, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗數(shù)據(jù)2, case when dt >= date_add('${hivevar:v_dt}', 3) and dt <= date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗數(shù)據(jù)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**--漏斗塊關(guān)聯(lián),主要方便后面組成需要的漏斗分析**--短信下發(fā)用戶數(shù)LEFT JOIN (select dt, user_numfrom (--短信下發(fā)天期數(shù)據(jù)切塊,按漏斗塊切select split(concat_ws('|', case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 1) then 'a1' end--漏斗周期1的漏斗數(shù)據(jù)1, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 2) then 'a2' end--漏斗周期1的漏斗數(shù)據(jù)2, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 3) then 'a3' end--漏斗周期1的漏斗數(shù)據(jù)3, case when dt >= '${hivevar:v_dt}' and dt <= date_add('${hivevar:v_dt}', 4) then 'a4' end--漏斗周期1的漏斗數(shù)據(jù)4, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 2) then 'b1' end--漏斗周期2的漏斗數(shù)據(jù)1, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 3) then 'b2' end--漏斗周期2的漏斗數(shù)據(jù)2, case when dt >= date_add('${hivevar:v_dt}', 1) and dt <= date_add('${hivevar:v_dt}', 4) then 'b3' end--漏斗周期2的漏斗數(shù)據(jù)3, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 3) then 'c1' end--漏斗周期3的漏斗數(shù)據(jù)1, case when dt >= date_add('${hivevar:v_dt}', 2) and dt <= date_add('${hivevar:v_dt}', 4) then 'c2' end--漏斗周期3的漏斗數(shù)據(jù)2, case when dt >= date_add('${hivevar:v_dt}', 3) and dt <= date_add('${hivevar:v_dt}', 4) then 'd1' end--漏斗周期4的漏斗數(shù)據(jù)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**--漏斗塊關(guān)聯(lián),主要方便后面組成需要的漏斗分析**

) u1

group by dt

;

2.漏斗分析數(shù)據(jù)結(jié)果

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.炸裂數(shù)據(jù)周期的作用

主要把需要關(guān)聯(lián)的數(shù)據(jù),按周期劃分炸裂成一塊一塊,方便后面and 各個(gè)表的塊數(shù)據(jù),組成需要的漏斗分析

列子: ,case when a.dt=‘a(chǎn)4’ and b.dt=‘a(chǎn)4’ and c.dt=‘a(chǎn)4’ and d.dt=‘a(chǎn)4’ then 1 end as in_sms_down_cn4 --第4天留存有呼轉(zhuǎn)有短信下發(fā)用戶數(shù)

–新增天期數(shù)據(jù)切塊,按漏斗塊切

select split(concat_ws('|', case when dt = '${hivevar:v_dt}' then 'a1' end--漏斗周期1的漏斗數(shù)據(jù)1, case when dt = '${hivevar:v_dt}' then 'a2' end--漏斗周期1的漏斗數(shù)據(jù)2, case when dt = '${hivevar:v_dt}' then 'a3' end--漏斗周期1的漏斗數(shù)據(jù)3, case when dt = '${hivevar:v_dt}' then 'a4' end--漏斗周期1的漏斗數(shù)據(jù)4, case when dt = date_add('${hivevar:v_dt}', 1) then 'b1' end--漏斗周期2的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 1) then 'b2' end--漏斗周期2的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 1) then 'b3' end--漏斗周期2的漏斗數(shù)據(jù)3, case when dt = date_add('${hivevar:v_dt}', 2) then 'c1' end--漏斗周期3的漏斗數(shù)據(jù)1, case when dt = date_add('${hivevar:v_dt}', 2) then 'c2' end--漏斗周期3的漏斗數(shù)據(jù)2, case when dt = date_add('${hivevar:v_dt}', 3) then 'd1' end--漏斗周期4的漏斗數(shù)據(jù)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

總結(jié)

以上是生活随笔為你收集整理的漏斗周期漏斗数据关联优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。