tencent cloud

文档反馈

Hive 函数对照

最后更新时间:2024-08-07 17:34:57
    DLC 对 Hive 函数有完善的支持,您可以轻松地从 Hive 升级到数据湖计算 DLC,使用更强大的数据湖特性。
    DLC 统一函数与 Hive 函数存在部分细微差别,具体函数对照表如下。
    Hive 函数详情可以参考 Apache Hive 官网LanguageManual UDF

    数学函数

    Hive 数学函数可参考 Apache Hive 官网 MathematicalFunctions
    DLC 数学函数请参见腾讯云官网文档 数学函数
    Hive3.1函数名称
    函数功能描述
    DLC 函数名称
    差异表述
    使用参考
    round
    四舍五入取整
    round
    无差异
    select round(1.23);
    round
    保留指定位数小数四舍五入
    round
    无差异
    select round(1.234,2);
    bround
    HALF_EVEN 模式下的四舍五入
    bround
    DLC 函数中 bround 需要传入2个参数,其中第2个参数指定保留的小数位。将第二个参数置为0,效果等同 hive 中的 bround(double a)
    select bround(1.237,0);
    bround
    HALF_EVEN 模式下的四舍五入,保留指定的小数位
    bround
    无差异
    select bround(1.237,2);
    floor
    向下取整
    floor
    无差异
    select floor(1.23);
    ceil, ceiling
    向上取整
    无差异
    select ceil(1.93);
    select ceiling(1.13);
    rand
    返回一个0到1范围内的随机数。如果指定种子 seed,则会等到一个稳定的随机数序列
    rand
    无差异
    select rand();
    select rand(5);
    exp
    e 的 a 次方
    exp
    无差异
    select exp(1);
    select exp(2.4);
    ln
    自然对数函数
    ln
    无差异
    select ln(2.4);
    log10
    以10为底的对数函数
    log10
    无差异
    select log10(2.4);
    log2
    以2为底的对数函数
    log2
    无差异
    select log2(2.4);
    log
    对数函数
    log
    无差异
    select log(2,4);
    pow, power
    次方函数
    powpower
    无差异
    select pow(2,4);
    sqrt
    开方函数
    sqrt
    无差异
    select sqrt(4);
    bin
    二进制函数
    bin
    无差异
    select bin(4);
    hex
    十六进制函数
    hex
    无差异
    select hex(10);
    unhex
    十六进制转string
    unhex
    DLC Spark 函数中需要对结果进行 decode
    select decode(unhex('3141'), 'UTF-8');
    conv
    进制转化
    conv
    无差异
    select conv(2,10,2);
    abs
    取绝对值
    abs
    无差异
    select abs(-1);
    pmod
    取模
    pmod
    无差异
    select pmod(5,3);
    sin
    三角函数 sin,a 为弧度
    sin
    无差异
    select sin(3.14);
    asin
    三角函数 arc sin,a 为弧度
    asin
    无差异
    select asin(0.5);
    cos
    三角函数 cos,a 为弧度
    cos
    无差异
    select cos(3.14);
    acos
    三角函数arc cos,a 为弧度
    acos
    无差异
    select acos(1);
    tan
    三角函数 tan,a 为弧度
    tan
    无差异
    select tan(3.14);
    atan
    三角函数 arc tan,a 为弧度
    atan
    无差异
    select atan(1);
    degrees
    弧度转角度
    degrees
    无差异
    select degrees(3.14);
    radians
    角度转弧度
    radians
    无差异
    select radians(180);
    positive
    返回 a
    positive
    无差异
    select positive(-1);
    negative
    返回 -a
    negative
    无差异
    select negative(1);
    sign
    如果 a 为正数,则返回1.0;如果 a 为负数,则返回-1.0;
    如果 a 为0,则返回0.0
    sign
    无差异
    select sign(1.12);
    e
    返回自然常数 e
    e
    无差异
    select e();
    pi
    返回圆周率 pi
    pi
    无差异
    select pi();
    factorial
    阶乘
    factorial
    无差异
    select factorial(5);
    cbrt
    立方根
    cbrt
    无差异
    select cbrt(27);
    shiftleft
    左移位
    shiftleft
    无差异
    select shiftleft(3,1);
    shiftright
    右移位
    无差异
    select shiftright(3,1);
    shiftrightunsigned
    无符号右移位
    无差异
    select shiftrightunsigned(3,1);
    greatest
    返回最大值
    greatest
    当参数中有 null 值时,DLC 函数对 null 值不做计算,返回除 null 之外最大值,Hive 函数会返回 null
    select greatest(1,2,3.3);
    least
    返回最小值
    least
    当参数中有 null 值时,DLC 函数对 null 值不做计算,返回除 null 之外最小值,Hive 函数会返回 null
    select least(1,2,3.3);
    width_bucket
    分桶值,按 min_value/max_value 创建 num_buckets+1 个相同大小的桶,返回当前值所在的桶编号
    无差异
    select width_bucket(10,1,20,2);

    集合函数

    DLC 集合函数与 Hive 集合函数无差异。
    Hive 集合函数可参考 Apache Hive 官网 CollectionFunctions
    DLC 集合函数请参见腾讯云官网文档 集合函数
    Hive3.1函数名称
    函数功能描述
    DLC 函数名称
    差异表述
    使用参考
    size
    返回 map / array 的大小
    size
    无差异
    select size(str_to_map('a:1,b:2'));
    map_keys
    返回 map 的 key 值列表
    map_keys
    无差异
    select map_keys(str_to_map('a:1,b:2'));
    map_values
    返回 map 的 value 值列表
    无差异
    select map_values(str_to_map('a:1,b:2'));
    array_contains
    array 中是否包含 value
    无差异
    select array_contains(split('a,b',','),'a');
    sort_array
    升序排列 array 中的元素
    无差异
    select sort_array(split('1,3,2',','));

    类型转化函数

    Hive3.1函数名称
    函数功能描述
    DLC 函数名称
    差异表述
    使用参考
    binary
    将输入的参数转换为二进制数组
    binary
    Hive3.1入参仅支持 string 和 binary;DLC 支持 string、int、long 和 binary入参
    Hive3.2的出参会转换为 string展示,而 DLC 的出参是二进制数组,不会转 string
    select binary('testString')
    select binary(1)(HIVE 不支持)
    select binary(inputCol) from inputTable(HIVE 不支持)
    cast
    将输入的参数转强制转换为指定 type 类型。
    如果给定的表达式或值无法强制转换为指定类型则会报错,例如字符串转 long 错误:Cast function cannot convert value of type VARCHAR(65536) to type LONG
    cast
    Hive3.1对强制转换失败的会返回 NULL,而 DLC 会报错
    select cast('10' as int)select cast(inputCol as int) from inputTable

    时间函数

    Hive3.1函数名称
    函数功能描述
    DLC 对应函数名称
    差异表述
    使用参考
    from_unixtime
    将数字化的 Unix 时间(表示从1970-01-01 00:00:00 UTC 开始计数的秒数)转换为指定格式的字符串函数。
    默认输出的时间格式为 yyyy-MM-dd HH:mm:ss,时区为当前系统定义的时区。
    无差异
    select from_unixtime(12458456)
    select from_unixtime(100, 'yyyyMMdd HH:mm:ssZ')
    unix_timestamp
    指定一个时间,或默认为当前时间,返回从1970-01-01 00:00:00 UTC 开始到指定时间的秒数。
    无差异
    select unix_timestamp()
    select unix_timestamp('2023-04-12 00:00:00')
    select unix_timestamp('2023-04-12', 'yyyy-MM-dd')
    to_date
    指定一个时间,获取这个时间所在的日期。
    例如2023-04-12 13:14:20所在的日期为2023-04-12。
    to_date
    HIVE 的 to_date 函数只能按指定格式 yyyy-MM-dd HH:mm:ss 输入,非指定格式的统一返回 NULL。
    DLC 可以附加一个参数用于指定数据格式,从而使得输入的时间格式可以更灵活。
    select to_date('2023-04-12 19:41:23')
    select to_date('20230412 19:41', 'yyyy-MM-dd HH:mm')(HIVE 不支持)
    select to_date('20230412 19:41', 'yyyyMMdd HH:mm')(HIVE 不支持)
    year
    指定一个时间,获取这个时间所在的年。
    例如2023-04-12 13:14:20所在的天为2023
    year
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select year('2023-04-12 19:41:25')
    select year('2023-04')(HIVE 不支持)
    quarter
    指定一个时间,获取这个时间所在的季度。
    例如2023-04-12 13:14:20所在的季度为2
    quarter
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select quarter('2023-04-12 19:41')
    select quarter('2023-04')(HIVE 不支持)
    month
    指定一个时间,获取这个时间所在的月。
    例如2023-04-12 13:14:20所在的月为4。
    month
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持yyyy或yyyy-MM格式。
    当时间格式月份超过12时,HIVE 会计算和最后一个月的差值并取余,而 DLC 返回 NULL。
    select month('2023-04-12 19:41')
    select month('2023-04')(HIVE 不支持)
    day/dayofmonth
    指定一个时间,获取这个时间所在的天。
    例如2023-04-12 13:14:20所在的月为当月第12天。
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    当时间格式中的天数超过了当月的天数,HIVE 会对当月天数取余,而 DLC 会返回 NULL。
    select day('2023')(HIVE 不支持)
    select dayofmonth('2023-04-12 19:41')
    select day('2023-04-12 19:41')
    hour
    指定一个时间,获取这个时间所在的小时。
    例如2023-04-12 13:14:20所在的月为第13个小时。
    hour
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    当时间格式中的小时超过了23时,HIVE 会对23取余,而 DLC 会返回 NULL
    select hour('2023-04-12 19:41')
    select hour('2023-04')(HIVE 不支持)
    minute
    指定一个时间,获取这个时间所在的分钟。
    例如2023-04-12 13:14:20所在的月为第14分钟。
    minute
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    当时间格式中的分钟超过了59时,HIVE 会对60取余,而 DLC 会返回 NULL
    select minute('2023-04-12 00:41')
    select minute('2023-04')(HIVE 不支持)
    second
    指定一个时间,获取这个时间所在的秒。
    例如2023-04-12 13:14:20所在的月为第20秒。
    second
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持yyyy或yyyy-MM格式。
    当时间格式中的秒超过了59时,HIVE 会对60取余,而 DLC 会返回 NULL
    select second('2023-04-12 00:41:24')
    select second('2023-04')(HIVE 不支持)
    weekofyear
    指定一个时间,返回指定时间在全年的第几周。
    例如2023-04-12 13:14:20是2023年的第15周。
    需要额外注意的是,当年的第一个周一,视为第一周的开始,如果日期时间在当年的第一个周一之前,会被认为是上一年的第52周。例如2023-01-01是周日,则weekofyear('2023-01-01')返回的是52,即上一年的第52周,而weekofyear('2023-01-02')则返回1,即当年的第1周
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select weekofyear('2023-04-12 00:41:25')
    select weekofyear('2023-04')(HIVE 不支持)
    extract
    extract(field from source)从输入的 source 时间或时间间隔中抽取指定的 field 字段
    extract
    HIVE 和 DLC 版本目前不支持调整精度。
    当 DATE 或 TIMESTAMP 标识符显式指定时,如果日期或时间格式不匹配,DLC 会报错,HIVE 会返回0。
    HIVE 在计算 INTERNAL 的间隔时,如果 field 不在 source 中,会自动计算取余,DLC 则会报错。例如从间隔24个月中抽取年的字段,HIVE 会返回2年,DLC 则会报错字段不存在。
    select extract(DAY FROM DATE '2023-04-12')
    select extract(second from TIMESTAMP '2023-04-12 00:41:25')
    select extract(month from interval '23-1' YEAR TO MONTH)
    select extract(month from interval '23' MONTH)
    select extract(year from interval '23' MONTH) (DLC 不支持)
    select extract(hour from interval '23 13:23:34.34784' DAY TO SECOND)
    datediff
    计算从 startDate 到 endDate 所差的天数。如果 startDate 比 endDate 更迟,返回的是负数。
    任意一个输入为 NULL,则返回 NULL
    datediff
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持yyyy 或 yyyy-MM 格式。
    select datediff('2021', '2022-10')(HIVE 不支持)
    select datediff('2023-04-13', '2022-04-13 11:00:00')
    from_utc_timestamp
    给定一个 UTC 标准时间timestamp,将其转换为给定时区 timeZone 的时间。
    任意一个输入为 NULL,则返回 NULL。
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    Hive 返回的是时间格式,字符串表示为 yyyy-MM-dd HH:mm:ss。
    而 DLC 返回的是 UTC 标准表示,例如上海时区为 yyyy-MM-ddTHH:mm:ss+08:00。
    select  from_utc_timestamp('2023-04', 'Asia/Seoul')
    select from_utc_timestamp('2023-04-12 15:00:00', 'Asia/Shanghai')
    to_utc_timestamp
    给定一个时区 timeZone 的时间timestamp,转换为 UTC 标准时间 timestamp。
    任意一个输入为 NULL,则返回 NULL。
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    Hive 返回的是时间格式,字符串表示为 yyyy-MM-dd HH:mm:ss。
    而 DLC 返回的是 UTC 标准表示,例如上海时区为 yyyy-MM-ddTHH:mm:ss+08:00。
    select to_utc_timestamp('2023-04-12 15:00:00', 'Asia/Shanghai')
    select to_utc_timestamp('2023-04', 'Asia/Shanghai')(HIVE 不支持)
    date_add
    日期加法,给定 startDate 日期,返回加上 numDays 天后的日期。
    numDays 可以是负数。
    任意一个输入为 NULL,则返回 NULL。
    date_add
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 可以支持 yyyy 或 yyyy-MM 格式。
    select date_add('2023-04-12 15:00:00', 1)
    select date_add('2023-04', -1)(HIVE 不支持)
    date_sub
    日期减法,给定 startDate 日期,返回减去 numDays 天后的日期。
    numDays 可以是负数。
    任意一个输入为 NULL,则返回 NULL。
    date_sub
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select date_sub('2023-04-12 15:00:00', 1)
    select date_sub('2023-04', -1)(HIVE 不支持)
    current_date
    获取当前日期
    无差异
    select current_date()
    current_timestamp
    获取当前时间
    无差异
    select current_timestamp()
    add_months
    计算指定的日期(或时间)加上指定月数后的日期。
    输入为 NULL,则返回 NULL。
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select add_months('2023-04-12 15:00:00', 1)
    select add_months('2023-04', -1)(HIVE 不支持)
    last_day
    计算指定的日期所在月的最后一天。
    输入为 NULL,则返回 NULL。
    last_day
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select last_day('2023-04-12 15:00:00')
    select last_day('2023-04')(HIVE 不支持)
    next_day
    计算指定日期后第一个 day_of_week 的日期,day_of_week 表示周几,可选值从周一到周日。
    任意一个输入为 NULL,则返回 NULL。
    next_day
    HIVE 的输入不支持 yyyy 或 yyyy-MM格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select next_day('2023-04-12 15:00:00')
    select next_day('2023-04')(HIVE 不支持)
    trunc
    计算指定日期按 format(例如年、季度、月、周等)缩短后的第一天的日期,例如所在季度的第一天,所在月份的第一天,所在周的第一天等。
    trunc
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    HIVE 不支持 WEEK 周。
    select trunc('2023-04-12 15:00:00', 'MONTH')
    select trunc('2023-04', 'YEAR')(HIVE 不支持)
    -
    计算指定日期按 format(例如年、季度、月、周等)缩短后的第一天的时间,例如所在季度的第一天的零点。和 trunc 方法的不同在于 date_trunc 返回的是时间。
    HIVE 不支持该函数,可参考 trunc 函数。
    select date_trunc('MM', '2023-04-12 15:00:00')
    select date_trunc('SECOND', '2023-04-12 15:00:60')
    months_between
    计算 date1到 date2相差的月数。如果 date1<date2,则返回负数。
    需要注意的是,计算时,每个月是按31天估算的,即分母为31。分子则为两个时间实际相差的精确到毫秒级别的时间差。最终计算的结果为小数。
    任意一个入参为 NULL 时返回 NULL。
    HIVE 的输入不支持 yyyy 或 yyyy-MM 格式,其他时间或日期格式都支持。
    DLC 则可以支持 yyyy 或 yyyy-MM 格式。
    select months_between('2023-04-12 15:00:00', '2023-04-12 15:00:00')
    select months_between('2023-04', '2023-04-12 15:00:00')(HIVE 不支持)
    date_format
    按照指定的格式化模板 fmt(参考 Datetime Patterns for Formatting and Parsing),将输入的日期格式化。
    任意一个入参为 NULL 时返回 NULL。
    当 date 时间或日期格式不对,或者 fmt 模板格式不对时,HIVE 返回N ULL,而 DLC 会报错。
    select date_format('2023-04-12 15:00:00', 'y')
    select date_format('2023-04-12', 'yyyy-MM-dd HH:mm')

    条件函数

    Hive3.1函数名称
    函数功能描述
    DLC 函数名称
    差异表述
    使用参考
    if
    当条件为真时返回 valueTrue,否则返回 valueFalseOrNull
    if
    判断条件为 NULL 时,HIVE 认为判断条件为假,而 DLC 会报错
    select if(1<2, 12, 'false')
    isnull
    如果 a 为 NULL,则返回 true,否则返回 false
    isnull
    无差异
    select isnull('false')
    isnotnull
    如果 a 不是 NULL,则返回 true,否则返回 false
    isnotnull
    无差异
    select isnotnull('false')
    nvl
    如果值为 NULL,则返回第二个参数
    nvl
    无差异
    select nvl(NULL, 'false')
    select nvl(1, 'false')
    coalesce
    返回第一个非 NULL 的参数
    coalesce
    无差异
    select coalesce(NULL, 'false')
    case/when
    匹配判断
    case/when
    匹配选择的类型不相同时,HIVE 仅支持整型和字符串类型的隐式转换,而DLC 还可以支持 boolean 类型等的隐式转换。
    select CASE 'c' WHEN 'a' THEN 1 WHEN 'b' THEN 2 ELSE 0 END;
    select CASE WHEN 1 > 0 THEN 1 WHEN 2 > 0 THEN 2.0 ELSE 1.2 END;
    nullif
    如果参数 a=b,则返回 null,否则返回 a
    nullif
    HIVE 不支持第一个参数为 NULL,而DLC 可以支持任一参数为 NULL
    select nullif(1, 'test');
    select nullif(NULL, 'test');(HIVE不支持)
    assert_true
    如果“条件”不为真,则抛出异常,否则返回 null
    无差异
    select assert_true(1>0)

    字符串函数

    Hive3.1函数名称
    函数功能描述
    DLC 对应函数名称
    差异表述
    使用参考
    ascii
    返回 str 的第一个字符串的数值
    ascii
    无差异
    select ascii('222');
    base64
    将参数从二进制转换为 base64字符串
    base64
    无差异
    select base64('tencent');
    character_length
    返回 str 中包含的 UTF-8字符数
    无差异
    select char_length(binary('tencent'));
    chr
    返回具有等效于 A 的二进制字符
    chr
    无差异
    select chr(65);
    concat
    返回按顺序串联作为参数传递的字符串或字节所产生的字符串或字节
    concat
    无差异
    select concat('Spark', 'SQL');
    context_ngrams
    给定一个 contextual N-grams,从一组标记化的句子中返回前 k 个上下文 N-gram
    无差异
    -
    concat_ws
    返回由 sep 分隔的字符串
    concat_ws
    无差异
    select concat_ws(' ', 'tencent', 'dlc');
    decode
    使用提供的字符集(“US-ASCII”、“ISO-8859-1”、“UTF-8”、“UTF-16BE”、“UTF-16LE”、“UTF-16”之一)将第一个参数解码为字符串。如果任一参数为空,结果也将为空。
    decode
    无差异
    select decode(encode('abc', 'utf-8'), 'utf-8');
    elt
    返回索引号的字符串。例如,elt(2,'hello','world')返回'world'。如果 N 小于1或大于参数,则返回NULL。
    elt
    无差异
    select elt(1, 'scala', 'java');
    encode
    使用提供的字符集(“US-ASCII”、“ISO-8859-1”、“UTF-8”、“UTF-16BE”、“UTF-16LE”、“UTF-16”之一)将第一个参数编码为二进制。如果任一参数为 Null,结果也将为 Null
    encode
    无差异
    select encode('abc', 'utf-8');
    field
    field(val T,val1 T,val2 T,val3 T,...)
    该函数返回在参数列表 val1,val2,val3,...中 val 的索引位置,如果未找到则返回0。例如,field('world','say','hello','world')返回3。
    该函数支持所有基本数据类型,参数使用 str.equals(x)进行比较。
    如果 val 为 NULL,则返回值为0。
    field
    DLC 函数中,仅presto 引擎支持
    select field('world', 'say', 'hello', 'world');
    
    find_in_set
    返回逗号分隔列表 atr_array 中给定字符串 str 的索引(从1开始计数)。如果未找到字符串或 str 包含逗号,则返回0。
    无差异
    select find_in_set('ab','abc,b,ab,c,def');
    format_number
    将输入的参数格式化为'#,###,###.##',四舍五入到 D 小数位,并以字符串形式返回结果。
    无差异
    select format_number(12332.123456, 4);
    get_json_object
    提取 json 对象
    无差异
    select get_json_object('{"a":"b"}', '$.a');
    in_file
    in_file(string str, string filename)
    如果字符串 str 在文件 filename 中作为整行出现,则返回 true。
    不支持
    -
    -
    instr
    返回 str 中第一次出现 substr 的索引(从1开始计数)
    instr
    无差异
    select instr('SparkSQL', 'SQL');
    length
    返回字符串的长度
    length
    无差异
    select length('Spark SQL ');
    locate
    返回位置pos之后str中substr首次出现的位置。
    locate
    无差异
    select locate('bar', 'foobarbar');
    lower
    返回将B的所有字符转换为小写产生的字符串
    lower
    无差异
    select lower('TENCENT');
    lpad
     lpad(string str, int len, string pad)
    将字符串 str 左侧填充字符 pad,使其长度达到 len。如果 str 的长度大于 len,则返回值将被截断为 len 个字符。如果填充字符 pad 为空,则返回值为 null。
    lpad
    DLC sparksql 引擎中 pad 为可选参数, pad 默认为空格
    select lpad('hi', 5, '??');
    ltrim
    返回从输入字符串的开头(左侧)修剪空格产生的字符串
    ltrim
    无差异
    select ltrim(' SparkSQL ');
    ngrams
    返回一组标记化句子中的前 k 个 N-grams。
    ngrams
    无差异
    -
    octet_length
    返回字符串数据的字节长度或二进制数据的字节数。
    无差异
    select octet_length('Spark SQL');
    parse_url
    从 url 中提取 path
    parse_url
    无差异
    select parse_url('http://spark.apache.org/path?query=1', 'HOST');
    printf
    返回 printf 样式格式字符串中的格式化字符串
    printf
    无差异
    select printf("Hello World %d %s", 100, "days");
    quote
    返回引号字符串
    不支持
    -
    -
    regexp_extract
    提取str中与regexp表达式匹配并对应于regex组索引idx的第一个字符串
    无差异
    select regexp_extract('100-200', '(\\\\d+)-(\\\\d+)', 1);
    regexp_replace
    regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)
    返回将 INITIAL_STRING 中与 PATTERN 中定义的 Java 正则表达式语法匹配的所有子字符串替换为 REPLACEMENT 实例后得到的字符串。
    DLC sparksql 引擎中还可以加入第四个自选参数 position, position 是一个正整数字面量,表示在字符串中开始搜索的位置。默认值为1。
    select regexp_replace('100-200', '(\\\\d+)', 'num');
    
    repeat
    返回将给定字符串重复 n 次的字符串
    repeat
    无差异
    select repeat('123', 2);
    replace
    replace(string A, string OLD, string NEW)
    返回将字符串A中所有不重叠的 OLD 出现替换为NEW后得到的字符串。
    replace
    sparksql 引擎中第三个参数 NEW 为可选参数,默认为空
    select replace('ABCabc', 'abc', 'DEF');
    
    reverse
    reverse(string A)
    返回反转后的字符串。
    reverse
    sparksql 引擎中参数可以是 array
    select reverse('Spark SQL');
    
    rpad
    rpad(string str, int len, string pad)
    将字符串 str 右侧填充字符 pad,使其长度达到 len。如果 str 的长度大于 len,则返回值将被截断为 len 个字符。如果填充字符 pad 为空,则返回值为 null。
    rpad
    sparksql 引擎中 pad 为可选参数,pad 默认为空格
    select rpad('hi', 5, '??');
    
    rtrim
    返回从输入字符串的末端(右侧)修剪空格产生的字符串
    rtrim
    无差异
    select rtrim(' SparkSQL ');
    sentences
    将输入字符串 str 拆分为一个单词数组
    sentences
    无差异
    select sentences('Hi there! Good morning.');
    space
    返回一个由 n 个空格组成的字符串
    space
    无差异
    select concat(space(2), '1');
    split
    split(string str, string pat)
    围绕正则表达式 pat(pat 是一个正则表达式)拆分字符串 str。
    split
    DLC sparksql 引擎中有第三个可选参数 limit。limit 可以用以限制返回数组的长度。
    select split('oneAtwoBthreeC', '[ABC]');
    
    str_to_map
    使用分隔符将输入参数拆分为键/值对后创建 map。
    无差异
    select str_to_map('a:1,b:2,c:3', ',', ':');
    substr
    返回从 pos 开始且长度为 len 的 str 子字符串,或从 pos 开始且长度为 len 的字节数组切片
    substr
    无差异
    select substr('Spark SQL', 5);
    substring
    返回从 pos 开始且长度为 len 的 str 子字符串,或从 pos 开始且长度为 len 的字节数组切片。
    substring
    无差异
    select substring('Spark SQL', 5);
    substring_index
    在 delim 的出现 count 之前,从 str 返回子字符串。如果 count 为正数,则返回最后定界符左侧的所有内容(从左侧计数)。如果计数为负数,则返回最终定界符右侧的所有内容(从右侧计数)。该函数在匹配 delim 时区分大小写。
    无差异
    select substring_index('cloud.tencent.com', '.', 2);
    translate
    通过将 from 字符串中的字符替换为 to 字符串中的相应字符来转换 input 字符串
    translate
    无差异
    select translate('AaBbCc', 'abc', '123');
    trim
    返回从输入字符串的两端修剪空格产生的字符串
    trim
    DLC SparkSQL 引擎支持更复杂的修剪表达式
    select trim(' SparkSQL ');
    unbase64
    将 str 从 base64字符串转换为二进制
    unbase64
    无差异
    select unbase64('U3BhcmsgU1FM');
    upper
    返回所有字符都改为大写的 str
    upper
    无差异
    select upper('tencent');
    ucase
    返回所有字符都改为大写的 str
    ucase
    无差异
    select ucase('SparkSQL');
    initcap
    每个单词的第一个字母都改为大写,所有其他字母均为小写。
    initcap
    无差异
    select initcap('sPark sql');
    levenshtein(string A, string B)
    返回两个给定字符串之间的 Levenshtein 距离
    无差异
    select levenshtein('kitten', 'sitting');
    soundex(string A)
    返回字符串的 Soundex 编码
    soundex
    无差异
    select soundex('Miller');

    数据屏蔽函数

    Hive3.1函数名称
    函数功能描述
    DLC 对应函数名称
    差异表述
    使用参考
    mask
    mask(string str[, string upper[, string lower[, string number]]])
    返回 str 的掩码版本。
    不支持
    -
    -
    mask_first_n
    mask_first_n(string str[, int n])
    返回 str 的掩码版本,其中前 n 个值被掩码替换。
    不支持
    -
    -
    mask_last_n
    mask_last_n(string str[, int n])
    返回 str 的掩码版本,其中最后 n 个值被掩码替换。
    不支持
    -
    -
    mask_show_first_n
    mask_show_first_n(string str[, int n])
    返回 str 的掩码版本,其中显示前 n 个字符未掩码替换。
    不支持
    -
    -
    mask_show_last_n
    mask_show_last_n(string str[, int n])
    返回 str 的掩码版本,其中显示前 n 个字符未掩码替换。
    不支持
    -
    -
    mask_hash
    mask_hash(string|char|varchar str)
    基于 str 返回一个哈希值。
    不支持
    -
    -

    其他函数

    Hive3.1函数名称
    函数功能描述
    DLC 对应函数名称
    差异表述
    使用参考
    java_method
    reflect 的同义词
    不支持
    -
    -
    reflect
    使用反射匹配参数签名来调用 Java 方法
    不支持
    -
    -
    hash
    返回参数的散列值
    hash
    不同引擎计算方式不一致,可能得到不同结果
    select hash('tencent', array(123), 2);
    current_user
    返回当前用户
    无差异
    select current_user();
    logged_in_user
    从会话状态返回当前用户名。这是连接到 Hive 时提供的用户名。
    不支持
    -
    -
    current_database
    返回当前数据库名称
    不支持
    -
    -
    md5
    以十六进制字符串形式返回 MD5 128位校验和
    md5
    无差异
    select md5('tencent');
    sha1
    以十六进制字符串形式返回输入参数的 sha1哈希值
    sha1
    无差异
    select sha1('tencent');
    sha
    以十六进制字符串形式返回输入参数的 sha1哈希值
    sha
    无差异
    select sha('tencent');
    crc32
    使用 CRC32算法计算表达式的循环冗余校验值
    crc32
    无差异
    select crc32('tencent');
    sha2
    以十六进制字符串形式返回 expr 的 SHA-2族的校验和。支持 SHA-224、SHA-256、SHA-384和 SHA-512。位长度0等于256
    sha2
    无差异
    select sha2('tencent', 256);
    aes_encrypt
    aes_encrypt(input string/binary, key string/binary)
    使用 aes 加密
    DLC 中 sparksql 引擎不支持该函数
    select hex(aes_encrypt('tencent', '0000111122223333'));
    
    aes_decrypt
    aes_decrypt(input binary, key string/binary)
    使用 AES 解密
    DLC 中 sparksql 引擎不支持该函数
    select aes_decrypt(unhex('B99B99CE3359A736DBB9811ED8815C01'), '0000111122223333');
    version
    version()
    返回引擎版本
    version
    sparksql 返回 spark 版本, presto 返回 hive版本
    select version();
    surrogate_key
    surrogate_key([write_id_bits, task_id_bits])
    在向表中插入数据时自动生成数字 ID。只能用作 ACID 或仅插入表的默认值。
    不支持
    -
    -
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持