presto 中的数组函数用法

具体用法参考于presto官方文档

Array Functions and Operators

注:下文所描述的数组函数都是作用于数组类型的数据库表字段,如果字段不是数组类型,就不能用这些数组函数。

[]操作符

该操作符用于获取数组中的某个元素,索引从1开始(不是从0开始)。例如:

select full_name[1] as first_name from dim_user; 
||操作符

该操作符用于连接两个数组,或数组与一个元素,例如:

select array1 || array2 as new_array from fact_user_login;
select 1 || array1 as new_array from fact_user_login;
select array 1 || 1 as new_array form fact_user_login;
select 1 || 2 as new_array from fact_user_login;
array functions

array_distinct(x) -> array
如果你想将数组元素去重,那么可以用这个内置函数,返回去重后的数组

array_union(x, y) -> array
将两个数组类型的字段合并成一个新数组,结果去重

array_intersect(x, y) -> array
获取两个数组类型的字段中相同的元素,并返回这些元素组成的数组,结果去重

array_join(x, delimiter, null_value_replacement) -> varchar
将数组中的所有元素以delimiter指定的分隔符连接起来,null值用null_value_replacement代替,返回一个字符串

array_max(array<E>) -> E
返回数组中最大的元素

array_min(array<E>) -> E
返回数组中最小的元素

array_position(x, element) -> bigint
返回element在数组中的位置

element_at(array<E>, index) -> E
返回数组中索引index对应的元素

array_remove(x, element) -> x
移除数组x中的所有element元素

array_sort(x) -> x
将数组重新排序。 注:元素本身支持比较操作

cardinality(x) -> bigint
返回数组的元素个数

concat(x, y) -> array
同||操作符,将两个数组连接起来

contains(x, element) -> boolean
判断element是否在数组x中

filter(array, function) -> array
array中的每一个元素经过function过滤,返回都为true的元素数组

flatten(x) -> array
将数组的数组类型元素都连接在一起,形成一个打数组。

reduce(array, initialState, inputFunction, outputFunction) -> x
See reduce().

reverse(x) → array
返回元素顺序颠倒的一个数组

sequence(start, stop) -> array<bigint>
生成一个数组序列,从start开始,结束于stop, 步长为1。如果start大于stop,则生成一个步长为-1的逐渐递减的一个数组序列。

sequence(start, stop, step) -> array<bigint>
生成一个步长为指定长度的一个数组序列。

sequence(start, stop, step) → array<timestamp>
生成一个时间戳序列,从start开始,stop结束,step类型可以是year, month, day, hour, minute, second等类型。

shuffle(x)-> array
生成数组的一个全排列

slice(x, start, length) -> array
生成一个子数组,从start开始长度为length的数组。

transform(array, function)-> array
将一个数组转换成另一个数组,元素类型有可能不同。

zip(array1, array2[, ...])-> array<row>
将多个数组同一个index的元素合并成一个元组,该元组作为新数组index处的元素。如果某个数组元素不够,用null填充。例如:

SELECT zip(ARRAY[1, 2], ARRAY['1b', null, '3b']); -- [ROW(1, '1b'), ROW(2, null), ROW(null, '3b')]
  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值