当前位置: 首页 > news >正文

【hive经典指标,离线数仓指标,ADS层指标分析】最近7日内连续3日下单用户数

1.建表语句

DROP TABLE IF EXISTS ads_order_continuously_user_count;
CREATE EXTERNAL TABLE ads_order_continuously_user_count
(`dt`                            STRING COMMENT '统计日期',`recent_days`                   BIGINT COMMENT '最近天数,7:最近7天',`order_continuously_user_count` BIGINT COMMENT '连续3日下单用户数'
) COMMENT '最近7日内连续3日下单用户数统计'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LOCATION '/warehouse/gmall/ads/ads_order_continuously_user_count/';

2.数据装载

2.1 思路分析

连续三日下单的记录有这样的特点:按照日期升序排列,那么一定存在某一个日期与它后两行的日期相差两天。据此可以筛选连续下单用户数。

2.2 执行步骤

 我们要获取最近7日内用户的下单日期,数据取自dws_trade_user_order_1d,筛选最近7日分区的数据即可。开窗,按照用户分区,dt(下单日期)升序排列,调用lead()函数获取后两行的dt取值,而后用datadiff计算与dt的天数差,记为diff,上文提到,如果是连续三日下单的记录,一定存在某条数据的diff为2。筛选diff=2的数据,即可获得所有满足条件的用户,如果连续下单的天数为4天及以上,那么同一用户满足条件的数据就不止一条,需要去重,因此调用count(distinct user_id)完成统计。

 2.3 图解

 略

2.4 代码实现

insert overwrite table ads_order_continuously_user_count
select * from ads_order_continuously_user_count
union
select'2022-06-08',7,count(distinct(user_id))
from
(selectuser_id,datediff(lead(dt,2,'9999-12-31') over(partition by user_id order by dt),dt) difffrom dws_trade_user_order_1dwhere dt>=date_add('2022-06-08',-6)
)t1
where diff=2;

2.5 思考题

 还有没有其他思路?

  •  思路一:​​​​​​​

(1)思路分析

(2)执行步骤

(3)图解

(4)代码实现

selectcount(distinct(user_id))
from
(selectuser_idfrom(selectuser_id,date_sub(dt,rank() over(partition by user_id order by dt)) difffrom dws_trade_user_order_1dwhere dt>=date_add('2022-06-08',-6))t1group by user_id,diffhaving count(*)>=3
)t2;

3. 数据链路

 

http://www.lryc.cn/news/109274.html

相关文章:

  • 线上java程序CPU及内存占用过高问题排查总结
  • c高级:day3
  • Java检查值是否存在于数组中的3种方法
  • python 连接oracle pandas以简化excel的编写和数据操作
  • Kubernetes高可用集群二进制部署(三)部署api-server
  • 【网络|TCP】三次握手、四次握手
  • 刷题笔记 day7
  • Tuxera NTFS2023Mac强大的Mac读写工具
  • ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习
  • 数据库的分库分表
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(2)]
  • LC-980. 不同路径 III(回溯)
  • 软件测试缺陷报告
  • vue js-table2excel 导出excel 可带多张图片
  • HTML 基础标签
  • Nginx使用proxy_cache指令设置反向代理缓存静态资源
  • React安装ant design组件库,并使用
  • Leetcode | 有效的括号、最长有效括号
  • 思科模拟器配置静态路由(下一跳使用IP)
  • MyBatis -- 执行流程
  • springboot背诵
  • WebGL: 几个入门例子
  • App Cleaner Uninstaller for Mac 苹果电脑软件卸载工具
  • 基于Yolov2深度学习网络的车辆检测算法matlab仿真
  • Java的I/O类库- NIO
  • 【ASP.NET MVC】使用动软(三)(11)
  • 基于MATLAB长时间序列遥感数据植被物候提取与分析
  • K8S deployment 重启的三种方法
  • 解决Linux下PyCharm无法新建文件
  • 规则引擎技术解决方案