开发者学堂课程【新电商大数据平台2020最新课程:电商项目之用户启动 DWS 表 SQL 实现】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/640/detail/10540
电商项目之用户启动 DWS 表 SQL 实现
用户启动 DWS
基于明细表进行公共汇总,根据对应的维度进行汇总,DWS 是单维度的,它只基于上面的某一个表,这个表就是DWD 刚创建的明细表。
启动次数是指计算用户的启动次数,在做数据分组的时候,不会按照 user id 分类,因为用户 ID 可能会有多个,它的启动次数相当于求它的 comment 有多少次。
这需要统一,当前用户启动多少次,另外的用户启动多少次,ID如果会变的话,这时候不能归为一类的 ID,在做的时候就会有问题,这时候虽然说是一个设备,但是每次 ID 都会变,所以在使用的时候,获取的是 log 表和 log 数据,所以获取的时候需要用统一的 ID,设备 ID 是比较统一的,根据设备号来进行 comment 聚合,然后再根据设备号进行分组。
单独将设备号拿出来,进行 comment,就可以求出启动的次数,用户用同一个设备启动多少次就是启动次数,这个不需要去除。在获取用户启动次数的时候不需要去除,只需要统计当前用户使用这个设备启动了多少次,这个时候相对来说比较简单一些,
如下进行操作
hives create database dws _nshop;oK
Time taken : 0.038 seconds
hive> create external table if not exists dws_nshop.dws_nshop_ulog_launch(
user_id string comment"用户id' ,
device_num string comment '设备号',
device_type string comment"设备类型",
os string comment"手机系统",
os_version string comment '手机系统版本',
manufacturer string comment"手机制造商',
carrier string commentT'电信运营商",
network_type string corenent "网络类型'
area_code string comment "地区编码",
launch_count int comment"启动次数">)
partitioned by (bdp_day string)
> stored as parquet
>location" /data/nshop/dws/user/dws_nshop_ulog_launch/ " ;
这张表依赖用户启动日志表,用户启动是对用户启动日志表进行工作汇总的力度支持,
接下来在笔记进行编写
Insert overwrite table dws_nshop.dws_nshop_ulog_launch partition( bdp_day= ' 2020032)
Elect
user_id ,
device_num ,
device_type,
os ,
os_version ,
manufacturer,
carrier ,
network_type,
area_code,
count(device_num) over(partition by device_num)as launch_countfrom dwd_nshop.dwd_nshop_actlog_launch
where
bdp_day= " 20200321"