zl程序教程

您现在的位置是:首页 >  工具

当前栏目

数仓工具—Hive语法之物理分组(20)

工具 语法 20 hive 分组 物理 数仓
2023-09-11 14:15:37 时间

物理分组

今天我们看一个SQL 实现上的技巧,其实这个东西不难,算是一个小技巧,我们知道我们常见的分组统计都是有一个分组列的,但是没有的时候我们应该怎么办呢,或者我们的分组逻辑,它不是根据某一列分分组来的时候怎么办呢。

我们有这样的一个表ods_la_daily_record_di 用户每天的打卡在这张表里面,里面有这样的一个字段create_date 就是用户的打卡时间,我们希望按照分区时间和打卡时间的分组对用户进行统计,也就是我们认为在越短时间内打卡越活跃,其实就是用户的一组标签。

例如当天打卡的,也就是时间日期差是0则是第一组,时间日期差是1则是第二组,时间日期差是大于等于2小于等于7则是第三组,间日期差是大于等于8小于等于14则是第四组,间日期差是大于等于15小于等于30则是第五组。

这里有个问题那就是用户可能打一天打卡,第二天也打卡了,就是用户同时属于第一组和第二组,这里我们的方法就是按照业务的优先级设置分组,例如第一组的优先级高于第二组,这样我们就可以选择最小的作为用户所属的组,这里就要求你构造分组的时候需要根据业务特点来,然后我们就统计不同组别的用户数。

创建物理分组列再进行分组

需要注意的是我们

  1. 首先对用户的打卡数据进行了去重,因为一天可能有多次打卡
  2. 我们创建了分组列gap,然后对用户进行了分组,选择了最小的gap 作为用户的gap ,因为最小的实业务级别最高的,这是根据业务特点定义的
sele