9(16)第8章 需求三:用戶留存主題16

第8章 需求三:用戶留存主題
8.1.2 需求描述

8.2 DWS層
8.2.1 DWS層(每日留存用戶明細表)

1)建表語句
hive (gmall)>

drop table if exists dws_user_retention_day;
create external table dws_user_retention_day
(
mid_id string COMMENT ‘設備唯一標識’,
user_id string COMMENT ‘用戶標識’,
version_code string COMMENT ‘程序版本號’,
version_name string COMMENT ‘程序版本名’,
lang string COMMENT ‘系統語言’,
source string COMMENT ‘渠道號’,
os string COMMENT ‘安卓系統版本’,
area string COMMENT ‘區域’,
model string COMMENT ‘手機型號’,
brand string COMMENT ‘手機品牌’,
sdk_version string COMMENT ‘sdkVersion’,
gmail string COMMENT ‘gmail’,
height_width string COMMENT ‘屏幕寬高’,
app_time string COMMENT ‘客戶端日誌產生時的時間’,
network string COMMENT ‘網絡模式’,
lng string COMMENT ‘經度’,
lat string COMMENT ‘緯度’,
create_date string comment ‘設備新增時間’,
retention_day int comment ‘截止當前日期留存天數’
) COMMENT ‘每日用戶留存情況’
PARTITIONED BY (dt string)
stored as parquet
location ‘/warehouse/gmall/dws/dws_user_retention_day/’
;
2)導入數據(每天計算前1天的新用戶訪問留存明細)
hive (gmall)>

insert overwrite table dws_user_retention_day
partition(dt=“2019-02-11”)
select
nm.mid_id,
nm.user_id ,
nm.version_code ,
nm.version_name ,
nm.lang ,
nm.source,
nm.os,
nm.area,
nm.model,
nm.brand,
nm.sdk_version,
nm.gmail,
nm.height_width,
nm.app_time,
nm.network,
nm.lng,
nm.lat,
nm.create_date,
1 retention_day
from dws_uv_detail_day ud join dws_new_mid_day nm on ud.mid_id =nm.mid_id
where ud.dt=‘2019-02-11’ and nm.create_date=date_add(‘2019-02-11’,-1);
3)查詢導入數據(每天計算前1天的新用戶訪問留存明細)
hive (gmall)> select count(*) from dws_user_retention_day;

8.2.2 DWS層(1,2,3,n天留存用戶明細表)

1)導入數據(每天計算前1,2,3,n天的新用戶訪問留存明細)
hive (gmall)>
insert overwrite table dws_user_retention_day
partition(dt=“2019-02-11”)
select
nm.mid_id,
nm.user_id,
nm.version_code,
nm.version_name,
nm.lang,
nm.source,
nm.os,
nm.area,
nm.model,
nm.brand,
nm.sdk_version,
nm.gmail,
nm.height_width,
nm.app_time,
nm.network,
nm.lng,
nm.lat,
nm.create_date,
1 retention_day
from dws_uv_detail_day ud join dws_new_mid_day nm on ud.mid_id =nm.mid_id
where ud.dt=‘2019-02-11’ and nm.create_date=date_add(‘2019-02-11’,-1)

union all
select
nm.mid_id,
nm.user_id ,
nm.version_code ,
nm.version_name ,
nm.lang ,
nm.source,
nm.os,
nm.area,
nm.model,
nm.brand,
nm.sdk_version,
nm.gmail,
nm.height_width,
nm.app_time,
nm.network,
nm.lng,
nm.lat,
nm.create_date,
2 retention_day
from dws_uv_detail_day ud join dws_new_mid_day nm on ud.mid_id =nm.mid_id
where ud.dt=‘2019-02-11’ and nm.create_date=date_add(‘2019-02-11’,-2)

union all
select
nm.mid_id,
nm.user_id ,
nm.version_code ,
nm.version_name ,
nm.lang ,
nm.source,
nm.os,
nm.area,
nm.model,
nm.brand,
nm.sdk_version,
nm.gmail,
nm.height_width,
nm.app_time,
nm.network,
nm.lng,
nm.lat,
nm.create_date,
3 retention_day
from dws_uv_detail_day ud join dws_new_mid_day nm on ud.mid_id =nm.mid_id
where ud.dt=‘2019-02-11’ and nm.create_date=date_add(‘2019-02-11’,-3);
2)查詢導入數據(每天計算前1,2,3天的新用戶訪問留存明細)
hive (gmall)> select retention_day , count(*) from dws_user_retention_day group by retention_day;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章