相关文章推荐
苦闷的扁豆  ·  java - JWT中token值过期 ...·  1 年前    · 
自信的热水瓶  ·  尝试在python ...·  1 年前    · 

具体用法参考于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')]
				
数仓presto解析varchar类型Array数据方案1 源数据:[{“accountSubject”:“10128”,“amount”:500000},{“accountSubject”:“10129”,“amount”:3000000}] 各种原因,包括但不限于,数据从业务数据库同步到数仓,大部分统一使用string类型,导致Array等结构化数据被以string类型的方式导入到数仓 该||运算符用于将数组数组或相同类型的元素连接起来: SELECT ARRAY [1] || ARRAY [2]; -- [1, 2] SELECT ARRAY [1] || 2; -- [1, 2] SELECT 2 || ARRAY [1]; -- [2, 1] 数组函数 all_match( array(T) , function(T
substr(string,start,length)→ varchar 如:select substr('1599319787151',1,10) substr(string, start) → varchar 如:select substr('1599319787151',1) 而hive:substr和substring都可以使用 2、字符串首次出现位置position(下标从1开始的) presto...
用途就是把array的每个元素用分隔符连接起来 array_join(x, delimiter, null_replacement) → varchar Concatenates the elements of the given array using the delimiter and an optional string to replace nulls. 如下regexp_extract_all提取字符串,返回值为array,之后用,把 array的元素连接起来 > select
Presto性能调优与杂记 1、Presto性能调优 presto的那些常谈的调优,我这里就不再多说了,什么预先行列过滤、选取所需字段、少用distinct/Order by 等等的 还是来说一下大表JOIN小表这个优化,大表放在前作JOIN操作确实是一个优化点,但是presto的join并不是默认为broadcast的!!!这是需要你去手动调整的!!! join-distribution-type Type: string Allowed values: AUTOMATIC, PARTITIONED,
mvn clean assembly:assembly 将presto-udf-*-jar-with-dependencies.jar复制到所有presto节点的${PRESTO_HOME}/plugin/custom-functions/。 (如果不存在,则创建目录) 重新启动presto集群 标量函数 一个月的第一天 首日(当前日期) 一个月的最后一天 last_day(current_date) to_datetime 日期,varchar 结合两个参数 to_datetime(current_date,'23:59:59') last_second 日期的最后一秒 last_second(current_date) 昨天的最后一 您需要一个安装了Go并设置了$ GOPATH的工作环境。 下载并安装presto数据库/ sql驱动程序: go get github.com/prestodb/presto-go-client/presto 确保已在$ PATH安装了Git。 该Presto客户端是Go的database/sql/driver接口的实现。 为了使用它,您需
1、说明:datax支持presto读取,datax规范开发插件,读取presto数据,可以在presto配置mysql、postgresql、es、hive等数据库的连接,通过datax执行关联查询,数据存入新的库 2、插件更新:解压文件 prestoreader.zip 到如下目录 $DATAX_HOME/plugin/reader/
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库脱颖而出,在于以下几点:清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构。丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数Presto采用典型的master-slave模型:coordinator(mas
- current_timestamp:返回当前日期时间 - extract:从日期提取部分信息,如年、月、日等 - from_unixtime:将 UNIX 时间戳转换为日期时间 - to_unixtime:将日期时间转换为 UNIX 时间戳 - date_add:在给定日期上加上一段时间 - date_diff:计算两个日期之间的天数差 - date_trunc:截取日期的某个部分 如果你想了解更多关于 Presto 日期函数的信息,请参考官方文档:https://prestodb.io/docs/current/functions/datetime.html