定义:就是把形如
id --------- name
1 --------- a
2 --------- a
3 --------- a
4 --------- a
的数据转换为
id -------------name
1,2,3,4 --------- a
这里把四行的数据变成了由一行显示,这就是行转列。
首先要用到的是collect_set或者collect_list,前者去重,后者不去重,一般配合group使用,能把形如:
id --------- name
1 ---------a
2 ---------a
3 ---------a
4 ---------a
转换为
id --------- name
["1","2","3","4"]---------a
然后需要用到的是concat_ws函数,这个函数需要传递指定分隔符,以及字符串或者字符串数组。能起到把多个字符串拼接到一起的作用。
形如:
id --------- name
["1","2","3","4"]---------a
通过concat_ws(',',[1,2,3,4])转换为
id--------- name
1,2,3,4 --------- a
连起来就完成了行转列
一般sql为:
列转行
定义:就是把形如
id -------------name
1,2,3,4 --------- a
的数据转换为
id --------- name
1 --------- a
2 --------- a
3 --------- a
4 --------- a
这里把一行的数据变成了由四行显示,这就是列转行。
首先要用到split函数,这个行数可以把字符串按照指定的规则切分为字符串数组。
形如:
id --------- name
1,2,3,4 --------- a
通过split('1,2,3,4',',')转换为
id--------- name
["1","2","3","4"]---------a
然后是explode函数,这个行数可以把数组的每个元素转换为一行。
形如
id
["1","2","3","4"]
通过explode(["1","2","3","4"] )转换为
id
1
2
3
4
最后为了拼接其它字段,还需要用到lateral view把explode获得的行当虚拟表来用。
使用方法为 lateral view explode(split(["1","2","3","4"] , ',')) tmptable as new_id
其中new_id元素为转换为行后的字段名。
把以上综合起来就完成了列转行
一般sql为:
工具/材料Excel或WPS表格
01首先,演示下“行转列”,打开要处理的表格,并选中数据区域。
02然后,按快捷键Ctrl+C,或者鼠标右击并选择复制。
03复制成功后,右击目标单元格,再点击“选择性粘贴”。
04如图,在对话框中,勾选“转置”,并点击“确定”按钮。
05选择性粘贴完毕,就可以看到“行转列”的结果。
06接着,我们演示下“列转行”。选中数据,按快捷键Ctrl+C。
07在要粘贴的区域,右击鼠标,并点击“选择性粘贴”。
08同样,勾选“转置”,再点击“确定”即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)