已知条件:一个表有字段如下:片区编号,分支机构编号,交易终端,客户号,客户下挂关系
给出需求:求出每个分支机构的交易终端统计粒度下的所有客户各种下挂关系数量???
技术架构:hive
0,业务梳理:
字段维度关系如下:片区编号>分支机构编号>交易终端>客户号= 客户下挂关系
部分数据展示如下:
在这里就需要用到爆炸函数了,但有那么亿丢丢难度,先给大家逐步拆解。
1,split函数,会把一个字符串的数据类型变成一个array数组(重点知识)!
代码如下:
结果展示:
2,列转行:将某列一行中的数据拆分成多行,可以用Explode()函数
Explode()函数是Hive的内置函数,也称为爆炸函数,此函数将array或map作为输入,按行输出array或map中的元素,可搭配lateral view(侧视图)使用。
代码如下:
结果展示:
ok 这个时候我们发现通过爆炸函数得到,侧视图表tmp,字段emp_type_name,
发现数组中的每一个元素都拆成了一条记录,实现列转行。
3,最后,要求出每个分支机构的交易终端统计粒度下的所有客户各种下挂关系数量???
咦,这个时候是不是有点思路了!!!
只要把上面的数据统计求和,就可以得汇总数据!!
但又因为要求得各种下挂关系数量??这个加个行列转换(行转列)
代码如下:
结果如下:
结语:
站在sql技能:(split, 爆炸函数,侧视图,聚合函数,行列转换)的制高点,轻松实现业务指标。