赞
踩
一个表有字段如下:片区编号,分支机构编号,交易终端,客户号,客户下挂关系
求出每个分支机构的交易终端 统计粒度下的 所有下挂关系类型的 客户数量???
下挂关系类型有:
津贴1,津贴2,协助关系,经济关系,客服关系,机构序列开发,其他
技术架构:hive sql
字段维度关系如下:片区编号>分支机构编号>交易终端>客户号= 客户下挂关系
部分数据展示如下:
在这里就需要用到爆炸函数了,但有那么亿丢丢难度,先给大家逐步拆解。
会把一个字符串的数据类型变成一个array数组(重点知识)!
代码如下:
结果展示:
要统计每种下挂关系的数量,肯定要先把关系字段炸开,然后case when 求和 sum。
Explode()函数是Hive的内置函数,也称为爆炸函数,此函数将array数组或map映射作为输入,按行输出array或map中的元素,可搭配 lateral view(侧视图)使用。
代码如下:
结果展示:
ok 这个时候我们发现通过爆炸函数得到,侧视图表tmp,字段emp_type_name,
发现数组中的每一个元素都炸开成为了一条记录,实现列转行。
求出每个分支机构的交易终端 统计粒度下的 所有下挂关系类型的 客户数量???
咦,这个时候是不是有点思路了!!!
只要把上面炸开的数据统计求和,就可以得汇总数据!!
但又因为要求得各种下挂关系数量??这个加个行列转换(行转列)
代码如下:
结果如下:
因为这个项目刚开始,实际的业务推广也没多久,因此数据就少。
本章节主要sql函数技能是利用爆炸函数把array数组炸开,分组汇总求和。
站在sql技能:(split, 爆炸函数,侧视图,聚合函数,行列转换)的制高点,轻松实现业务指标。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。