欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据
  • 4 字符串函数
  • 4.1 concat(string1, ..., stringN)
  • 4.2 length(string)
  • 4.3 lower(string)
  • 4.4 upper(string)
  • 4.5 lpad(string, size, padstring)
  • 4.6 ltrim(string)
  • 4.7 replace(string, search, replace)
  • 4.8 reverse(string)
  • 4.9 rpad(string, size, padstring)
  • 4.10 rtrim(string)
  • 4.11 split(string, delimiter)
  • 4.12 split_part(string, delimiter, index)
  • 4.13 strpos(string, substring)
  • 4.14 substr(string, start)
  • 4.15 substr(string, start, length)
  • 4.16 trim(string)
  • 5 Date 和 Time 函数
  • 5.1 current_date
  • 5.2 current_time
  • 5.3 current_timestamp
  • 5.4 current_timezone()
  • 5.5 now()
  • 5.6 localtime
  • 5.7 localtimestamp
  • 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)
    喜欢 (1)
    分享 (0)
    发表我的评论
    取消评论

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