Hive计算时count sum partition by等方法在数据开发时的一些用法

本篇文章用于记录平时在做hive计算写sql时的心得
epr代表字段

1、常用coalesce(epr,0)方法,可以防止当前字段为空,可以在计算时给个默认值,nvl()也可以

2、常用round(epr, 2)方法,数仓有时候数据类型为float、double,计算时会有精度问题,此方法可以用来保留位数

3、(CASE WHEN epr1 in (2,2) THEN epr2 ELSE -1 END),这个可以根据一个字段的值来定义另一个字段的值

4、epr3,SUM(CASE WHEN epr1 in (2,2) THEN epr2 ELSE -epr2 END) OVER (PARTITION BY epr3) 这种用法可以解决根据epr3聚合的字段,可以根据epr1的值来决定聚合函数里的正负号,PARTITION BY是可以解决在查询的时候可以直接聚合数据,而不需要单独group by数据

5、count(DISTINCT epr1) 对该字段去重去null的计数,count(epr1) 对该字段去null的计数

6、row_number() OVER (partition BY epr1, epr2 ORDER BY epr3 DESC) as number 先对epr1、epr2两个字段聚合数据然后在按epr3排序,按自然数顺序往下排,epr3相同比较数据的顺序,递增

7、rank() OVER (partition BY epr1, epr2 ORDER BY epr3 DESC) as number 先对epr1、epr2两个字段聚合数据然后在按epr3排序,按自然数顺序往下排,epr3相同的话rank值一样,有相等

8、hive里面group by的时候查询出的字段只能是group by 后的字段,不知道是不是我司的问题

上一篇:设计模式


下一篇:容器存储解决方案