大佬教程收集整理的这篇文章主要介绍了电商离线数仓项目实战(上)--第五阶段模块一作业,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1、在会员分析中计算最近七天连续三天活跃会员数。
2、项目的数据采集过程中,有哪些地方能够优化,如何实现?
1、在会员分析中计算最近七天连续三天活跃会员数。
连续值求解问题,常用四路
-- 1、使用 row_number 在组内给数据编号(ROWNUM)-- 2、某个值 - rownum = gid,得到结果可以作为后面分组计算的依据-- 3、根据求得的gid,作为分组条件,求最终结果
本题中,对表dws_member_start_day中的数据使用排名函数row_number()排序,然后根据设备号device_id分组,登录日期 dt 排序,用日期(dt) 减去排名(row_number),得到groupId并限定日期最近7天,根据设备号和groupID分组,求出统计值cnt大于等于3的记录数,即为最近7天中连续3天活跃会员数。
ads层建表
drop table if exists ads.ads_member_conTinuous_values; create table ads.ads_member_conTinuous_values ( `cnt` String, ) COMMENT '最近7天连续3天活跃会员数' stored as parquet;
加载ads层数据
#!/bin/bash source /etc/profile if [ -n "$1" ] then do_date=$1 else do_date=`date -d "-1 day" +%F` fi sql=" WITH tmp as( SELECT device_id,dt, date_sub(dt,row_number() over(partition by device_id order by dt)) groupId FROM dws_member_start_day WHERE dt between date_sub(current_date,-7) and current_datE), tmp2 as(SELECT device_id,count(1) cnt FROM tmp GROUP BY device_id,groupId having cnt >= 3) insert into table ads.ads_member_conTinuous_values SELECT count(disTinct device_id) @R_663_10586@l FROM tmp2; " hive -e "$sql"
2、项目的数据采集过程中,有哪些地方能够优化,如何实现?
Flume的双层采集(第一层数据采集,第二层数据汇聚),应对大数据量的情况;
ChAnnel可以使用Kafka chAnnel,兼具File ChAnnel和Memory ChAnnel的优点;还可以兼具离线和实时计算;
Flume拦截器,可以过滤掉多余的数据,仅保留Json,使解析过程简单些;
以上是大佬教程为你收集整理的电商离线数仓项目实战(上)--第五阶段模块一作业全部内容,希望文章能够帮你解决电商离线数仓项目实战(上)--第五阶段模块一作业所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。