列转行,行转列(hivesql)

一、笛卡尔积

笛卡尔积即交叉连接,返回结果的行数等于两个表行数的乘积。
笛卡尔积会出现的可能情况:
1.省略连接条件
2.连接条件无效
3.所有表中的所有数据互相连接

二、列转行

concat_ws():
concat_ws (separator,字符串A/字段名A,字符串B/字段名B…)是concat的特殊形式,第一个参数是其他参数的分隔符,分隔符会放到连接的字符串之间,分隔符可以是一个字符串,也可以是其他参数.如果分隔符为NULL,则结果为NULL,函数会忽略任何分隔符参数后的 NULL值。但是concat_ws( )不会忽略任何空字符串。(然而会忽略所有的 NULL),如果参数为string类型数组则合并数组内字符串
例:concat_ws( ‘,’, [ 'a ', ‘b’, 'c ’ ])–> 'a,b,c ’

collect_set()/collect_list():
collect_set( )函数只接受基本数据类型,作用是对参数字段进行去重汇总,返回array类型字段.
collect_list()函数和collect_set( )作用一样,只是前者不去重,后者去重.

/* 原始数据
name       gender          times
李白         男            唐
程咬金     男            唐
孙悟空     男           神话
猪八戒     男           神话
*/
-- 先用collect_set将列拼接在一起,然后再通过concat
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值