其他函数

本文为您提供数据分析支持的CAST、DECODE、LEAST、ARRAY、SIZE、NVL等函数的命令格式、参数说明及示例。

函数

功能

CAST

将表达式的结果转换成目标类型。

COALESCE

返回列表中第一个非NULL的值。

UUID

返回一个随机ID。

CASE WHEN表达式

根据表达式的计算结果,灵活地返回不同的值。

IF表达式

判断指定的条件是否为真。

CAST

  • 命令格式

    cast(<expr> as <type>)
  • 命令说明

    expr的结果转换成目标数据类型,用法如下:

    • cast(double as bigint):将DOUBLE数据类型值转换成BIGINT数据类型。

    • cast(string as bigint):在将字符串转为BIGINT数据类型时,如果字符串中是以整型表达的数字,则会直接将它们转为BIGINT类型。如果字符串中是以浮点数或指数形式表达的数字,则会先转为DOUBLE数据类型,再转为BIGINT数据类型。

    • cast(string as datetime)cast(datetime as string):会采用默认的日期格式yyyy-mm-dd hh:mi:ss

  • 参数说明

    • expr:必填。表达式,待转换数据来源。

    • type:必填。目标数据类型。

  • 返回值说明

    返回值为转换后的目标数据类型。

  • 示例

    • 示例1:常见用法。

      --返回1。
          cast('1' as bigint);
    • 示例2:异常用法,如果转换不成功或遇到不支持的类型转换,则会返回NULL。

      --返回NULL。
          cast('abc' as bigint);

COALESCE

  • 命令格式

    coalesce(<expr1>, <expr2>, ...)
  • 命令说明

    返回<expr1>, <expr2>, ...中第一个非NULL的值,如果列表中所有的值都是NULL,则返回NULL。

  • 参数说明

    expr:必填。待验证的值。所有值类型必须相同或为NULL,不一致的数据类型会返回报错。至少要有一个参数非NULL,否则会返回报错。

  • 返回值说明

    返回值类型和参数类型相同。

  • 示例

    • 示例1:常见用法。

      --返回1。
          coalesce(null,null,1,null,3,5,7);
    • 示例2:参数值类型不一致,返回报错。

      --返回报错,无法识别abc。
          coalesce(null,null,1,null,abc,5,7);
    • 示例3:参数值无非NULL值,返回报错。

      --返回报错,至少有一个参数值非NULL。
          coalesce(null,null,null,null);

UUID

  • 命令格式

    string uuid()
  • 命令说明

    返回一个随机ID,格式为29347a88-1e57-41ae-bb68-a9edbdd9****

    说明

    UUID返回的是一个随机的全局ID,其重复的概率很小。

CASE WHEN表达式

  • 命令格式

    提供以下两种case when格式:

    • case <value>
      when <value1> then <result1>
      when <value2> then <result2>
      ...
      else <resultn>
      end
    • case
      when (<_condition1>) then <result1>
      when (<_condition2>) then <result2>
      when (<_condition3>) then <result3>
      ...
      else <resultn>
      end
  • 命令说明

    根据value_condition的计算结果,灵活地返回不同的result值。

  • 参数说明

    • value:必填。比较的值。

    • _condition:必填。指定条件。

    • result:必填。返回值。

    说明
    • 如果result类型只有BIGINT、DOUBLE,统一转为DOUBLE后,再返回。

    • 如果result类型中有STRING类型,则统一转为STRING后,再返回。如果无法进行类型转换,例如BOOLEAN类型无法转换为STRING类型,则会返回报错。

    • 不允许其它类型之间的转换。

  • 示例

    根据shop_name的不同情况得出所属区域。

    case  
    when shop_name is null then 'default_region'
    when shop_name like 'hang%' then 'zj_region'
    end as region 
    from sale_detail;

IF表达式

  • 命令格式

    if(<testCondition>, <valueTrue>, <valueFalseOrNull>)
  • 命令说明

    判断testCondition是否为真。如果为真,返回valueTrue的值,否则返回valueFalseOrNull的值。

  • 参数说明

    • testCondition:必填。要判断的表达式,BOOLEAN类型。

    • valueTrue:必填。表达式testCondition为True时,返回的值。

    • valueFalseOrNull:表达式testCondition为False时,返回的值,可以设为NULL。

  • 返回值说明

    返回值类型和参数valueTruevalueFalseOrNull的类型一致。

  • 示例

    --返回200。
        if(1=2,100,200);