欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

Presto 常用函数介绍

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 的符号函数,即

  • 返回0,如果参数为 0
  • 返回1,如果参数大于 0
  • 返回-1,如果参数小于 0

对于 double 类型的参数,该函数还返回以下的结果:

  • 返回 NaN,如果参数是 NaN
  • 返回 1,如果参数是 +Infinity
  • 返回-1,如果参数是 -Infinity

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)
喜欢 (0)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!