hive内置集合函数

158 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

本文介绍hive内置的集合函数,包括集合的创建、查询、新增字段等等。日常需求开发中一定要灵活使用集合来解决问题,这是一个非常好用的工具。话不多说直接开始一一介绍其中的重点函数吧。

array 创建集合

常见使用方法: array(value1,value2,value3)

具体功能描述: 一句话就是创建一个新的集合,其中参数不限,可以为空集合,其中包括null值,没有限制集合中的参数格式必须是一致的,所以value的值可以是bigint、double、string等等,当然往往实际应用中肯定多是相同格式的数据,并且作为一列的数据聚合展示。

返回的结果就是一个集合形式 [value1,value2,value3]。

select array('张三',null,-1,Dom)
>> ['张三',null,-1,Dom]
select array(1,2,3,4,10)
>> [1,2,3,4,10]
​

array_contains 判断某一个值是否存在在指定集合中

常见使用方法: array_contains(array(), value)

具体功能描述: 这是返回一个指定的集合中是否包含有某个值的判断结果,返回结果是true或者false,不能多个值一起判断,会报错。

select array_contains(array(6,5,4,3,2,1),'wang')
>> false
select array_contains(array('张三','李四','王武','王五'),'王武')
>> true

map 创建一个map

常见使用方法: map(key1,value1,key2,value2,key3,value3)

具体功能描述: 输入参数分别有key和value,奇数位置是key,偶数位置是value,输出map结果,没有太复杂的逻辑,注意输入参数的类型。

select map(name,dom,age,10,grade,200)
>> {"name":dom,"age":10,"grade":200}
​

有创建map,自然会有查询数据,这其中分为查询所有的key值和所有的value值两种方式。

下面简单介绍几个map的应用函数。

map_keys() 函数可以查询所有的map中的key值

常见使用方法: map_keys(Map<K.V>)

具体功能描述: 返回指定的map中的所有key值,应用也是比较广泛,比如将数据组装成map后,就只要获取key值,可以用到这个函数方法。注意此处返回的类型为array。

select map_keys({name:hahah,age:22,grade:900})
​
>> [name,age,grade]