连续问题是实际数据开发中比较常见的场景。例如,连续活跃天数用户统计等
SQL如何解决连续问题?本文主要介绍连续性问题,重点以常见的连续活跃场景为例,抽象出通用的连续问题解决方案。连续问题主要分为静态连续问题和动态连续问题两类
本文尝试独辟蹊径,强调通过灵活的、发散性的数据处理思维,就可以用最基础的语法,解决复杂的数据场景。文章涉及的SQL语句使用了Hive SQL的基础语法和部分高级语法特性
相关函数参考MaxCompute:https://help.aliyun.com/zh/maxcompute/user-guide/overview/?spm=a2c4g.11186623.0.0.738048b99fbTqb
接下来,我们通过连续活跃场景案例,详细介绍SQL连续及应用
场景描述:现有用户访问日志表visit_log,每行数据表示一条用户访问日志
with visit_log as (
select stack (
6,
'2023-11-01', '101', '湖北', '武汉', 'Android',
'2023-11-01', '102', '湖南', '长沙', 'IOS',
'2023-11-01', '103', '四川', '成都', 'Windows',
'2023-11-02', '101', '湖北', '孝感', 'Mac',
'2023-11-02', '102', '湖南', '邵阳', 'Android',
'2023-11-03', '101', '湖北', '武汉', 'IOS'
)
-- 字段:日期,用户,省份,城市,设备类型
as (dt, user_id, province, city, device_type)
)
select * from visit_log
静态连续活跃统计问题:
需求描述1:统计连续访问天数大于等于3天的用户