You need to enable JavaScript to run this app.
导航
MaxCompute Buildin Function Plugin
最近更新时间:2024.11.06 17:28:37首次发布时间:2024.05.08 16:00:05

使用配置

MaxCompute插件的jar包随Spark的jar包一起发布,如使用兼容MaxCompute Buildin Function的函数需添加如下配置。

spark.sql.extensions=org.apache.spark.sql.Spark4McExtensions

UDF列表

命令格式

使用方式

SUM

--计算汇总值
DECIMAL
--计算窗口中expr之和
sum([distinct] <expr>) over ([partition_clause]
[orderby_clause] [frame_clause])

计算汇总值。
DOUBLE

COALESCE

coalesce(<expr1>, <expr2>, ...)

从左至右的顺序对输入的参数进行逐一检查,一旦遇到第一个非NULL的值,就会立即返回该值,并不再继续检查后面的参数。

COUNT

-- 计算记录数
bigint count([distinct
--计算窗口中的记录数
bigint count(*) over ([partition_clause]
[orderby_clause] [frame_clause])
bigint count([distinct] <expr>[,...]) over
([partition_clause] [orderby_clause] [frame_clause])

计算记录数。

FIELD

T field(struct <s>, string <fieldName>)
--样例
select (named_struct('f1', 'hello', 'f2', 3).f1)

获取STRUCT对象中成员变量的取值。

SUBSTR

string substr(string <str>, bigint <start_position>
[, bigint <length>])

返回字符串str从**start_position开始,长度为length**的子串。

MAX

--计算最大值
max(<colname>)
--计算窗口中的最大值
max(<expr>) over([partition_clause] [orderby_clause]
[frame_clause])

计算最大值。

INDEX

index(<var1>[<var2>])
--样例
select array('a','b','c')[2];
select str_to_map("test1=1,test2=2",
',', ':')["test1"];

返回MAP或者List类型参数中满足指定条件的Value

CONCAT

array<T> concat(array<T> <a>, array<T> <b>[,...])
string concat(string <str1>, string <str2>[,...])

将多个ARRAY数组中的所有元素连接在一起,生成一个新的ARRAY数组,或将多个字符串连接在一起,生成一个新的字符串。

GET_JSON_OBJECT

string get_json_object(string <json, string <path)

在一个标准JSON字符串中,按照指定方式抽取指定的字符串。

SPLIT_PART

string split_part(string <str>, string <separator>,
bigint <start>[, bigint <end>])

依照分隔符separator拆分字符串str,返回从start部分到end部分的子串(闭区间)。

AVG

--计算平均值
DECIMAL
--计算窗口中expr的平均值。
double avg([distinct] double <expr>) over
([partition_clause] [orderby_clause] [frame_clause])
decimal avg([distinct] decimal <expr>) over
([partition_clause] [orderby_clause] [frame_clause])

计算平均值。
DOUBLE avg()

ROUND

double
<decimal_places>])

