1. 程式人生 > 實用技巧 >大資料實戰(五十三):電商數倉(三十六)之系統業務資料倉庫(九)轉化率之使用者新鮮度及漏斗分析

大資料實戰(五十三):電商數倉(三十六)之系統業務資料倉庫(九)轉化率之使用者新鮮度及漏斗分析

1 什麼是轉化率

2ADS層之新增使用者佔日活躍使用者比率(使用者新鮮度

2.1 建表語句

hive (gmall)>
drop table if exists ads_user_convert_day;
create external table ads_user_convert_day( 
    `dt` string COMMENT '統計日期',
    `uv_m_count`  bigint COMMENT '當日活躍裝置',
    `new_m_count`  bigint COMMENT '當日新增裝置',
    `new_m_ratio`   decimal
(10,2) COMMENT '當日新增佔日活的比率' ) COMMENT '轉化率' row format delimited fields terminated by '\t' location '/warehouse/gmall/ads/ads_user_convert_day/';

2.2 資料匯入

-----------------------------需求 轉化率之使用者新鮮度及漏斗分析 ads_user_convert_day-----------------------
轉化率:單日實際做xxx事情的人數 / 當日日活= xxx單日轉化率
使用者新鮮度: 使用者新鮮度也是轉化率的一種
指當日新增使用者 / 當日日活使用者


使用者: 裝置
-----------------------------相關表---------------------
ads_uv_count: 獲取一天的日活
ads_new_mid_count: 獲取一天的新增人數
-----------------------------思路-----------------------
-----------------------------SQL------------------------
insert into table ads_user_convert_day
select
'2020-02-16',
uv_m_count,
new_m_count,
cast(new_m_count/uv_m_count*100 as decimal(10,2))
from
(select
day_count uv_m_count
from ads_uv_count
where dt='2020-02-16') t1
join
(SELECT
new_mid_count new_m_count
from ads_new_mid_count
where create_date='2020-02-16') t2

3ADS層之使用者行為漏斗分析

3.1 建表語句

hive (gmall)>
drop table if exists ads_user_action_convert_day;
create external  table ads_user_action_convert_day(
    `dt` string COMMENT '統計日期',
    `total_visitor_m_count`  bigint COMMENT '總訪問人數',
    `order_u_count` bigint     COMMENT '下單人數',
    `visitor2order_convert_ratio`  decimal(10,2) COMMENT '訪問到下單轉化率',
    `payment_u_count` bigint     COMMENT '支付人數',
    `order2payment_convert_ratio` decimal(10,2) COMMENT '下單到支付的轉化率'
 ) COMMENT '使用者行為漏斗分析'
row format delimited  fields terminated by '\t'
location '/warehouse/gmall/ads/ads_user_action_convert_day/';

3.2 資料匯入

-----------------------------需求 ads_user_action_convert_day 轉化率之漏斗分析-----------------------
總訪問人數: uv 根據使用者身份去重後的資料!
總訪問人次: pv
同一個人可以多次訪問! 如果講訪問的人次資料,根據使用者去重後,得到人數!

使用者: user_id
-----------------------------相關表---------------------
dwd_start_log: 取當天的總訪問人數
dws_user_action: 取當天的下單人數和支付人數
-----------------------------思路-----------------------
total_visitor_m_count` bigint COMMENT '總訪問人數': 從啟動日誌中找
order_u_count` bigint COMMENT '下單人數': 從dws_user_action中找
`payment_u_count` bigint COMMENT '支付人數':從dws_user_action中找

--下單人數
select
count(*) order_u_count
from dws_user_action
where dt='2020-02-16' and order_count>0

--支付人數
select
count(*) payment_u_count
from dws_user_action
where dt='2020-02-16' and payment_count>0

--改寫
select
sum(if(order_count>0,1,0)) order_u_count,
sum(if(payment_count>0,1,0)) payment_u_count
from dws_user_action
where dt='2020-02-16'
-----------------------------SQL------------------------
insert into table ads_user_action_convert_day
select
'2020-02-14',
total_visitor_m_count,
order_u_count,
cast(order_u_count/total_visitor_m_count*100 as decimal(10,2)) visitor2order_convert_ratio,
payment_u_count,
cast(payment_u_count/order_u_count*100 as decimal(10,2)) order2payment_convert_ratio
from
(select
count(*) total_visitor_m_count
from
(select
user_id
from dwd_start_log
where dt='2020-02-16'
group by user_id) t1) t3
join
(select
sum(if(order_count>0,1,0)) order_u_count,
sum(if(payment_count>0,1,0)) payment_u_count
from dws_user_action
where dt='2020-02-16') t2