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;

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