四舍五入到指定小数点位置。
decimal round([, bigint

LENGTH

bigint length(string <str>)

计算字符串str的长度。
str:必填。STRING类型。如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型,则会隐式转换为STRING类型后参与运算。

REPLACE

string replace(string <str>, string <old>,
string <new>)

将字符串中与指定字符串匹配的子串替换为另一字符串

  • str:必填。STRING类型。待替换的字符串。如果输入支持转换为STRING类型的数据类型,则会隐式转换为STRING类型参与运算。
  • old:必填。待比较的字符串。
  • new:必填。替换后的字符串。

TRIM

string trim(string <str>[,<trimChars>])
string trim([BOTH] [<trimChars>] from <str>)

去除字符串的左右两端字符。
str的左右两端去除字符:

  • 如果未指定trimChars,则默认去除空格字符。
  • 如果指定了trimChars,则以trimChars中包含的字符作为一个集合,从str的左右两端去除尽可能长的所有字符都在集合trimChars中的子串。
  • str:必填。STRING类型。待去除左右两端字符的字符串。如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型,则会隐式转换为STRING类型后参与运算。
  • trimChars:可选。String类型。待去除的字符。

PERCENTILE_APPROX

double percentile_approx (double <colname[, double
<weight], <p [, <B]))
--以数组形式返回多个百分位近似计算结果。array<double
--percentile_approx (double <colname
   [, double <weight],array(<p1 [, <p2...])
   [, <B])

使用PERCENTILE_APPROX函数计算近似百分位数

TO_CHAR

string to_char(datetime <date>, string <format>)

将日期按照指定格式转换为字符串。

CEIL

bigint ceil(<value>)

向上取整,返回不小于输入值value的最小整数。

MIN

--计算最小值
min(<colname>)
--计算窗口中的最小值
min(<expr>) over([partition_clause] [orderby_clause]
[frame_clause])

计算最小值。

CONCAT_WS

string concat_ws(string <separator>, string <str1>,
string <str2>[,...])
string concat_ws(string <separator>, array<string>
<a>)

返回将参数中的所有字符串或ARRAY数组中的元素按照指定的分隔符连接在一起的结果

SPLIT

split(<str>, <pat>, [<trimTailEmpty>])

通过patstr分割后返回数组。

REGEXP_EXTRACT

string regexp_extract(string <source>, string
<pattern>[, bigint <groupid>])

将字符串source按照pattern的分组规则进行字符串匹配,返回第groupid个组匹配到的字符串内容。

REGEXP_SUBSTR

string regexp_substr(string <source>, string
<pattern>[, bigint <start_position>[, bigint
<occurrence>]])

返回从start_position位置开始,source中第occurrence次匹配指定pattern的子串。

INSTR

bigint instr(string <str1>, string <str2>[, bigint
<start_position>[, bigint <nth_appearance>]])

计算子串str2在字符串str1中的位置。

STDDEV_SAMP

--计算样本标准差
double stddev_samp(double <colname>)
--计算窗口中expr的标准差
double stddev_samp([distinct] <expr>) over
([partition_clause] [orderby_clause] [frame_clause])

计算样本标准差。

TOLOWER

string tolower(string <source>)

将字符串source中的大写字符转换为对应的小写字符。

ARG_MAX

arg_max(<valueToMaximize>, <valueToReturn>)

返回valueToMaximize最大值对应行的valueToReturn

NAMED_STRUCT

struct named_struct(string <name1>, T1 <value1>,
string <name2>, T2 <value2>[, ...])

使用指定的namevalue列表建立STRUCT。

MD5

string md5(string <str>)

计算字符串str的MD5值。

ANY_VALUE

any_value(<colname>)

在指定范围内任选一个值返回。

NULLIF

T nullif(T <expr1>, T <expr2>)

比较expr1expr2的值,二者相等时返回NULL,否则返回expr1

EXPLODE

explode (<var>)

将一行数据转为多行的UDTF。

LOG

double log(<base>, <x>)

计算以base为底的x的对数。

FROM_UNIXTIME

datetime from_unixtime(bigint <unixtime)

FROM_UNIXTIME函数支持将数字类型的UNIX时间日期值转为DATETIME类型日期值

ARRAY

array array(<value>,<value>[, ...])

使用指定的值构造ARRAY数组。

COLLECT_SET

array collect_set(<colname)

colname指定的列值聚合为一个无重复元素的数组。

TO_JSON

string to_json(<expr)

将给定的复杂类型expr,以JSON字符串格式输出。

ABS

bigint

BS函数支持获取输入参数(number)的绝对值,确保输出总是正数或零。
double

PERCENTILE

double percentile(bigint <colname>, <p>)
--以数组形式返回多个百分位精确计算结果。
array percentile(bigint <colname>, array(<p1>
[, <p2>...]))

计算精确百分位数,适用于小数据量。先对指定列升序排列,然后取精确的第p位百分数。p必须在0和1之间。

POW

double

计算xy次方,即x^y
decimal pow(,)

UNIX_TIMESTAMP

bigint unix_timestamp(datetime
string <date>)

将日期date转化为整型的UNIX格式的日期时间值。
date

ARRAY_JOIN

array_join(array<T> <a>, <delimiter>[,
<nullreplacement>])

将ARRAY数组a中的元素使用delimiter拼接为字符串。当数组中元素为NULL时,用nullreplacement替代,没有设置nullreplacement时,会忽略NULL元素。

TOUPPER

string toupper(string <source>)

将字符串source中的小写字符转换为对应的大写字符。

SUBSTRING_INDEX

string substring_index(string <str>, string
<separator>, int <count>)

截取字符串strcount个分隔符之前的字符串。如果count为正,则从左边开始截取。如果count为负,则从右边开始截取。

COVAR_SAMP

double covar_samp(<colname1>, <colname2>)

计算指定两个数值列的样本协方差。

FLOOR

bigint floor(<number>)

向下取整,返回不大于number的最大整数值。

TRANSFORM

array<R> transform(array<T> <a>, function<T, R>
<func>)

将ARRAY数组a的元素利用func进行转换,返回一个新的ARRAY数组。

GREATEST

greatest(<var1>, <var2>[,...])

用于比较一组值,并返回其中最大的数值。

STDDEV

--计算总体标准差
double stddev(double <colname>)
decimal stddev(decimal <colname>)
--计算窗口中expr的总体标准差
double stddev
([partition_clause] [orderby_clause] [frame_clause])
decimal stddev
([partition_clause] [orderby_clause] [frame_clause])

计算总体标准差。
stddev_pop([distinct]) over
stddev_pop([distinct]) over

SIZE

int size(array<T> <a>)
int size(map<K, V> <b> )

返回指定MAP中的K/V对数或者Array的元素个数。

COLLECT_LIST

array collect_list(<colname)

colname指定的列值聚合为一个数组。

ARG_MIN

arg_min(<valueToMinimize>, <valueToReturn>)

返回valueToMinimize最小值对应行的valueToReturn

DECODE

decode(<expression>, <search>, <result>[, <search>,
<result>]...[, <default>])
string decode(binary <str, string <charset)

DECODE函数根据参数的不同,既能实现if-then-else分支选择的功能,也能实现将str按照charset格式进行解码的功能。

MAP

map(K, V) map(K <key1>, V <value1>, K <key2>, V
<value2>[, ...])

使用给定的Key-Value对生成MAP。

FROM_JSON

from_json(<jsonStr>, <schema>)

根据JSON字符串jsonStrschema信息,返回ARRAY、MAP或STRUCT类型。

REGEXP_COUNT

bigint regexp_count(string <source, string
<pattern[, bigint <start_position])

计算指定字符在字符串中出现的次数。

FILTER

array<T filter(array<T <a, function<T,boolean <func)

将ARRAY数组a中的元素利用func进行过滤,返回一个新的ARRAY数组。

LEAST

least(<var1>, <var2>[,...])

返回输入参数中的最小值。

SHIFTLEFT

int shiftleft(tinyint
 <number2>)
bigint shiftleft(bigint <number1>, int <number2>)

按位左移(<<)。
smallint

UUID

string uuid()

返回一个随机ID

ARRAY_MAX

T array_max(array<T> <a>)

计算ARRAY数组a中的最大元素。

VARIANCE

double variance(<colname>)

计算指定数值列的方差。

VAR_POP

double var_pop(<colname>)

计算指定数值列的方差。

ARRAY_CONTAINS

boolean array_contains(array<T> <a>, value <v>)

判断ARRAY数组a中是否存在元素v

PARSE_URL

string parse_url(string <url>, string <part>[,
string <key>])

url解析后,按照part提取信息。

MEDIAN

--计算中位数
double median(double <colname>)
decimal median(decimal <colname>)
--计算窗口中expr的中位数。
median(<expr>) over ([partition_clause]
[orderby_clause] [frame_clause])

计算中位数。

MAP_KEYS

array<K> map_keys(map<K, V> <a>)

将MAP对象a中的所有Key生成ARRAY数组。

SQRT

double

计算number的平方根。
decimal sqrt()

REVERSE

string

返回倒序字符串或数组。
array reverse(string

STR_TO_MAP

str_to_map([string <mapDupKeyPolicy,] <text [,
<delimiter1 [, <delimiter2]])

将数据转换为MAP格式,使用分隔符1(delimiter1)将目标字符串分割成Key-Value对,然后使用分隔符2(delimiter2)分割每个Key-Value对的Key和Value。

LOCATE

bigint locate(string <substr>, string <str>[, bigint
 <start_pos>])

str中查找substr的位置。您可以通过start_pos指定开始查找的位置,从1开始计数。

MAP_VALUES

array<V> map_values(map<K, V> <a>)

将MAP对象a中的所有Value生成ARRAY数组。

WEEKDAY

bigint weekday (datetime <date>)

返回date日期是当前周的第几天。

VAR_SAMP

double var_samp(<colname)

计算指定数值列的样本方差

ARRAY_DISTINCT

array<T> array_distinct(array<T> <a>)

去除ARRAY数组a中的重复元素。

LPAD

string lpad(string <str1, int <length, string <str2)

使用LPAD函数,用字符串str2将字符串str1向左补足到length

DATEPART

bigint datepart(date
string <datepart>)

提取日期date中符合指定时间单位datepart的值。
datetime

FIND_IN_SET

bigint find_in_set(string <str1>, string <str2>)

查找字符串str1在以逗号(,)分隔的字符串str2中的位置,从1开始计数。

UNIQUE_ID

string unique_id()

返回一个随机的唯一ID

ARRAY_POSITION

bigint array_position(array<T> <a>, T <element>)

计算元素element在ARRAY数组a中第一次出现的位置。ARRAY数组元素位置编号自左往右,从1开始计数。

STRUCT

struct struct(<value1>,<value2>[, ...])

使用指定value列表建立STRUCT。

TRANSFORM_VALUES

map<K, V2> transform_values(map<K, V1> <input>,
function<K, V1, V2> <func>)

对输入MAP对象input进行变换,保持Key不变,通过func计算新的Value值。

POSEXPLODE

posexplode(array<T> <a>)

将ARRAY数组a展开,每个Value一行,每行两列分别对应数组从0开始的下标和数组元素。

LOG2

double log2(<number>)

返回以2为底,number的对数。

HOUR

int hour(datetime

返回日期小时部分的值。
timestamp

LN

double

计算number的自然对数。
decimal ln()

LOG10

double log10(<number>)

返回以10为底,number的对数。

SLICE

array<T> slice(array<T> <a>, <start>, <length>)

对ARRAY数组切片,截取从start位置开始长度为length的元素组成新的ARRAY数组。

ARRAY_REPEAT

array<T> array_repeat(T <element>, int <count>)

返回将指定元素重复指定次数后的ARRAY数组。

YEAR

int year(datetime

返回日期date的年。
timestamp

ARRAY_REDUCE

R array_reduce(array<T> <a>, buf <init>, function
<buf, T, buf> <merge>, function<buf, R> <final>)

对ARRAY数组a中的元素进行聚合。

MAP_ENTRIES

array<struct<K, V>> map_entries(map<K, V> <a>):

将MAP对象a的K、Value映射转换为STRUCT结构数组。

EXP

double

计算number的指数函数。
decimal exp()

SHIFTRIGHT

int shiftright(tinyint
 <number2>)
bigint shiftright(bigint <number1>, int <number2>)

按位右移(>>)。
smallint

DATE_FORMAT

string date_format(date
string <format)

DATE_FORMAT支持将DATE、TIMESTAMP和STRING类型的数据,转换为指定格式的字符串。
timestamp

REGEXP_EXTRACT_ALL

array<T> regexp_extract_all(string <source>, string
<pattern>[,bigint <group_id>])

在字符串中查找所有出现的正则表达式匹配模式的子字符串,并把找到的字符串以数组返回。

HEX

string hex(<number>)

将数值或字符串转换为十六进制格式。

TRANSFORM_KEYS

map<K2, V> transform_keys([string <mapDupKeyPolicy>,]
 map<K1, V> <input>, function<K1, V, K2> <func>)

对MAP对象input进行变换,保持Value不变,通过func计算新的Key值。

LASTDAY

datetime lastday(datetime <date>)

date所在月的最后一天,截取到天,时分秒部分为00:00:00

TO_MILLIS

bigint to_millis(datetime

将给定日期date转换为以毫秒为单位的UNIX时间戳。
timestamp);

MAP_FILTER

map<K, V> map_filter(map<K, V> <input>, function
<K, V, boolean> <predicate>)

将MAP对象input的元素进行过滤,只保留满足predicate条件的元素。

MONTH

int month(datetime

返回一个日期的月份。
timestamp

WEEKOFYEAR

bigint weekofyear (datetime <date>)

返回日期date位于那一年的第几周。周一作为一周的第一天。

ARRAY_UNION

array<T> array_union(array<T> <a>,  array<T> <b>)

计算ARRAY数组ab的并集,并去掉重复元素。

ARRAY_INTERSECT

array<T> array_intersect(array<T> <a>, array<T> <b>)

用于计算两个ARRAY数组之间的交集,并返回一个包含两个数组中都存在的相同值的新数组。

FROM_UTC_TIMESTAMP

timestamp from_utc_timestamp({any primitive type}*,
string <timezone>)

将一个UTC时区的时间戳转换成一个指定时区的时间戳,即将一个UTC时区的时间戳按照指定的时区显示。

INLINE

inline(array<struct<f1:T1, f2:T2[, ...]>>)

将给定的STRUCT数组展开。每个数组元素对应一行,每行每个STRUCT元素对应一列。

ARRAY_MIN

T array_min(array<T> <a>)

计算ARRAY数组a中的最小元素。

QUARTER

int quarter (datetime

返回一个日期的季度,范围是1~4。
timestamp

MINUTE

int minute(datetime

返回日期分钟部分的值。
timestamp

ARRAY_SORT

array<T> array_sort(array<T> <a>, function<T, T,
bigint> <comparator>)

将ARRAY数组a中的元素根据comparator进行排序。

ARRAY_REMOVE

array<T> array_remove(array<T> <a>, T <element>)

在ARRAY数组a中删除与element相等的元素。

CORR

double corr(<col1>, <col2>)

计算两列数据的皮尔逊系数(Pearson Correlation Coefficien)。




SUM

--计算汇总值
DECIMAL
--计算窗口中expr之和
sum([distinct] <expr>) over ([partition_clause]
[orderby_clause] [frame_clause])

计算汇总值。
DOUBLE

COALESCE

coalesce(<expr1>, <expr2>, ...)

从左至右的顺序对输入的参数进行逐一检查,一旦遇到第一个非NULL的值,就会立即返回该值,并不再继续检查后面的参数。

COUNT

-- 计算记录数
bigint count([distinct
--计算窗口中的记录数
bigint count(*) over ([partition_clause]
[orderby_clause] [frame_clause])
bigint count([distinct] <expr>[,...]) over
([partition_clause] [orderby_clause] [frame_clause])

计算记录数。
all])

FIELD

T field(struct <s>, string <fieldName>)
--样例
select (named_struct('f1', 'hello', 'f2', 3).f1)

获取STRUCT对象中成员变量的取值。

SUBSTR

string substr(string <str>, bigint <start_position>
[, bigint <length>])

返回字符串str从**start_position开始,长度为length**的子串。

MAX

--计算最大值
max(<colname>)
--计算窗口中的最大值
max(<expr>) over([partition_clause] [orderby_clause]
[frame_clause])

计算最大值。

INDEX

index(<var1>[<var2>])
--样例
select array('a','b','c')[2];
select str_to_map("test1=1,test2=2",
',', ':')["test1"];

返回MAP或者List类型参数中满足指定条件的Value

CONCAT

array<T> concat(array<T> <a>, array<T> <b>[,...])
string concat(string <str1>, string <str2>[,...])

将多个ARRAY数组中的所有元素连接在一起,生成一个新的ARRAY数组,或将多个字符串连接在一起,生成一个新的字符串。

GET_JSON_OBJECT

string get_json_object(string <json, string <path)

在一个标准JSON字符串中,按照指定方式抽取指定的字符串。

SPLIT_PART

string split_part(string <str>, string <separator>,
bigint <start>[, bigint <end>])

依照分隔符separator拆分字符串str,返回从start部分到end部分的子串(闭区间)。

AVG

--计算平均值
DECIMAL
--计算窗口中expr的平均值。
double avg([distinct] double <expr>) over
([partition_clause] [orderby_clause] [frame_clause])
decimal avg([distinct] decimal <expr>) over
([partition_clause] [orderby_clause] [frame_clause])

计算平均值。
DOUBLE avg()

ROUND

double
<decimal_places>])

四舍五入到指定小数点位置。
decimal round([, bigint

LENGTH

bigint length(string <str>)

计算字符串str的长度。
str:必填。STRING类型。如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型,则会隐式转换为STRING类型后参与运算。

REPLACE

string replace(string <str>, string <old>,
string <new>)

将字符串中与指定字符串匹配的子串替换为另一字符串

  • str:必填。STRING类型。待替换的字符串。如果输入支持转换为STRING类型的数据类型,则会隐式转换为STRING类型参与运算。
  • old:必填。待比较的字符串。
  • new:必填。替换后的字符串。

TRIM

string trim(string <str>[,<trimChars>])
string trim([BOTH] [<trimChars>] from <str>)

去除字符串的左右两端字符。
str的左右两端去除字符:

  • 如果未指定trimChars,则默认去除空格字符。
  • 如果指定了trimChars,则以trimChars中包含的字符作为一个集合,从str的左右两端去除尽可能长的所有字符都在集合trimChars中的子串。
  • str:必填。STRING类型。待去除左右两端字符的字符串。如果输入为BIGINT、DECIMAL、DOUBLE或DATETIME类型,则会隐式转换为STRING类型后参与运算。
  • trimChars:可选。String类型。待去除的字符。

PERCENTILE_APPROX

double percentile_approx (double <colname[, double
<weight], <p [, <B]))
--以数组形式返回多个百分位近似计算结果。array<double
--percentile_approx (double <colname
   [, double <weight],array(<p1 [, <p2...])
   [, <B])

使用PERCENTILE_APPROX函数计算近似百分位数

TO_CHAR

string to_char(datetime <date>, string <format>)

将日期按照指定格式转换为字符串。

CEIL

bigint ceil(<value>)

向上取整,返回不小于输入值value的最小整数。

MIN

--计算最小值
min(<colname>)
--计算窗口中的最小值
min(<expr>) over([partition_clause] [orderby_clause]
[frame_clause])

计算最小值。

CONCAT_WS

string concat_ws(string <separator>, string <str1>,
string <str2>[,...])
string concat_ws(string <separator>, array<string>
<a>)

返回将参数中的所有字符串或ARRAY数组中的元素按照指定的分隔符连接在一起的结果

SPLIT

split(<str>, <pat>, [<trimTailEmpty>])

通过patstr分割后返回数组。

REGEXP_EXTRACT

string regexp_extract(string <source>, string
<pattern>[, bigint <groupid>])

将字符串source按照pattern的分组规则进行字符串匹配,返回第groupid个组匹配到的字符串内容。

REGEXP_SUBSTR

string regexp_substr(string <source>, string
<pattern>[, bigint <start_position>[, bigint
<occurrence>]])

返回从start_position位置开始,source中第occurrence次匹配指定pattern的子串。

INSTR

bigint instr(string <str1>, string <str2>[, bigint
<start_position>[, bigint <nth_appearance>]])

计算子串str2在字符串str1中的位置。

STDDEV_SAMP

--计算样本标准差
double stddev_samp(double <colname>)
--计算窗口中expr的标准差
double stddev_samp([distinct] <expr>) over
([partition_clause] [orderby_clause] [frame_clause])

计算样本标准差。

TOLOWER

string tolower(string <source>)

将字符串source中的大写字符转换为对应的小写字符。

ARG_MAX

arg_max(<valueToMaximize>, <valueToReturn>)

返回valueToMaximize最大值对应行的valueToReturn

NAMED_STRUCT

struct named_struct(string <name1>, T1 <value1>,
string <name2>, T2 <value2>[, ...])

使用指定的namevalue列表建立STRUCT。

MD5

string md5(string <str>)

计算字符串str的MD5值。

ANY_VALUE

any_value(<colname>)

在指定范围内任选一个值返回。

NULLIF

T nullif(T <expr1>, T <expr2>)

比较expr1expr2的值,二者相等时返回NULL,否则返回expr1

EXPLODE

explode (<var>)

将一行数据转为多行的UDTF。

LOG

double log(<base>, <x>)

计算以base为底的x的对数。

FROM_UNIXTIME

datetime from_unixtime(bigint <unixtime)

FROM_UNIXTIME函数支持将数字类型的UNIX时间日期值转为DATETIME类型日期值

ARRAY

array array(<value>,<value>[, ...])

使用指定的值构造ARRAY数组。

COLLECT_SET

array collect_set(<colname)

colname指定的列值聚合为一个无重复元素的数组。

TO_JSON

string to_json(<expr)

将给定的复杂类型expr,以JSON字符串格式输出。

ABS

bigint

BS函数支持获取输入参数(number)的绝对值,确保输出总是正数或零。
double

PERCENTILE

double percentile(bigint <colname>, <p>)
--以数组形式返回多个百分位精确计算结果。
array percentile(bigint <colname>, array(<p1>
[, <p2>...]))

计算精确百分位数,适用于小数据量。先对指定列升序排列,然后取精确的第p位百分数。p必须在0和1之间。

POW

double

计算xy次方,即x^y
decimal pow(,)

UNIX_TIMESTAMP

bigint unix_timestamp(datetime
string <date>)

将日期date转化为整型的UNIX格式的日期时间值。
date

ARRAY_JOIN

array_join(array<T> <a>, <delimiter>[,
<nullreplacement>])

将ARRAY数组a中的元素使用delimiter拼接为字符串。当数组中元素为NULL时,用nullreplacement替代,没有设置nullreplacement时,会忽略NULL元素。

TOUPPER

string toupper(string <source>)

将字符串source中的小写字符转换为对应的大写字符。

SUBSTRING_INDEX

string substring_index(string <str>, string
<separator>, int <count>)

截取字符串strcount个分隔符之前的字符串。如果count为正,则从左边开始截取。如果count为负,则从右边开始截取。

COVAR_SAMP

double covar_samp(<colname1>, <colname2>)

计算指定两个数值列的样本协方差。

FLOOR

bigint floor(<number>)

向下取整,返回不大于number的最大整数值。

TRANSFORM

array<R> transform(array<T> <a>, function<T, R>
<func>)

将ARRAY数组a的元素利用func进行转换,返回一个新的ARRAY数组。

GREATEST

greatest(<var1>, <var2>[,...])

用于比较一组值,并返回其中最大的数值。

STDDEV

--计算总体标准差
double stddev(double <colname>)
decimal stddev(decimal <colname>)
--计算窗口中expr的总体标准差
double stddev
([partition_clause] [orderby_clause] [frame_clause])
decimal stddev
([partition_clause] [orderby_clause] [frame_clause])

计算总体标准差。
stddev_pop([distinct]) over
stddev_pop([distinct]) over

SIZE

int size(array<T> <a>)
int size(map<K, V> <b> )

返回指定MAP中的K/V对数或者Array的元素个数。

COLLECT_LIST

array collect_list(<colname)

colname指定的列值聚合为一个数组。

ARG_MIN

arg_min(<valueToMinimize>, <valueToReturn>)

返回valueToMinimize最小值对应行的valueToReturn

DECODE

decode(<expression>, <search>, <result>[, <search>,
<result>]...[, <default>])
string decode(binary <str, string <charset)

DECODE函数根据参数的不同,既能实现if-then-else分支选择的功能,也能实现将str按照charset格式进行解码的功能。

MAP

map(K, V) map(K <key1>, V <value1>, K <key2>, V
<value2>[, ...])

使用给定的Key-Value对生成MAP。

FROM_JSON

from_json(<jsonStr>, <schema>)

根据JSON字符串jsonStrschema信息,返回ARRAY、MAP或STRUCT类型。

REGEXP_COUNT

bigint regexp_count(string <source, string
<pattern[, bigint <start_position])

计算指定字符在字符串中出现的次数。

FILTER

array<T filter(array<T <a, function<T,boolean <func)

将ARRAY数组a中的元素利用func进行过滤,返回一个新的ARRAY数组。

LEAST

least(<var1>, <var2>[,...])

返回输入参数中的最小值。

SHIFTLEFT

int shiftleft(tinyint
 <number2>)
bigint shiftleft(bigint <number1>, int <number2>)

按位左移(<<)。
smallint

UUID

string uuid()

返回一个随机ID

ARRAY_MAX

T array_max(array<T> <a>)

计算ARRAY数组a中的最大元素。

VARIANCE

double variance(<colname>)

计算指定数值列的方差。

VAR_POP

double var_pop(<colname>)

计算指定数值列的方差。

ARRAY_CONTAINS

boolean array_contains(array<T> <a>, value <v>)

判断ARRAY数组a中是否存在元素v

PARSE_URL

string parse_url(string <url>, string <part>[,
string <key>])

url解析后,按照part提取信息。

MEDIAN

--计算中位数
double median(double <colname>)
decimal median(decimal <colname>)
--计算窗口中expr的中位数。
median(<expr>) over ([partition_clause]
[orderby_clause] [frame_clause])

计算中位数。

MAP_KEYS

array<K> map_keys(map<K, V> <a>)

将MAP对象a中的所有Key生成ARRAY数组。

SQRT

double

计算number的平方根。
decimal sqrt()

REVERSE

string

返回倒序字符串或数组。
array reverse(string

STR_TO_MAP

str_to_map([string <mapDupKeyPolicy,] <text [,
<delimiter1 [, <delimiter2]])

将数据转换为MAP格式,使用分隔符1(delimiter1)将目标字符串分割成Key-Value对,然后使用分隔符2(delimiter2)分割每个Key-Value对的Key和Value。

LOCATE

bigint locate(string <substr>, string <str>[, bigint
 <start_pos>])

str中查找substr的位置。您可以通过start_pos指定开始查找的位置,从1开始计数。

MAP_VALUES

array<V> map_values(map<K, V> <a>)

将MAP对象a中的所有Value生成ARRAY数组。

WEEKDAY

bigint weekday (datetime <date>)

返回date日期是当前周的第几天。

VAR_SAMP

double var_samp(<colname)

计算指定数值列的样本方差

ARRAY_DISTINCT

array<T> array_distinct(array<T> <a>)

去除ARRAY数组a中的重复元素。

LPAD

string lpad(string <str1, int <length, string <str2)

使用LPAD函数,用字符串str2将字符串str1向左补足到length

DATEPART

bigint datepart(date
string <datepart>)

提取日期date中符合指定时间单位datepart的值。
datetime

FIND_IN_SET

bigint find_in_set(string <str1>, string <str2>)

查找字符串str1在以逗号(,)分隔的字符串str2中的位置,从1开始计数。

UNIQUE_ID

string unique_id()

返回一个随机的唯一ID

ARRAY_POSITION

bigint array_position(array<T> <a>, T <element>)

计算元素element在ARRAY数组a中第一次出现的位置。ARRAY数组元素位置编号自左往右,从1开始计数。

STRUCT

struct struct(<value1>,<value2>[, ...])

使用指定value列表建立STRUCT。

TRANSFORM_VALUES

map<K, V2> transform_values(map<K, V1> <input>,
function<K, V1, V2> <func>)

对输入MAP对象input进行变换,保持Key不变,通过func计算新的Value值。

POSEXPLODE

posexplode(array<T> <a>)

将ARRAY数组a展开,每个Value一行,每行两列分别对应数组从0开始的下标和数组元素。

LOG2

double log2(<number>)

返回以2为底,number的对数。

HOUR

int hour(datetime

返回日期小时部分的值。
timestamp

LN

double

计算number的自然对数。
decimal ln()

LOG10

double log10(<number>)

返回以10为底,number的对数。

SLICE

array<T> slice(array<T> <a>, <start>, <length>)

对ARRAY数组切片,截取从start位置开始长度为length的元素组成新的ARRAY数组。

ARRAY_REPEAT

array<T> array_repeat(T <element>, int <count>)

返回将指定元素重复指定次数后的ARRAY数组。

YEAR

int year(datetime

返回日期date的年。
timestamp

ARRAY_REDUCE

R array_reduce(array<T> <a>, buf <init>, function
<buf, T, buf> <merge>, function<buf, R> <final>)

对ARRAY数组a中的元素进行聚合。

MAP_ENTRIES

array<struct<K, V>> map_entries(map<K, V> <a>):

将MAP对象a的K、Value映射转换为STRUCT结构数组。

EXP

double

计算number的指数函数。
decimal exp()

SHIFTRIGHT

int shiftright(tinyint
 <number2>)
bigint shiftright(bigint <number1>, int <number2>)

按位右移(>>)。
smallint

DATE_FORMAT

string date_format(date
string <format)

DATE_FORMAT支持将DATE、TIMESTAMP和STRING类型的数据,转换为指定格式的字符串。
timestamp

REGEXP_EXTRACT_ALL

array<T> regexp_extract_all(string <source>, string
<pattern>[,bigint <group_id>])

在字符串中查找所有出现的正则表达式匹配模式的子字符串,并把找到的字符串以数组返回。

HEX

string hex(<number>)

将数值或字符串转换为十六进制格式。

TRANSFORM_KEYS

map<K2, V> transform_keys([string <mapDupKeyPolicy>,]
 map<K1, V> <input>, function<K1, V, K2> <func>)

对MAP对象input进行变换,保持Value不变,通过func计算新的Key值。

LASTDAY

datetime lastday(datetime <date>)

date所在月的最后一天,截取到天,时分秒部分为00:00:00

TO_MILLIS

bigint to_millis(datetime

将给定日期date转换为以毫秒为单位的UNIX时间戳。
timestamp);

MAP_FILTER

map<K, V> map_filter(map<K, V> <input>, function
<K, V, boolean> <predicate>)

将MAP对象input的元素进行过滤,只保留满足predicate条件的元素。

MONTH

int month(datetime

返回一个日期的月份。
timestamp

WEEKOFYEAR

bigint weekofyear (datetime <date>)

返回日期date位于那一年的第几周。周一作为一周的第一天。

ARRAY_UNION

array<T> array_union(array<T> <a>,  array<T> <b>)

计算ARRAY数组ab的并集,并去掉重复元素。

ARRAY_INTERSECT

array<T> array_intersect(array<T> <a>, array<T> <b>)

用于计算两个ARRAY数组之间的交集,并返回一个包含两个数组中都存在的相同值的新数组。

FROM_UTC_TIMESTAMP

timestamp from_utc_timestamp({any primitive type}*,
string <timezone>)

将一个UTC时区的时间戳转换成一个指定时区的时间戳,即将一个UTC时区的时间戳按照指定的时区显示。

INLINE

inline(array<struct<f1:T1, f2:T2[, ...]>>)

将给定的STRUCT数组展开。每个数组元素对应一行,每行每个STRUCT元素对应一列。

ARRAY_MIN

T array_min(array<T> <a>)

计算ARRAY数组a中的最小元素。

QUARTER

int quarter (datetime

返回一个日期的季度,范围是1~4。
timestamp

MINUTE

int minute(datetime

返回日期分钟部分的值。
timestamp

ARRAY_SORT

array<T> array_sort(array<T> <a>, function<T, T,
bigint> <comparator>)

将ARRAY数组a中的元素根据comparator进行排序。

ARRAY_REMOVE

array<T> array_remove(array<T> <a>, T <element>)

在ARRAY数组a中删除与element相等的元素。

CORR

double corr(<col1>, <col2>)

计算两列数据的皮尔逊系数(Pearson Correlation Coefficien)。

ASCII

bigint ascii(string <str>)

返回字符串str第一个字符的ASCII码。

DAY

int day(datetime

返回一个日期的天。
timestamp

CHR

string chr(bigint <ascii>)

将指定ASCII码转换为字符。

ASCII

bigint ascii(string <str>)

返回字符串str第一个字符的ASCII码。

DAY

int day(datetime

返回一个日期的天。
timestamp

CHR

string chr(bigint <ascii>)

将指定ASCII码转换为字符。