内置函数
适用于: Databricks SQL Databricks Runtime
本文提供适用于字符串和二进制类型、数字标量、聚合、窗口、数组、映射、日期和时间戳、强制转换、CSV 数据、JSON 数据、XPath 操作的内置运算符和函数及其他杂项函数的链接与说明。
对于现有内置函数不支持的用例,请考虑定义自定义函数。 请参阅什么是用户定义函数 (UDF)?。
另请参阅:
运算符和谓词
若要了解如何在考虑到运算符相互之间关系的情况下分析运算符,请参阅运算符优先顺序。
操作员 | 语法 | 说明 |
---|---|---|
& | expr1 & expr2 |
返回 expr1 和 expr2 的按位 AND 结果。 |
and | expr1 and expr2 |
返回 expr1 和 expr2 的逻辑 AND 。 |
* | multiplier * multiplicand |
返回 multiplier 乘以 multiplicand 的结果。 |
!= | expr1 != expr2 |
如果 expr1 不等于 expr2 ,则返回 true,否则返回 false 。 |
! | !expr |
返回布尔表达式的逻辑 NOT 结果。 |
between | expr1 [not] between expr2 and expr2 |
测试 expr1 是否大于等于 expr2 且小于等于 expr3 。 |
[ ] | arrayExpr [ indexExpr ] |
返回 ARRAY arrayExpr 的第 indexExpr 个元素。 |
[ ] | mapExpr [ keyExpr ] |
返回 keyExpr 中 MAP mapExpr 的值。 |
^ | expr1 ^ expr2 |
返回 expr1 和 expr2 的按位异或 OR (XOR) 结果。 |
: | jsonStr : jsonPath |
返回从 jsonStr 中提取的字段。 |
:: | expr :: type |
将值 expr 强制转换为目标数据类型 type 。 |
?:: | expr ?:: type |
如果可能,将值 expr 转换为目标数据类型 type ;否则返回 NULL 。 |
div | dividend div divisor |
返回 dividend 除以 divisor 所得结果的整数部分。 |
. | mapExpr . keyIdentifier |
按照 keyIdentifier 返回 MAP 值。 |
. | structExpr . fieldIdentifier |
按照 fieldIdentifier 返回 STRUCT 字段。 |
== | expr1 == expr2 |
如果 expr1 等于 expr2 ,则返回 true ;否则返回 false 。 |
= | expr1 = expr2 |
如果 expr1 等于 expr2 ,则返回 true ;否则返回 false 。 |
>= | expr1 >= expr2 |
如果 expr1 大于或等于 expr2 ,则返回 true ,否则返回 false 。 |
> | expr1 > expr2 |
如果 expr1 大于 expr2 ,则返回 true ,否则返回 false 。 |
exists | exists(query) |
如果 query 返回至少一行,则返回 true,否则返回 false。 |
ilike | str [not] ilike (pattern[ESCAPE escape]) |
如果 str (不)匹配具有 escape 的 pattern (不区分大小写),则返回 true。 |
ilike | str [not] ilike {ANY\|SOME\|ALL}([pattern[, ...]]) |
如果 str (不)匹配任意/所有模式(不区分大小写),则返回 true。 |
in | elem [not] in (expr1[, ...]) |
如果 elem (不)等于任何 exprN ,则返回 true 。 |
in | elem [not] in (query) |
如果 elem (不)等于 query 中的任何行,则返回 true 。 |
is distinct | expr1 is [not] distinct from expr2 |
测试参数是否具有不同的值,其中 NULL 被视为可比较值。 |
is false | expr is [not] false |
测试 expr 是否为 false 。 |
is null | expr is [not] null |
如果 expr 不为 NULL ,则返回 true 。 |
is true | expr is [not] true |
测试 expr 是否为 true 。 |
like | str [not] like (pattern[ESCAPE escape]) |
如果 str (不)匹配具有 escape 的 pattern ,则返回 true。 |
like | str [not] like {ANY\|SOME\|ALL}([pattern[, ...]]) |
如果 str (不)匹配任意/所有模式,则返回 true。 |
<=> | expr1 <=> expr2 |
对于非空操作数,返回与 EQUAL(=) 相同的结果,但如果两个操作数均为 NULL ,则返回 true ;如果其中一个操作数为 NULL ,则返回 false 。 |
<= | expr1 <= expr2 |
如果 expr1 小于或等于 expr2 ,则返回 true ,否则返回 false 。 |
<> | expr1 <> expr2 |
如果 expr1 不等于 expr2 ,则返回 true ,否则返回 false 。 |
< | expr1 < expr2 |
如果 expr1 小于 expr2 ,则返回 true ,否则返回 false 。 |
- | expr1 - expr2 |
返回从 expr1 减去 expr2 得到的结果。 |
not | not expr |
返回布尔表达式的逻辑 NOT 结果。 |
or | expr1 or expr2 |
返回 expr1 和 expr2 的逻辑 OR 。 |
% | dividend % divisor |
返回在进行 dividend / divisor 运算后的余数。 |
|| | expr1 \|\| expr2 |
返回将 expr1 和 expr2 串联后的结果。 |
| | expr1 \| expr2 |
返回 expr1 和 expr2 的按位 OR 结果。 |
+ | expr1 + expr2 |
返回 expr1 和 expr2 的总和。 |
regexp | str [not] regexp regex |
如果 str (不)匹配 regex ,则返回 true。 |
regexp_like | str [not] regexp_like regex |
如果 str (不)匹配 regex ,则返回 true。 |
rlike | str [not] rlike regex |
如果 str (不)匹配 regex ,则返回 true。 |
/ | dividend / divisor |
返回 dividend 除以 divisor 的结果。 |
~ | ~ expr |
返回 expr 的按位 NOT 结果。 |
运算符优先顺序
优先顺序 | 操作员 |
---|---|
1 | : ,:: ,?:: ,[ ] |
2 | - (unary), + (unary), ~ |
3 | * ,/ ,% ,div |
4 | + ,- ,\|\| |
5 | & |
6 | ^ |
7 | \| |
8 | = ,== ,<=> ,<> ,!= ,< ,<= ,> ,>= |
9 | not ,exists |
10 | between ,in ,rlike ,regexp ,ilike ,like ,is [not] [NULL, true, false] ,is [not] distinct from |
11 | and |
12 | or |
字符串和二进制函数
函数 | 说明 |
---|---|
expr1 || expr2 | 返回将 expr1 和 expr2 串联后的结果。 |
aes_decrypt(expr, key[, mode[, padding[, aad]]]) | 使用 AES 加密对二进制 expr 进行解密。 |
aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]]) | 使用 AES 加密对二进制 expr 进行加密。 |
ascii(str) | 返回 str 的第一个字符的 ASCII 码位。 |
base64(expr) | 将 expr 转换为 base 64 字符串。 |
bin(expr) | 返回 expr 的二进制表示形式。 |
binary(expr) | 将 expr 值强制转换为 BINARY 。 |
bit_length(expr) | 返回字符串数据的位长度或二进制数据的位数。 |
bitmap_count(expr) | 返回在表示位图的 BINARY 字符串中设置的位数。 |
btrim(str [, trimStr]) | 返回删除了前导字符和尾随字符的 str 。 |
char(expr) | 返回位于提供的 UTF-16 码位的字符。 |
char_length(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
character_length(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
charindex(substr, str[, pos]) | 返回 substr 第一次出现在 str 中位置 pos 之后的位置。 |
chr(expr) | 返回位于提供的 UTF-16 码位的字符。 |
concat(expr1, expr2[, …]) | 返回参数的串联。 |
concat_ws(sep[, expr1[, …]]) | 返回由 sep 分隔的串联字符串。 |
contains(expr, subExpr) | 如果 expr STRING 或 BINARY 包含 subExpr ,则返回 true 。 |
crc32(expr) | 返回 expr 的循环冗余校验值。 |
decode(expr, charSet) | 使用字符集编码 charSet 将二进制 expr 转换为字符串。 |
encode(expr, charSet) | 使用 charSet 字符编码返回字符串的二进制表示形式。 |
endswith(expr, endExpr) | 如果 expr STRING 或 BINARY 以 endExpr 结尾,则返回 true 。 |
find_in_set(searchExpr, sourceExpr) | 返回某个字符串在逗号分隔的字符串列表中的位置。 |
format_number(expr, scale) | 设置 expr 的格式(如 #,###,###.## ),四舍五入到小数位数 scale 。 |
format_number(expr, fmt) | 设置 expr 的格式(如 fmt )。 |
format_string(strfmt[, obj1 [, …]]) | 从 printf 样式的格式字符串返回一个带格式的字符串。 |
hex(expr) | 将 expr 转换为十六进制。 |
str ilike (pattern[ESCAPE escape]) | 如果 str 匹配具有 escape 的 pattern (不区分大小写),则返回 true。 |
initcap(expr) | 返回 expr ,其中的每个单词的首字母大写。 |
instr(str, substr) | 返回 str 中 substr 的第一个匹配项的索引(从 1 开始)。 |
lcase(expr) | 返回将 expr 的所有字符均更改为小写后的结果。 |
left(str, len) | 返回 str 中最左边的 len 个字符。 |
len(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
length(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
levenshtein(str1, str2) | 返回字符串 str1 和 str2 之间的 Levenshtein 距离。 |
str like (pattern[ESCAPE escape]) | 如果 str 与具有 escape 的 pattern 匹配,则返回 true。 |
locate(substr, str[, pos]) | 返回 substr 第一次出现在 str 中位置 pos 之后的位置。 |
lower(expr) | 返回将 expr 的所有字符均更改为小写后的结果。 |
lpad(expr, len[, pad]) | 返回 expr ,左侧填充了 pad ,填充后长度为 len 。 |
ltrim([trimstr,] str) | 返回 str ,其中删除了 trimStr 内的前导字符。 |
mask(str[, upperChar[, lowerChar[, digitChar[, otherChar]]]]) | 返回输入 str 的掩码版本。 |
md5(expr) | 以十六进制字符串形式返回 expr 的 MD5 128 位校验和。 |
octet_length(expr) | 返回字符串数据的字节长度或二进制数据的字节数。 |
overlay(input PLACING replace FROM pos [FOR len]) | 将 input 替换为从 pos 开始且长度为 len 的 replace 。 |
parse_url(url, partToExtract[, key]) | 从 url 中提取一个部分。 |
position(substr, str[, pos]) | 返回 substr 第一次出现在 str 中位置 pos 之后的位置。 |
position(subtr IN str) | 返回 substr 第一次出现在 str 中位置 pos 之后的位置。 |
printf(strfmt[, obj1 [, …]]) | 从 printf 样式的格式字符串返回一个带格式的字符串。 |
str regexp regex | 如果 str 与 regex 匹配,则返回 true。 |
str regexp_like regex | 如果 str 与 regex 匹配,则返回 true。 |
regexp_count(str, regexp) | 返回 str 与 regexp 模式匹配的次数。 |
regexp_extract(str, regexp[, idx]) | 从 str 中提取与 regexp 表达式匹配且对应于 regex 组索引的第一个字符串。 |
regexp_extract_all(str, regexp[, idx]) | 从 str 中提取与 regexp 表达式匹配且对应于 regex 组索引的所有字符串。 |
regexp_instr(str, regexp) | 返回 str 中与 regexp 匹配的第一个 substring 的位置。 |
regexp_replace(str, regexp, rep[, position]) | 将 str 中与 regexp 匹配的所有子字符串替换为 rep 。 |
regexp_substr(str, regexp) | 返回 str 中与 regexp 匹配的第一个 substring。 |
repeat(expr, n) | 返回重复 expr n 次的字符串。 |
replace(str, search [, replace]) | 将所有 search 项都替换为 replace 。 |
reverse(expr) | 返回一个反向字符串或一个包含逆序的元素的数组。 |
right(str, len) | 返回字符串 str 中最右边的 len 个字符。 |
str rlike regex | 如果 str 与 regex 匹配,则返回 true。 |
rpad(expr, len[, pad]) | 返回右侧填充了 pad 的 expr ,填充后整个字符的长度为 len 。 |
rtrim([trimStr,] str) | 返回删除了尾随字符的 str 。 |
sentences(str[, lang, country]) | 将 str 拆分为一个数组,其中包含单词数组。 |
sha(expr) | 以 expr 的十六进制字符串形式返回 sha1 哈希值。 |
sha1(expr) | 以 expr 的十六进制字符串形式返回 sha1 哈希值。 |
sha2(expr, bitLength) | 以 expr 的十六进制字符串形式返回 SHA-2 系列的校验和。 |
soundex(expr) | 返回字符串的 soundex 代码。 |
space(n) | 返回由 n 个空格组成的字符串。 |
split(str, regex[, limit]) | 根据匹配 regex 的匹配项拆分 str ,并以最大的长度 limit 返回数组。 |
split_part(str, delim, partNum) | 将 str 围绕 delim 的次数拆分,并返回 partNum 部分。 |
startswith(expr, startExpr) | 如果 expr STRING 或 BINARY 以 startExpr 开头,则返回 true 。 |
string(expr) | 将 expr 值强制转换为 STRING 。 |
substr(expr, pos[, len]) | 返回 expr 的子字符串(从 pos 开始,并且长度为 len )。 |
substr(expr FROM pos[ FOR len]) | 返回 expr 的子字符串(从 pos 开始,并且长度为 len )。 |
substring(expr, pos[, len]) | 返回 expr 的子字符串(从 pos 开始,并且长度为 len )。 |
substring(expr FROM pos[ FOR len]) | 返回 expr 的子字符串(从 pos 开始,并且长度为 len )。 |
substring_index(expr, delim, count) | 返回分隔符 delim 出现 count 次之前 expr 的子字符串。 |
to_binary(expr[, fmt]) | 返回基于 fmt 强制转换为 BINARY 的 expr 。 |
to_char(numExpr, fmt) | 返回使用格式设置 fmt 将 numExpr 强制转换为 STRING 的值。” |
to_varchar(numExpr, fmt) | 返回使用格式设置 fmt 将 numExpr 强制转换为 STRING 的值。” |
translate(expr, from, to) | 返回一个 expr ,其中 from 内的所有字符都被替换为 to 中的字符。 |
trim([[BOTH | LEADING | TRAILING] [trimStr] FROM] str) | 剪裁字符串中的字符。 |
try_aes_decrypt(expr, key[, mode[, padding[, aad]]]) | 解密使用 AES 加密生成的二进制文件 expr ,并在出错时返回 NULL 。 |
try_to_binary(expr [, fmt]) | 返回基于 fmt 强制转换为 BINARY 的 expr ;或者,如果输入无效,则返回 NULL 。 |
try_url_decode(str) | 从 application/x-www-form-urlencoded 格式转换回字符串,并在出现错误时返回 NULL 。 |
try_zstd_decompress(value) | 返回使用 Zstandard 压缩技术解压缩的值;如果输入无效,则返回 NULL 。 |
ucase(expr) | 返回将 expr 的所有字符均更改为大写后的结果。 |
unbase64(expr) | 以二进制形式返回已解码的 base64 字符串。 |
unhex(expr) | 将十六进制的 expr 转换为 BINARY 。 |
upper(expr) | 返回将 expr 的所有字符均更改为大写后的结果。 |
url_decode(str) | 将字符串从 application/x-www-form-urlencoded 格式转换回来。 |
url_encode(str) | 将字符串转换为 application/x-www-form-urlencoded 格式。 |
zstd_compress (value[,level[,streaming_mode]]) | 返回使用 Zstandard 压缩技术压缩的值。 |
zstd_decompress(value) | 返回使用 Zstandard 压缩技术解压缩的值。 |
数字标量函数
函数 | 说明 |
---|---|
~ expr | 返回 expr 的按位 NOT 结果。 |
dividend / divisor | 返回 dividend 除以 divisor 的结果。 |
expr1 | expr2 | 返回 expr1 和 expr2 的按位 OR 结果。 |
- expr | 返回 expr 的求反值。 |
expr1 - expr2 | 返回从 expr1 减去 expr2 得到的结果。 |
+ expr | 返回 expr 的值。 |
expr1 + expr2 | 返回 expr1 和 expr2 的总和。 |
dividend % divisor | 返回在进行 dividend / divisor 运算后的余数。 |
expr1 ^ expr2 | 返回 expr1 和 expr2 的按位异或 OR (XOR) 结果。 |
expr1 & expr2 | 返回 expr1 和 expr2 的按位 AND 。 |
multiplier * multiplicand | 返回 multiplier 乘以 multiplicand 的结果。 |
abs(expr) | 返回 expr 中数值的绝对值。 |
acos(expr) | 返回 expr 的反余弦值 (arccosine)。 |
acosh(expr) | 返回 expr 的反双曲余弦值。 |
asin(expr) | 返回 expr 的反正弦值 (arcsine)。 |
asinh(expr) | 返回 expr 的反双曲正弦值。 |
atan(expr) | 返回 expr 的反正切 (arctangent)。 |
atan2(exprY, exprX) | 返回平面的正 x 轴与坐标 (exprX , exprY ) 指定的点之间的角度(以弧度为单位)。 |
atanh(expr) | 返回 expr 的反双曲正切值。 |
bigint(expr) | 将 expr 值强制转换为 BIGINT 。 |
bit_count(expr) | 返回参数中设置的位数。 |
bit_get(expr, pos) | 返回某个整数的二进制表示形式中某一位的值。 |
bit_reverse(expr) | 返回通过反转参数中的位顺序获得的值。 |
bitmap_bit_position(expr) | 返回桶中给定 BIGINT 编号的以 0 为基准的位位置。 |
bitmap_bucket_number(expr) | 返回给定 BIGINT 编号的位图桶编号。 |
bround(expr[,targetScale]) | 使用 HALF_EVEN 舍入模式返回舍入运算后的 expr 。 |
cbrt(expr) | 返回 expr 的立方根。 |
ceil(expr[,targetScale]) | 返回不小于 expr 的最小数,向上舍入到相对于小数点的 targetScale 位数。 |
ceiling(expr[,targetScale]) | 返回不小于 expr 的最小数,向上舍入到相对于小数点的 targetScale 位数。 |
conv(num, fromBase, toBase) | 将 num 从 fromBase 转换为 toBase 。 |
convert_timezone([sourceTz, ]targetTz, sourceTs) | 将 TIMESTAMP_NTZ sourceTs 从 sourceTz 时区转换为 targetTz 。 |
cos(expr) | 返回 expr 的余弦值。 |
cosh(expr) | 返回 expr 的双曲余弦。 |
cot(expr) | 返回 expr 的余切值。 |
csc(expr) | 返回 expr 的余割。 |
decimal(expr) | 将 expr 值强制转换为 DECIMAL 。 |
degrees(expr) | 将弧度转换为度。 |
divisor div dividend | 返回 divisor 除以 dividend 所得结果的整数部分。 |
double(expr) | 将 expr 值强制转换为 DOUBLE 。 |
e() | 返回常数 e 。 |
exp(expr) | 返回 e 的 expr 次方。 |
expm1(expr) | 返回 exp(expr) - 1 。 |
factorial(expr) | 返回 expr 的阶乘。 |
float(expr) | 将 expr 值强制转换为 FLOAT 。 |
floor(expr[,targetScale]) | 返回不小于 expr 的最大数,向下舍入到相对于小数点的 targetScale 位数。 |
getbit(expr, pos) | 返回某个整数的二进制表示形式中某一位的值。 |
hypot(expr1, expr2) | 返回 sqrt(expr1 * expr1 + expr2 * expr2) 。 |
int(expr) | 将 expr 值强制转换为 INTEGER 。 |
isnan(expr) | 如果 true 为 expr ,则返回 NaN 。 |
ln(expr) | 返回 expr 的自然对数(以 e 为底)。 |
log([base,] expr) | 返回 expr 的对数(以 base 为底)。 |
log1p(expr) | 返回 log(1 + expr) 。 |
log2(expr) | 返回 expr 的对数(以 2 为底)。 |
log10(expr) | 返回 expr 的对数(以 10 为底)。 |
mod(dividend, divisor) | 返回在进行 dividend / divisor 运算后的余数。 |
nanvl(expr1, expr2) | 如果不是 NaN ,则返回 expr1 ,否则返回 expr2 。 |
negative(expr) | 返回 expr 的求反值。 |
'nullifzero(expr)' | 如果不为零,则返回 expr ;否则返回 NULL 。 |
pi() | 返回 pi。 |
pmod(dividend, divisor) | 返回在进行 dividend / divisor 运算后的正余数。 |
positive(expr) | 返回 expr 的值。 |
pow(expr1, expr2) | 将 expr1 提升为 expr2 的幂。 |
power(expr1, expr2) | 将 expr1 提升为 expr2 的幂。 |
radians(expr) | 将 expr (以度为单位)转换为弧度。 |
rand([seed]) | 返回介于 0 和 1 之间的随机值。 |
randn([seed]) | 从标准正态分布返回一个随机值。 |
random([seed]) | 返回介于 0 和 1 之间的随机值。 |
rint(expr) | 以 DOUBLE 值返回舍入为整数的 expr 。 |
round(expr[,targetScale]) | 使用 HALF_UP 舍入模式返回舍入运算后的 expr 。 |
sec(expr) | 返回 expr 的正切。 |
shiftleft(expr, n) | 返回按位左移 n 位后的结果。 |
shiftright(expr, n) | 返回按位右移 n 位的带符号整数。 |
shiftrightunsigned(expr, n) | 返回按位右移 n 位的无符号整数。 |
sign(expr) | 当 expr 为负数、0 或正数时返回 -1.0、0.0 或 1.0。 |
signum(expr) | 当 expr 为负数、0 或正数时返回 -1.0、0.0 或 1.0。 |
sin(expr) | 返回 expr 的正弦值。 |
sinh(expr) | 返回 expr 的双曲正弦。 |
smallint(expr) | 将 expr 值强制转换为 SMALLINT 。 |
sqrt(expr) | 返回 expr 的平方根。 |
tan(expr) | 返回 expr 的正切。 |
tanh(expr) | 返回 expr 的双曲正切值。 |
tinyint(expr) | 将 expr 强制转换为 TINYINT 。 |
to_number(expr, fmt) | 使用格式设置 fmt 返回强制转换为 DECIMAL 的 expr 。 |
try_add(expr1, expr2) | 返回 expr1 加 expr2 的和,或者,如果发生错误,则返回 NULL 。 |
try_divide(dividend, divisor) | 返回 dividend 除以 divisor ,或者,如果 divisor 为 0,则返回 NULL 。 |
try_mod(dividend, divisor) | 返回在进行 dividend / divisor 运算后的余数,或者,如果 divisor 为 0,则返回 NULL 。 |
try_multiply(multiplier, multiplicand) | 在溢出时返回 multiplier 乘以 multiplicand 或 NULL 的结果。 |
try_subtract(expr1, expr2) | 返回在溢出时从 expr1 或 NULL 减去 expr2 得到的结果。 |
try_to_number(expr, fmt ) | 返回使用格式设置 fmt 强制转换为 DECIMAL 的 expr ,或者,如果 expr 与格式不匹配,则返回 NULL 。 |
width_bucket(expr, minExpr, maxExpr, numBuckets) | 返回等宽直方图中某个值的 Bucket 编号。 |
'zeroifnull(expr)' | 如果不为 NULL ,则返回 expr ;否则返回 0 。 |
聚合函数
功能 | 说明 |
---|---|
any(expr) | 如果组中至少一个 expr 值为 true,则返回 true。 |
any_value(expr[,ignoreNull]) | 返回一组行的某个 expr 值。 |
approx_count_distinct(expr[,relativeSD]) | 返回组内 expr 中的预估非重复值数。 |
approx_percentile(expr,percentage[,accuracy]) | 返回组内 expr 的百分位近似值。 |
approx_top_k(expr[,k[,maxItemsTracked]]) | 返回 expr 中最常出现的前 k 个项目值及其近似计数。 |
array_agg(expr) | 返回一个数组,该数组由组内 expr 中的所有值组成。 |
avg(expr) | 返回从组的值计算出的平均值。 |
bit_and(expr) | 返回组中所有输入值的按位 AND 结果。 |
bit_or(expr) | 返回组中所有输入值的按位 OR 结果。 |
bit_xor(expr) | 返回组中所有输入值的按位 XOR 结果。 |
bitmap_construct_agg(expr) | 返回组中所有位位置值的按位 OR 。 在组中介于 0 和 32767 之间,作为 BINARY 。 |
bitmap_or_agg(expr) | 返回组中所有 BINARY 输入值的按位 OR 。 |
bool_and(expr) | 如果 expr 中的所有值在组内都为 true,则返回 true。 |
bool_or(expr) | 如果 expr 中的至少一个值在组内为 true,则返回 true。 |
collect_list(expr) | 返回一个数组,该数组由组内 expr 中的所有值组成。 |
collect_set(expr) | 返回一个数组,该数组由组内 expr 中的所有唯一值组成。 |
corr(expr1,expr2) | 返回表示一组数字对之间的关联情况的皮尔逊系数。 |
count(*) | 返回在组中检索到的行的总数,包括那些包含 null 的行。 |
count(expr[, …]) | 返回组中为其提供的表达式均为非 null 值的行的数目。 |
count_if(expr) | 返回 expr 中组的 true 值数。 |
count_min_sketch(column,epsilon,confidence,seed) | 返回具有 epsilon 、confidence 和 seed 的 column 中的组中所有值的 count-min sketch。 |
covar_pop(expr1,expr2) | 返回组中数字对的总体协方差。 |
covar_samp(expr1,expr2) | 返回组中数字对的样本协方差。 |
every(expr) | 如果组中 expr 的所有值均为 true,则返回 true。 |
first(expr[,ignoreNull]) | 返回一组行的第一个 expr 值。 |
first_value(expr[,ignoreNull]) | 返回一组行的第一个 expr 值。 |
histogram_numeric(expr,numBins) | 基于 expr 计算具有 numBins 个箱的直方图,返回表示箱中心的对数组。 |
hll_sketch_agg(expr[,lgConfigK]) | 返回用于计算近似非重复值计数的 HyperLogLog 草图。 |
hll_union_agg(expr[,allowDifferentLgConfigK]) | 聚合一组行的 HyperLogLog 草图。 |
kurtosis(expr) | 返回从组的值计算出的峰度值。 |
last(expr[,ignoreNull]) | 返回一组行的最后一个 expr 值。 |
last_value(expr[,ignoreNull]) | 返回一组行的最后一个 expr 值。 |
max(expr) | 返回组中 expr 的最大值。 |
max_by(expr1,expr2) | 返回与组中 expr2 的最大值关联的 expr1 的值。 |
mean(expr) | 返回从组的值计算出的平均值。 |
median(expr) | 返回根据组的值计算出的中值。 |
min(expr) | 返回组中 expr 的最小值。 |
min_by(expr1, expr2) | 返回与组中 expr2 的最小值关联的 expr1 的值。 |
mode(expr [,deterministic]) | 返回组中 expr 的最常见值,而不是 NULL 。 |
percentile(expr, percentage [,frequency]) | 返回位于指定 percentage 处的 expr 的确切百分位值。 |
percentile_approx(expr,percentage[,accuracy]) | 返回组内 expr 的百分位近似值。 |
percentile_cont(pct) WITHIN GROUP (ORDER BY key) | 返回组内 key 的插值百分位。 |
percentile_disc(pct) WITHIN GROUP (ORDER BY key) | 返回组内 key 的离散百分比。 |
regr_avgx(yExpr, xExpr) | 返回从 xExpr 和 yExpr 为 NOT NULL 的组的值计算出的 xExpr 的平均值。 |
regr_avgy(yExpr, xExpr) | 返回从 xExpr 和 yExpr 为 NOT NULL 的组的值计算出的 yExpr 的平均值。 |
regr_count(yExpr, xExpr) | 返回组中非空值对 yExpr , xExpr 的个数。 |
regr_intercept(yExpr, xExpr) | 返回组中单变量线性回归线的截距,其中 xExpr 和 yExpr 不为 NULL。 |
regr_r2(yExpr, xExpr) | 返回 xExpr 和 yExpr 不是 NULL 的组值的决定系数。 |
regr_slope(yExpr, xExpr) | 返回组中非 null 值对 yExpr 、xExpr 的线性回归线的斜率。 |
regr_sxx(yExpr, xExpr) | 返回 xExpr 和 yExpr 不为 NULL 的组中 xExpr 值的平方和。 |
regr_sxy(yExpr, xExpr) | 返回从 xExpr 和 yExpr 为 NOT NULL 的组中的值计算的 yExpr 和 xExpr 乘积的总和。 |
regr_syy(yExpr, xExpr) | 返回 xExpr 和 yExpr 不为 NULL 的组中 yExpr 值的平方和。 |
schema_of_json_agg(json[, options]) | 以 DDL 格式返回组中 JSON 字符串的组合架构。 |
schema_of_variant_agg(variantExpr) | 以 DDL 格式返回组中所有 VARIANT 值的组合架构。 |
skewness(expr) | 返回从组的值计算出的偏度值。 |
some(expr) | 如果组中至少有一个 expr 值是 true ,则返回 true。 |
std(expr) | 返回通过组中的值计算出的样本标准偏差。 |
stddev(expr) | 返回通过组中的值计算出的样本标准偏差。 |
stddev_pop(expr) | 返回从组的值计算出的总体标准偏差。 |
stddev_samp(expr) | 返回从组的值计算出的样本标准偏差。 |
sum(expr) | 返回从组的值计算出的总和值。 |
try_avg(expr) | 返回根据组的值计算出的平均值,如果溢出则返回 NULL 。 |
try_sum(expr) | 返回根据组的值计算出的和,如果溢出则返回 NULL 。 |
var_pop(expr) | 返回从组的值计算出的总体方差。 |
var_samp(expr) | 返回从组的值计算出的样本方差。 |
variance(expr) | 返回从组的值计算出的样本方差。 |
排名开窗函数
函数 | 说明 |
---|---|
dense_rank() | 返回某个值相对于分区中所有值的排名。 |
ntile(n) | 将每个窗口分区的行分割为从 1 到至多 n 的 n 个 Bucket。 |
percent_rank() | 计算分区中某个值的百分比排名。 |
rank() | 返回某个值相对于分区中所有值的排名。 |
row_number() | 根据窗口分区中的行顺序,为每一行分配唯一的顺序编号(从 1 开始)。 |
分析窗口函数
函数 | 说明 |
---|---|
cume_dist() | 返回某个值相对于分区中所有值的位置。 |
lag(expr[,offset[,default]]) | 从分区中的前一行返回值 expr 。 |
lead(expr[,offset[,default]]) | 从分区中的后续行返回值 expr 。 |
nth_value(expr, offset[, ignoreNulls]) | 返回位于窗口中特定 offset 处的 expr 的值。 |
数组函数
功能 | 描述 |
---|---|
arrayExpr[indexExpr] | 返回数组 arrayExpr 的位置 indexExpr 处的元素。 |
aggregate(expr,start,merge[,finish]) | 使用自定义聚合器聚合数组中的元素。 |
array([expr [, …]]) | 返回一个数组,其中包含 expr 中的元素。 |
array_append(array, elem) | 返回 elem 追加的 array 。 |
array_compact(array) | 从 array 中删除 NULL 值。 |
array_contains(array,value) | 如果 array 包含 value ,则返回 true。 |
array_distinct(array) | 从 array 中删除重复值。 |
array_except(array1,array2) | 返回 array1 中(而不是 array2 中)的元素的数组。 |
array_insert(array, index, elem) | 返回一个展开的 array ,其中的 elem 插入到 index 位置。 |
array_intersect(array1,array2) | 返回 array1 和 array2 的交集中的元素的数组。 |
array_join(array,delimiter[,nullReplacement]) | 串联 array 的元素。 |
array_max(array) | 返回 array 中的最大值。 |
array_min(array) | 返回 array 中的最小值。 |
array_position(array,element) | 返回 array 中第一次出现 element 的位置。 |
array_prepend(array, elem) | 返回以 elem 为前缀的 array 。 |
array_remove(array,element) | 从 array 中删除所有出现的 element 。 |
array_repeat(element,count) | 返回包含 element count 时间的数组。 |
array_size(array) | 返回 array 中的元素数量。 |
array_sort(array,func) | 返回根据 func 排序的 array 。 |
array_union(array1,array2) | 返回 array1 和 array2 的并集中的元素的数组,不包含重复项。 |
arrays_overlap(array1, array2) | 如果 array1 和 array2 的交集不为空,则返回 true。 |
arrays_zip(array1 [, …]) | 返回合并的结构数组,其中第 n 个结构包含输入数组的所有第 N 个值。 |
cardinality(expr) | 返回 expr 的大小。 |
concat(expr1, expr2 [, …]) | 返回参数的串联。 |
element_at(arrayExpr, index) | 返回位于 index 处的 arrayExpr 的元素。 |
exists(expr, pred) | 如果 pred 对于 expr 中的任一元素为 true,则返回 true。 |
explode(collection) | 通过取消嵌套 collection 返回行。 |
explode_outer(collection) | 使用 outer 语义通过取消嵌套 collection 返回行。 |
filter(expr,func) | 使用函数 func 筛选 expr 中的数组。 |
flatten(arrayOfArrays) | 将数组的数组转换为单个数组。 |
forall(expr, predFunc) | 测试 predFunc 是否对数组中的所有元素都有效。 |
get(arrayExpr, index) | 返回 index 处的 arrayExpr 元素,从 0 开始。 |
inline(expr) | 将结构数组分解为一个表。 |
inline_outer(expr) | 使用 outer 语义将结构数组分解为表。 |
posexplode(expr) | 通过取消嵌套具有位置编号的数组来返回行。 |
posexplode_outer(expr) | 使用 OUTER 语义,通过取消嵌套具有位置编号的数组来返回行。 |
reduce(expr,start,merge[,finish]) | 使用自定义聚合器聚合数组中的元素。 |
reverse(array) | 返回一个反向字符串或一个包含逆序的元素的数组。 |
sequence(start,stop,step) | 生成一个数组,其中包含从 start 到 stop (含)的元素,这些元素按 step 递增。 |
shuffle(array) | 返回 expr 中数组的随机排列。 |
size(expr) | 返回 expr 的基数。 |
slice(expr,start,length) | 返回数组的子集。 |
sort_array(expr[,ascendingOrder]) | 按排序顺序返回 expr 中的数组。 |
transform(expr, func) | 使用函数 expr 转换 func 中数组中的元素。 |
try_element_at(arrayExpr, index) | 返回位于 index 处的 arrayExpr 的元素;如果 index 超出边界,则返回 NULL 。 |
zip_with(expr1, expr2, func) | 使用 func 按元素将 expr1 和 expr2 中的数组合并到一个数组中。 |
映射函数
功能 | 描述 |
---|---|
mapExpr[keyExpr] | 返回映射 mapExpr 的 keyExpr 处的值。 |
cardinality(expr) | 返回 expr 的大小。 |
element_at(mapExpr, key) | 返回 key 的 mapExpr 值。 |
explode(expr) | 通过取消嵌套 expr 返回行。 |
explode_outer(expr) | 使用 outer 语义通过取消嵌套 expr 返回行。 |
map([{key1, value1}[, …]]) | 创建具有指定键值对的映射。 |
map_concat([expr1 [, …]]) | 返回所有 expr 映射表达式的并集。 |
map_contains_key(map, key) | 如果 map 包含 key ,则返回 true ;否则返回 false 。 |
map_entries(map) | 返回 map 中所有条目的无序数组。 |
map_filter(expr, func) | 使用 func 函数在 expr 中筛选映射中的条目。 |
map_from_arrays(keys, values) | 创建具有 keys 和 values 对数组的映射。 |
map_from_entries(expr) | 创建从指定的条目数组创建的映射。 |
map_keys(map) | 返回包含 map 键的无序数组。 |
map_values(map) | 返回一个包含 map 值的无序数组。 |
map_zip_with(map1, map2, func) | 将 map1 和 map2 合并到一个映射中。 |
size(expr) | 返回 expr 的基数。 |
str_to_map(expr[,pairDelim[,keyValueDelim]]) | 在使用分隔符将 expr 拆分为键值对之后返回映射。 |
transform_keys(expr, func) | 使用 func 函数在 expr 中转换映射中的键。 |
transform_values(expr, func) | 使用 func 函数在 expr 中转换映射中的值。 |
try_element_at(mapExpr, key) | 返回 key 的 mapExpr 值;如果 key 不存在,则返回 NULL 。 |
日期、时间戳和时间间隔函数
有关日期和时间戳格式的信息,请参阅日期/时间模式。
功能 | 说明 |
---|---|
intervalExpr / divisor | 返回除以 divisor 的间隔。 |
- intervalExpr | 返回 intervalExpr 的求反值。 |
intervalExpr1 - intervalExpr2 | 返回从 intervalExpr1 减去 intervalExpr2 得到的结果。 |
datetimeExpr1 - datetimeExpr2 | 返回从 datetimeExpr1 减去 datetimeExpr2 得到的结果。 |
+ intervalExpr | 返回 intervalExpr 的值。 |
intervalExpr1 + intervalExpr2 | 返回 intervalExpr1 和 intervalExpr2 的总和。 |
intervalExpr * multiplicand | 返回 intervalExpr 乘以 multiplicand 的结果。 |
abs(expr) | 返回 expr 中间隔值的绝对值。 |
add_months(startDate,numMonths) | 返回在 startDate 之后 numMonths 的日期。 |
curdate() | 返回查询计算开始时的当前日期。 |
current_date() | 返回查询计算开始时的当前日期。 |
current_timestamp() | 返回查询计算开始时的当前时间戳。 |
current_timezone() | 返回当前会话的本地时区。 |
date(expr) | 将 expr 值强制转换为 DATE。 |
date_add(startDate,numDays) | 返回在 startDate 之后的日期 numDays 。 |
date_add(unit, value, expr) | 将 value unit 添加到时间戳 expr 。 |
date_diff(unit, start, stop) | 返回两个以 unit 为单位的时间戳之间的差异。 |
date_format(expr,fmt) | 将时间戳转换为 fmt 格式的字符串。 |
date_from_unix_date(days) | 根据自 1970-01-01 以来的天数创建日期。 |
date_part(field,expr) | 提取部分日期、时间戳或间隔。 |
date_sub(startDate,numDays) | 返回在 startDate 之前的日期 numDays 。 |
date_trunc(unit,expr) | 返回已截断到 unit 中指定的单位的时间戳。 |
dateadd(startDate,numDays) | 返回在 startDate 之后的日期 numDays 。 |
dateadd(unit, value, expr) | 将 value unit 添加到时间戳 expr 。 |
datediff(endDate,startDate) | 返回从 startDate 到 endDate 的天数。 |
datediff(unit, start, stop) | 返回两个以 unit 为单位的时间戳之间的差异。 |
day(expr) | 返回日期或时间戳的月份日期。 |
dayofmonth(expr) | 返回日期或时间戳的月份日期。 |
dayofweek(expr) | 返回日期或时间戳的星期几。 |
dayofyear(expr) | 返回日期或时间戳的年份日期。 |
divisor div dividend | 返回间隔 divisor 除以间隔 dividend 的整数部分。 |
extract(field FROM source) | 返回 source 的 field 。 |
from_unixtime(unixTime,fmt) | 返回 fmt 中的 unixTime 。 |
from_utc_timestamp(expr,timezone) | 返回在时区 timeZone 中以 UTC 格式指定的 expr 格式的时间戳。 |
getdate() | 返回查询计算开始时的当前时间戳。 |
hour(expr) | 返回时间戳的小时部分。 |
last_day(expr) | 返回日期所属月份的最后一天。 |
make_date(year,month,day) | 从 year 、month 和 day 字段创建日期。 |
make_dt_interval([days[, hours[, mins[, secs]]]]) | 从 days 、hours 、mins 和 secs 创建日期时间间隔。 |
make_interval(years, months, weeks, days, hours, mins, secs) | 已弃用:从 years 、months 、weeks 、days 、hours 、mins 和 secs 创建时间间隔。 |
make_timestamp(year,month,day,hour,min,sec[,timezone]) | 从 year 、month 、day 、hour 、min 、sec 和 timezone 字段创建时间戳。 |
make_ym_interval([years[, months]]) | 从 years 和 months 创建年月时间间隔。 |
minute(expr) | 返回 expr 中时间戳的分钟部分。 |
month(expr) | 返回 expr 中时间戳的月份部分。 |
months_between(expr1,expr2[,roundOff]) | 返回 expr1 和 expr2 中的日期或时间戳之间已过去的月数。 |
next_day(expr,dayOfWeek) | 返回晚于 expr 并已按 dayOfWeek 中命名的第一个日期。 |
now() | 返回查询计算开始时的当前时间戳。 |
quarter(expr) | 返回 expr 的年度的第几季(范围为 1 到 4)。 |
second(expr) | 返回 expr 中时间戳的第二个分量。 |
session_window(expr, gpDuration) | 通过时间戳表达式创建会话窗口。 |
sign(expr) | 当间隔 expr 为负数、0 或正数时分别返回 -1.0、0.0 或 1.0。 |
signum(expr) | 当间隔 expr 为负数、0 或正数时分别返回 -1.0、0.0 或 1.0。 |
timediff(unit, start, stop) | 返回两个以 unit 为单位的时间戳之间的差异。 |
timestamp(expr) | 将 expr 强制转换为 TIMESTAMP 。 |
timestamp_micros(expr) | 创建自 UTC 纪元以来的时间戳(expr 微秒)。 |
timestamp_millis(expr) | 创建自 UTC 纪元以来的时间戳 expr 毫秒。 |
timestamp_seconds(expr) | 创建自 UTC 纪元以来的时间戳(expr 秒)。 |
timestampadd(unit, value, expr) | 将 value unit 添加到时间戳 expr 。 |
timestampdiff(unit, start, stop) | 返回两个以 unit 为单位的时间戳之间的差异。 |
to_date(expr[,fmt]) | 返回使用可选格式设置将 expr 转换为日期后的值。 |
to_timestamp(expr[,fmt]) | 使用可选格式将 expr 强制转换返回到某个时间戳。 |
to_unix_timestamp(expr[,fmt]) | 将 expr 中的时间戳返回为 UNIX 时间戳。 |
to_utc_timestamp(expr,timezone) | 以与 UTC 不同的时区返回 expr 中的时间戳。 |
trunc(expr, fmt) | 返回一个日期,其时间部分已截断到格式模型 fmt 所指定的单位。 |
try_add(expr1, expr2) | 返回 expr1 加 expr2 的和,或者,如果发生错误,则返回 NULL。 |
try_divide(dividend, divisor) | 返回 dividend 除以 divisor ,或者,如果 divisor 为 0,则返回 NULL。 |
try_multiply(multiplier, multiplicand) | 在溢出时返回 multiplier 乘以 multiplicand 或 NULL 的结果。 |
try_subtract(expr1, expr2) | 返回在溢出时从 expr1 或 NULL 减去 expr2 得到的结果。 |
try_to_timestamp(expr[,fmt]) | 返回使用可选格式设置强制转换为某个时间戳的 expr ,如果强制转换失败,则返回 NULL 。 |
unix_date(expr) | 返回自 1970-01-01 以来经过的天数。 |
unix_micros(expr) | 返回自 1970-01-01 00:00:00 UTC 以来的微秒数。 |
unix_millis(expr) | 返回自 1970-01-01 00:00:00 UTC 以来经过的毫秒数。 |
unix_seconds(expr) | 返回自 1970-01-01 00:00:00 UTC 以来经过的秒数。 |
unix_timestamp([expr[, fmt]]) | 返回当前时间或指定时间的 UNIX 时间戳。 |
weekday(expr) | 返回 expr 的星期日期。 |
weekofyear(expr) | 返回 expr 的年度中的第几周。 |
year(expr) | 返回 expr 的年份部分。 |
window(expr, width[, step[, start]]) | 通过时间戳表达式创建基于跳跃的滑动窗口。 |
window_time(window) | 返回由 window 或 session_window 函数生成的滑动窗口的非独占结束时间。 |
H3 地理空间函数
有关 H3 地理空间函数的信息,请参阅 H3 地理空间函数。
Cast 函数和构造函数
有关在类型之间强制转换的信息,请参阅 cast 函数和 try_cast 函数。
函数 | 描述 |
---|---|
array([expr [, …]]) | 返回一个数组,其中包含 expr 中的元素。 |
bigint(expr) | 将 expr 值强制转换为 BIGINT 。 |
binary(expr) | 将 expr 值强制转换为 BINARY 。 |
boolean(expr) | 将 expr 强制转换为 BOOLEAN 。 |
cast(expr AS type) | 将值 expr 强制转换为目标数据类型 type 。 |
expr :: type | 将值 expr 强制转换为目标数据类型 type 。 |
date(expr) | 将 expr 值强制转换为 DATE 。 |
decimal(expr) | 将 expr 值强制转换为 DECIMAL 。 |
double(expr) | 将 expr 值强制转换为 DOUBLE 。 |
float(expr) | 将 expr 值强制转换为 FLOAT 。 |
int(expr) | 将 expr 值强制转换为 INTEGER 。 |
make_date(year,month,day) | 从 year 、month 和 day 字段创建日期。 |
make_dt_interval([days[, hours[, mins[, secs]]]]) | 从 days 、hours 、mins 和 secs 创建日期时间间隔。 |
make_interval(years, months, weeks, days, hours, mins, secs) | 从 years 、months 、weeks 、days 、hours 、mins 和 secs 创建间隔。 |
make_timestamp(year,month,day,hour,min,sec[,timezone]) | 从 year 、month 、day 、hour 、min 、sec 和 timezone 字段创建时间戳。 |
make_ym_interval([years[, months]]) | 从 years 和 months 创建年月时间间隔。 |
map([{key1, value1} [, …]]) | 创建具有指定键值对的映射。 |
named_struct({name1, val1} [, …]) | 创建具有指定的字段名称和值的结构。 |
smallint(expr) | 将 expr 值强制转换为 SMALLINT 。 |
string(expr) | 将 expr 值强制转换为 STRING 。 |
struct(expr1 [, …]) | 创建具有指定字段值的 STRUCT 。 |
tinyint(expr) | 将 expr 强制转换为 TINYINT 。 |
timestamp(expr) | 将 expr 强制转换为 TIMESTAMP 。 |
to_char(expr, fmt) | 返回使用格式设置 fmt 将 expr 强制转换为 STRING 的值。” |
to_date(expr[,fmt]) | 返回使用可选格式设置将 expr 转换为日期后的值。 |
to_number(expr, fmt) | 使用 fmt 格式返回 expr 强制转换为 DECIMA L。 |
to_timestamp(expr[,fmt]) | 使用可选格式将 expr 强制转换返回到某个时间戳。 |
to_varchar(expr, fmt) | 返回使用格式设置 fmt 将 expr 强制转换为 STRING 的值。” |
try_cast(expr AS type) | 将值 expr 安全强制转换为目标数据类型 type 。 |
try_to_number(expr, fmt) | 使用 fmt 格式返回 expr 强制转换为 DECIMAL ,或者如果 expr 无效则返回 NULL 。 |
CSV 函数
函数 | 说明 |
---|---|
from_csv(csvStr, schema[, options]) | 返回具有 csvStr 和 schema 的结构值。 |
schema_of_csv(csv[, options]) | 返回 DDL 格式的 CSV 字符串的架构。 |
to_csv(expr[, options]) | 返回具有指定结构值的 CSV 字符串。 |
JSON 函数
功能 | 描述 |
---|---|
jsonStr : jsonPath | 返回从 jsonStr 中提取的字段。 |
from_json(jsonStr, schema[, options]) | 返回具有 jsonStr 和 schema 的结构值。 |
get_json_object(expr, path) | 从 path 中提取 JSON 对象。 |
json_array_length(jsonArray) | 返回最外层 JSON 数组中的元素数。 |
json_object_keys(jsonObject) | 以数组形式返回最外层 JSON 对象的所有键。 |
json_tuple(jsonStr, path1 [, …]) | 以元组形式返回多个 JSON 对象。 |
parse_json(jsonStr) | 从 jsonStr 返回一个 VARIANT 值。 |
schema_of_json(jsonStr[, options]) | 以 DDL 格式返回 JSON 字符串的架构。 |
schema_of_json_agg(jsonStr[, options]) | 以 DDL 格式返回组中 JSON 字符串的组合架构。 |
to_json(expr[, options]) | 返回一个 JSON 字符串,带有 expr 中指定的 STRUCT 或 VARIANT 。 |
VARIANT 函数
函数 | 说明 |
---|---|
variantExpr : jsonPath | 使用 JSON 路径返回从 variantExpr 中提取的字段。 |
is_variant_null(variantExpr) | 测试 variantExpr 是否为 VARIANT 编码的 NULL 。 |
parse_json(jsonStr) | 从 jsonStr 返回一个 VARIANT 值。 |
schema_of_variant(variantExpr) | 返回 DDL 格式的 VARIANT 表达式的架构。 |
schema_of_variant_agg(variantExpr) | 以 DDL 格式返回组中所有 VARIANT 值的组合架构。 |
to_json(expr[, options]) | 返回一个 JSON 字符串,带有 expr 中指定的 STRUCT 或 VARIANT 。 |
try_parse_json(jsonStr) | 如果可能,从 jsonStr 返回 VARIANT 值。 如果不可能,则返回 NULL 。 |
try_variant_get(variantExpr,path,type) | 从 path 指定的 variantExpr 中提取类型为 type 的值,如果无法将值强制转换为目标类型,则提取 NULL 。 |
variant_explode(variantExpr) | 通过取消嵌套 variantExpr 返回行集。 |
variant_explode_outer(variantExpr) | 使用 outer 语义通过取消嵌套 variantExpr 返回行集。 |
variant_get(variantExpr,path,type) | 从 variantExpr 中提取由 path 指定的 type 类型的值。 |
XPath 和 XML 函数
Function | 说明 |
---|---|
from_xml(xmlStr, schema[, options]) | 返回使用 schema 从 xmlStr 分析的结构值。 |
schema_of_xml(xmlStr[, options]) | 以 DDL 格式返回 XML 字符串的架构。 |
xpath(xml, xpath) | 返回与 xpath 匹配的 xml 节点内的值。 |
xpath_boolean(xml, xpath) | 如果 xpath 表达式的计算结果为 true ,或者在 xml 中找到匹配节点,则返回 true 。 |
xpath_double(xml, xpath) | 从 XML 文档返回一个 DOUBLE 值。 |
xpath_float(xml, xpath) | 从 XML 文档返回一个 FLOAT 值。 |
xpath_int(xml, xpath) | 从 XML 文档返回一个 INTEGER 值。 |
xpath_long(xml, xpath) | 从 XML 文档返回一个 BIGINT 值。 |
xpath_number(xml, xpath) | 从 XML 文档返回一个 DOUBLE 值。 |
xpath_short(xml, xpath) | 从 XML 文档返回一个 SHORT 值。 |
xpath_string(xml, xpath) | 返回与 XPath 表达式匹配的第一个 XML 节点的内容。 |
读取函数
函数 | 说明 |
---|---|
read_files(path, [optionKey => optionValue] [, …]) | 读取云存储中的数据文件,并返回表格格式。 |
read_kafka([optionKey => optionValue] [, …]) | 从 Apache Kafka 群集读取记录,并返回表格格式。 |
read_kinesis({parameter => value} [, …]) | 返回一个表,其中包含从一个或多个流的 Kinesis 中读取的记录。 |
read_pulsar({optionKey => optionValue} [, …]) | 返回一个表,其中包含从 Pulsar 读取的记录。 |
read_state_metadata(path) | 返回一个表,其中包含表示流式处理查询状态元数据的行。 |
read_statestore(path [, option_key => option_value] […]) | 从流式处理查询的状态存储中返回记录。 |
其他函数
函数 | 说明 |
---|---|
assert_true(expr) | 如果 expr 不为 true,则返回错误。 |
CASE expr { WHEN opt1 THEN res1 } […] [ELSE def] END | 返回等于 expr 的第一个 optN 的 resN ;如果没有任何匹配项,则返回 def 。 |
CASE { WHEN cond1 THEN res1 } […] [ELSE def] END | 返回计算结果为 true 的第一个 condN 的 resN ;如果找不到任何匹配项,则返回 def 。 |
cloud_files_state( { TABLE(table) | checkpoint } ) | 返回自动加载程序 cloud_files 源的文件级状态。 |
coalesce(expr1, expr2 [, …]) | 返回第一个非 null 参数。 |
cube (expr1 [, …]) | 使用指定的表达式列创建多维多维数据集。 |
current_catalog() | 返回当前目录。 |
current_database() | 返回当前架构。 |
current_metastore() | 返回当前的 Unity Catalog 元存储 ID。 |
current_recipient(key) | 返回通过 Delta Sharing 共享的视图中当前接收者的属性。 |
current_schema() | 返回当前架构。 |
current_user() | 返回执行语句的用户。 |
current_version() | 返回当前版本的 Azure Databricks。 |
decode(expr, { key, value } [, …] [,defValue]) | 返回与键匹配的值。 |
elt(index, expr1 [, …] ) | 返回第 n 个表达式。 |
equal_null(expr1, expr2) | 如果 expr1 等于 expr2 或两个表达式都为 NULL ,则返回 true ,否则返回 false 。 |
event_log( { TABLE(table) | pipeline_id } ) | 返回具体化视图、流式处理表或 DLT 管道的刷新历史记录表。 |
greatest(expr1, expr2 [, …]) | 返回所有参数的最大值(跳过 null 值)。 |
grouping(col) | 指示 GROUPING SET 、ROLLUP 或 CUBE 中指定的列是否表示小计。 |
grouping_id([col1 [, …]]) | 返回一组列的分组级别。 |
hash(expr1 [, …]) | 返回参数的哈希值。 |
hll_sketch_estimate(expr) | 估计在 HyperLogLog 草图中收集的非重复值的数量。 |
hll_union(expr1, expr2 [,allowDifferentLgConfigK]) | 合并两个 HyperLogLog 草图。 |
java_method(class, method[, arg1 [, …]]) | 使用反射调用某个方法。 |
if(cond, expr1, expr2) | 如果 cond 为 true ,则返回 expr1 ;否则返回 expr2 。 |
iff(cond, expr1, expr2) | 如果 cond 为 true ,则返回 expr1 ;否则返回 expr2 。 |
ifnull(expr1, expr2) | 如果 expr1 为 NULL ,则返回 expr2 ;否则返回 expr1 。 |
input_file_block_length() | 返回所读取块的长度(以字节为单位)。 |
input_file_block_start() | 返回正在读取的块的起始偏移量(以字节为单位)。 |
input_file_name() | 返回正在读取的文件的名称。如果无法获得该名称,则返回空字符串。 |
is_account_group_member(group) | 如果当前用户是帐户级别的组的成员,则返回 true。 |
is_member(group) | 如果当前用户是工作区级别的组的成员,则返回 true。 |
isnull(expr) | 如果 true 为 expr ,则返回 NULL 。 |
isnotnull(expr) | 如果 expr 不为 NULL ,则返回 true 。 |
least(expr1, expr2 [, …]) | 返回所有参数的最小值(跳过 null 值)。 |
list_secrets([scopeStr]) | 返回用户有权从 Databricks 机密服务查看的所有或一个范围内的密钥。 |
luhn_check(numStr) | 如果 numStr 通过 Luhn 算法检查,则返回 true 。 |
monotonically_increasing_id() | 返回单调递增的 64 位整数。 |
nullif(expr1, expr2) | 如果 expr1 等于 expr2 ,则返回 NULL ;否则返回 expr1 。 |
nvl(expr1, expr2) | 如果 expr1 为 NULL ,则返回 expr2 ;否则返回 expr1 。 |
nvl2(expr1, expr2, expr3) | 如果 expr1 不是 NULL ,则返回 expr2 ,否则返回 expr3 。 |
raise_error(expr) | 使用 expr 作为消息引发异常。 |
range(end) | 返回指定范围内值的表。 |
range(start, end [, step [, numParts]]) | 返回指定范围内值的表。 |
reflect(class, method[, arg1 [, …]]) | 使用反射调用某个方法。 |
secret(scope, key) | 从 Databricks 机密服务中提取具有给定 scope 和 key 的机密值。 |
session_user() | 返回连接到 Azure Databricks 的用户。 |
spark_partition_id() | 返回当前分区 ID。 |
sql_keywords() | 返回 Azure Databricks 中的 SQL 关键字集。 |
stack(numRows, expr1 [, …]) | 将 expr1 … exprN 分隔成 numRows 行。 |
table_changes(table_str, start [, end]) | 返回已启用更改数据馈送的 Delta Lake 表的更改日志。 |
try_reflect(class, method[, arg1 [, …]]) | 使用反射调用一个方法,如果方法失败,则返回 NULL 。 |
try_secret(scope, key) | 从 Databricks 机密服务中提取具有给定 scope 和 key 的机密值,如果无法检索密钥,则为 NULL 。 |
typeof(expr) | 为 expr 的数据类型返回 DDL 格式的类型字符串。 |
user() | 返回执行语句的用户。 |
uuid() | 返回全局唯一标识符 (UUID) 字符串。 |
window(expr, width[, step [, start]]) | 通过时间戳表达式创建基于跳跃的滑动窗口。 |
xxhash64(expr1 [, …]) | 返回参数的 64 位哈希值。 |
version() | 返回 Apache Spark 版本。 |