常用的sql函数(语法)

  • Post author:
  • Post category:其他


1.CROSS JOIN

除了内连接(inner jion),外连接(left join ,right join,full join),还支持交叉连接。

交叉连接返回被连接两个表的卡迪尔乘积,即:

select 列名

from 表名1 cross join 表名2

where 表名1.列名=表名2.列名

2.如果想要将ARRAY转换为一组行,即平展操作,可以使用UNNEST运算符。

UNNEST获取一个ARRAY,然后平铺成一个表,表中的每一行都是该ARRAY中的元素。

例如某个字段是ARRAY类型,teamid字段内容[{1,2,3,4}]

select unnest(teamid) as id from table1

3、explode函数

explode()函数是Hive的内置函数,也有人将其称为炸裂函数,

此函数将array或map作为输入,按行输出array或map中的元素,可搭配lateral view使用。

当explode函数的输入是array时,array中的每个元素都单独输出为一行;

当explode函数的输入是map时,map中的每对key-value会单独输出为一行,key为一列,value为一列。

explode函数的输入只能为array或map,若要处理string输入字段,搭配split()函数,split函数可以将string按照规定符号进行划分,

划分结果是array,这样经过划分string变成array,就能当做explode函数的输入。

4、lateral view

Lateral view通常与生成器函数结合使用,比如explode,生成包含一行或多行的虚拟表,

select id — 原字段

,user — 原字段

,orderid — 拆分字段

from table1

lateral view explode(order_set)tmp1 as orderid

使用lateral view的时候需要注意的几点:

1. lateral view的位置是from后where条件前;

2. 生成的虚拟表的表名不可省略;

3. from后可带多个lateral view;

4. 如果要拆分的字段有null值,需要使用lateral view outer 替代.

参考博客:https://blog.csdn.net/weixin_38753213/article/details/115364880



版权声明:本文为wuxiaosi808原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。