文章目录
Presto 是由 Facebook 开发并开源的分布式 SQL 交互式查询引擎,很多公司都是用它实现 OLAP 业务分析。本文列出了 Presto 常用的函数列表。
数学函数
数学函数作用于数学公式。下表给出了详细的数学函数列表。
abs(x)
返回 x 的绝对值。使用如下:
presto:default> select abs(1.23) as absolute; absolute ---------- 1.23
cbrt(x)
返回 x 的立方根,使用如下:
presto:default> select cbrt(4) as cubic_root; cubic_root -------------------- 1.5874010519681996
ceiling(x)
返回 x 值四舍五入到最接近的整数,使用如下:
presto:default> select ceiling(4.7) as ceiling; ceiling --------- 5.0
ceil(x)
它是 ceiling(x) 函数的别名。
degrees(x)
返回 x 的度数值,使用如下:
presto:default> select degrees(2) as degree; degree -------------------- 114.59155902616465
e(x)\exp(x)
Returns the double value for Euler’s number,使用如下:
presto:default> select e() as exponent; Result exponent ------------------- 2.718281828459045
floor(x)
返回 x 向下舍入到最接近的整数,使用如下:
presto:default> select floor(4.8) as floor; floor ------- 4.0
from_base(string,radix)
返回字符串以 radix 为进制的值,使用如下:
presto:default> select from_base('100', 16); _col0 ------- 256
上面的 100 是十六进制,返回的值是十进制的结果。
ln(x)
返回 x 的自然对数
log2(x)
返回 x 的以 2 为底的对数,使用如下:
presto:default> select log2(5) as log_value; log_value ------------------- 2.321928094887362
log10(x)
返回 x 的以 10 为底的对数。
log(x,y)
返回 x 的以 y 为底的对数。
mod(n,m)
返回 n 除以 m 的模数(余数),使用如下:
presto:default> select mod(2,4) as mod_value; mod_value ----------- 2
pi()
返回圆周率值,结果将作为双精度值返回。
power(x,p)/pow(x,p)
返回 x 的 p 次方值,使用如下:
presto:default> select power(2,3) as power; power ------- 8.0
radians(x)
将角度 x 转换为弧度,使用如下:
presto:default> select radians(4) as radian_value; radian_value --------------------- 0.06981317007977318
rand()/random()
返回一个随机数。
round(x)
返回 x 的舍入值,使用如下:
presto:default> select round(5.9) as round_value; round_value ------------- 6.0
round(x,d)
返回 x 值四舍五入到“d”小数位
sign(x)
返回 x 的符号函数,即
对于 double 类型的参数,该函数还返回以下的结果:
sqrt(x)
返回 x 的平方根,使用如下:
presto:default> select sqrt(3) as squareroot; squareroot -------------------- 1.7320508075688772
to_base(x,radix)
返回 x 的以 radix 为基数的值,使用如下:
presto:default> select to_base(3,4) as base; base ------ 3
truncate(x)
截断 x 的值,使用如下:
presto:default> select truncate(5.9) as truncate_value; truncate_value ---------------- 5.0
width_bucket(x, bound1, bound2, n)
计算一个值在一个 bucket 范围内的位置信息,Returns the bin number of x specified bound1 and bound2 bounds and n number of buckets,使用如下:
presto:default> select width_bucket(5,3,4,5) as width; width ------- 6
width_bucket(x, bins)
Returns the bin number of x according to the bins specified by the array bins,使用如下:
presto:default> select width_bucket(6,array[1,2,3]) as width; width ------- 3
三角函数acos(x)
返回 x 的反余弦值,使用如下:
presto:default> select acos(0.5) as inversecosine; inversecosine -------------------- 1.0471975511965979
asin(x)
返回 x 的反正弦值。
atan(x)
返回 x 的正切值。
atan2(y,x)
返回 y,x 的正切值,使用如下:
presto:default> select atan2(2,3) as inverse_tangent; inverse_tangent -------------------- 0.5880026035475675
cos(x)
返回 x 的返回余弦值。
cosh(x)
返回 x 的双曲余弦值,使用如下:
presto:default> select cosh(1) as hyperbolic_cosine; hyperbolic_cosine ------------------- 1.543080634815244
sin(x)
返回 x 的正弦值,使用如下:
presto:default> select sin(90) as sine; sine -------------------- 0.8939966636005579
tan(x)
返回 x 的正切值。
tanh(x)
返回 x 的双曲正切值。
位函数bit_count(x, bits)
Count the number of bits,使用如下:
presto:default> select bit_count(1,2) as bitcounts; bitcounts ----------- 1
bitwise_and(x,y)
对 x 和 y 的每位执行逐位的 AND 操作,使用如下:
presto:default> select bitwise_and(2,3) as bit_and; bit_and --------- 2
bitwise_or(x,y)
对 x 和 y 的每位执行逐位的 OR 操作,使用如下:
presto:default> select bitwise_or(2,3) as bit_or; bit_or -------- 3
bitwise_not(x)
对 x 和 y 的每位执行逐位的 NOT 操作,使用如下:
presto:default> select bitwise_not(3) as bit_not; bit_not --------- -4
bitwise_xor(x,y)
对 x 和 y 的每位执行逐位的 XOR 操作,使用如下:
presto:default> select bitwise_xor(2,3) as bit_xor; bit_xor --------- 1
字符串函数concat(string1, ..., stringN)
将给定的字符串进行连接,使用如下:
presto:default> select concat('it’,'e’,'blog’) as string_concat; string_concat ---------------- iteblog
length(string)
返回给定字符串长度,使用如下:
presto:default> select length('iteblog’) as string_length; string_length --------------- 7
lower(string)
将给定字符串转换成小写,使用如下:
presto:default> select lower('IteBlog’) as string_lower; string_lower ---------- iteblog
upper(string)
将给定字符串转换成大写,使用如下:
presto:default> select lower('IteBlog’) as string_upper; string_upper ---------- ITEBLOG
lpad(string, size, padstring)
使用 padstring 字符填充字符串,使用如下:
presto:default> select lpad('Presto',5,'o') as string_padding; string_padding ---------------- Prest
ltrim(string)
删除给定字符串左边的空格,使用如下:
presto:default> select ltrim('Apache Presto') as string_ltrim; string_ltrim --------------- Apache Presto
replace(string, search, replace)
将 search 字符串替换成 replace 字符串,使用如下:
presto:default> select replace('cat','c','r') as string_replace; string_replace ---------------- rat
reverse(string)
将给定字符串进行反转,使用如下:
presto:default> select reverse('Presto') as string_reverse; string_reverse ---------------- otserP
rpad(string, size, padstring)
使用 padstring 字符填充字符串,使用如下:
presto:default> select rpad('presto',2,'o') as string_rpad; string_rpad ------------- pr
rtrim(string)
删除给定字符串右边的空格,使用如下:
presto:default> select rtrim('Apache Presto ‘) as string_ltrim; string_ltrim --------------- Apache Presto
split(string, delimiter)
使用 delimiter 分割字符串,使用如下:
presto:default> select split('apache presto','e') as string_split; string_split ------------------- [apach, pr, sto]
split_part(string, delimiter, index)
使用 delimiter 分割字符串并返回第 index 个结果,使用如下:
presto:default> select split_part('apache presto’,'p',2); _col0 ------- ache
strpos(string, substring)
返回子字符串 substring 在给定字符串中的起始位置,使用如下:
presto:default> select strpos('apache','ap') as string_position; string_position ----------------- 1
substr(string, start)
返回给定字符串的子字符串,使用如下:
presto:default> select substr('tutorialspoint',10) as substring; substring ----------- point
substr(string, start, length)
返回给定字符串指定长度的子字符串,使用如下:
presto:default> select substr('tutorialspoint',10,2) as substring; substring ----------- po
trim(string)
去掉给定字符串左右两边的空格,使用如下:
presto:default> select trim(' Presto ') as string_trim; string_trim ------------- Presto
Date 和 Time 函数current_date
返回当前日期,使用如下:
presto:default> select current_date() as date; Date ------------ 2021-11-06
current_time
返回当前时间,使用如下:
presto:default> select current_time() as time; time --------------------------- 18:44:16.345 Asia/Kolkata
current_timestamp
返回当前时间戳,使用如下:
presto:default> select current_timestamp() as timestamp; timestamp -------------------------------------- 2016-07-06 13:14:51.911 Asia/Kolkata
current_timezone()
返回当前时区,使用如下:
presto:default> select current_timezone() as timezone; timezone -------------- Asia/Kolkata
now()
返回带有 timezone 的日期和时间戳
presto:default> select now() as today; today -------------------------------------- 2016-07-06 13:15:49.704 Asia/Kolkata
localtime
返回本地时间:
presto:default> select localtime() as local_time; local_time -------------- 18:47:32.425
localtimestamp
返回本地时间戳:
presto:default> select localtimestamp() as local_timestamp; local_timestamp ------------------------- 2016-07-06 13:17:59.347本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Presto 常用函数介绍】(https://www.iteblog.com/archives/10049.html)