内置函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

本文提供适用于字符串和二进制类型、数字标量、聚合、窗口、数组、映射、日期和时间戳、强制转换、CSV 数据、JSON 数据、XPath 操作的内置运算符和函数及其他杂项函数的链接与说明。

另请参阅:

运算符和谓词

若要了解如何在考虑到运算符相互之间关系的情况下分析运算符,请参阅运算符优先顺序

操作员 语法 说明
& expr1 & expr2 返回 expr1expr2 的按位 AND 结果。
and expr1 and expr2 返回 expr1expr2 的逻辑 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 ] 返回数组 arrayExprindexExprnd 元素
[ ] mapExpr [ keyExpr ] 返回映射 mapExprkeyExpr 处的值
^ expr1 ^ expr2 返回 expr1expr2 的按位异或 OR (XOR) 结果。
: jsonStr : jsonPath 返回从 jsonStr 中提取的字段。
:: expr :: type 将值 expr 强制转换为目标数据类型 type
div divisor div dividend 返回 divisor 除以 dividend 所得结果的整数部分。
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(不)匹配具有 escapepattern(不区分大小写),则返回 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(不)匹配具有 escapepattern,则返回 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 返回 expr1expr2 的逻辑 OR
% dividend % divisor 返回在进行 dividend / divisor 运算后的余数。
|| expr1 || expr2 返回将 expr1expr2 串联后的结果。
| expr1 | expr2 返回 expr1expr2 的按位 OR 结果。
+ expr1 + expr2 返回 expr1expr2 的总和。
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 notexists
10 betweeninrlikeregexpilikelikeis [not] [NULL, true, false]is [not] distinct from
11 and
12 or

字符串和二进制函数

函数 说明
expr1 || expr2 返回将 expr1expr2 串联后的结果。
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 匹配具有 escapepattern(不区分大小写),则返回 true。
initcap(expr) 返回 expr,其中的每个单词的首字母大写。
instr(str, substr) 返回 strsubstr 的第一个匹配项的索引(从 1 开始)。
lcase(expr) 返回将 expr 的所有字符均更改为小写后的结果。
left(str, len) 返回 str 中最左边的 len 个字符。
len(expr) 返回字符串数据的字符长度或二进制数据的字节数。
length(expr) 返回字符串数据的字符长度或二进制数据的字节数。
levenshtein(str1, str2) 返回字符串 str1str2 之间的 Levenshtein 距离。
str like (pattern[ESCAPE escape]) 如果 str 与具有 escapepattern 匹配,则返回 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 开始且长度为 lenreplace
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 如果 strregex 匹配,则返回 true。
str regexp_like regex 如果 strregex 匹配,则返回 true。
regexp_count(str, regexp) 返回 strregexp 模式匹配的次数。
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) 返回重复 exprn 次的字符串。
replace(str, search [, replace]) 将所有 search 项都替换为 replace
reverse(expr) 返回一个反向字符串或一个包含逆序的元素的数组。
right(str, len) 返回字符串 str 中最右边的 len 个字符。
str rlike regex 如果 strregex 匹配,则返回 true。
rpad(expr, len[, pad]) 返回右侧填充了 padexpr,填充后整个字符的长度为 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。
ucase(expr) 返回将 expr 的所有字符均更改为大写后的结果。
unbase64(expr) 以二进制形式返回已解码的 base64 字符串。
unhex(expr) 将十六进制 expr 转换为二进制。
upper(expr) 返回将 expr 的所有字符均更改为大写后的结果。
url_decode(str) 将字符串从 application/x-www-form-urlencoded 格式转换回来。
url_encode(str) 将字符串转换为 application/x-www-form-urlencoded 格式。

数字标量函数

函数 说明
~ expr 返回 expr 的按位 NOT 结果。
dividend / divisor 返回 dividend 除以 divisor 的结果。
expr1 | expr2 返回 expr1expr2 的按位 OR 结果。
- expr 返回 expr 的求反值。
expr1 - expr2 返回从 expr1 减去 expr2 得到的结果。
+ expr 返回 expr 的值。
expr1 + expr2 返回 expr1expr2 的总和。
dividend % divisor 返回在进行 dividend / divisor 运算后的余数。
expr1 ^ expr2 返回 expr1expr2 的按位异或 OR (XOR) 结果。
expr1 & expr2 返回 expr1expr2 的按位 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) numfromBase 转换为 toBase
convert_timezone([sourceTz, ]targetTz, sourceTs) 将TIMESTAMP_NTZ sourceTssourceTz 时区转换为 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) 返回 eexpr 次方。
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) 如果 trueexpr,则返回 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 的求反值。
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 的正切。
sin(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。
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 返回转换为十进制的 expr
try_add(expr1, expr2) 返回 expr1expr2 的和,或者,如果发生错误,则返回 NULL。
try_divide(dividend, divisor) 返回 dividend 除以 divisor,或者,如果 divisor 为 0,则返回 NULL。
try_multiply(multiplier, multiplicand) 在溢出时返回 multiplier 乘以 multiplicandNULL 的结果。
try_subtract(expr1, expr2) 返回在溢出时从 expr1NULL 减去 expr2 得到的结果。
try_to_number(expr, fmt ) 使用格式化 fmtexpr 强制转换为十进制,如果 expr 与格式不匹配,则返回 NULL。
width_bucket(expr, minExpr, maxExpr, numBuckets) 返回等宽直方图中某个值的 Bucket 编号。

聚合函数

功能 说明
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) 返回具有 epsilonconfidenceseedcolumn 中的组中所有值的 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 值。
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) 返回从 xExpryExpr 不为 NULL 的组的值计算出的 xExpr 的平均值。
regr_avgy(yExpr, xExpr) 返回从 xExpryExpr 不为 NULL 的组的值计算出的 yExpr 的平均值。
regr_count(yExpr, xExpr) 返回组中非空值对 yExpr, xExpr 的个数。
regr_intercept(yExpr, xExpr) 返回组中单变量线性回归线的截距,其中 xExpryExpr 不为 NULL。
regr_r2(yExpr, xExpr) 返回 xExpryExpr 不是 NULL 的组值的决定系数。
regr_slope(yExpr, xExpr) 返回组中非 null 值对 yExprxExpr 的线性回归线的斜率。
regr_sxx(yExpr, xExpr) 返回 xExpryExpr 不为 NULL 的组中 xExpr 值的平方和。
regr_sxy(yExpr, xExpr) 返回由 xExpryExpr 不为 NULL 的组的值计算的 yExprxExpr 乘积的和。
regr_syy(yExpr, xExpr) 返回 xExpryExpr 不为 NULL 的组中 yExpr 值的平方和。
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) 返回 array1array2 的交集中的元素的数组。
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) 返回包含 elementcount 次数的数组。
array_size(array) 返回 array 中的元素数量。
array_sort(array,func) 返回根据 func 排序的 array
array_union(array1,array2) 返回 array1array2 的并集中的元素的数组,不包含重复项。
arrays_overlap(array1, array2) 如果 array1array2 的交集不为空,则返回 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) 生成一个数组,其中包含从 startstop(含)的元素,这些元素按 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 按元素将 expr1expr2 中的数组合并到一个数组中。

映射函数

功能 描述
mapExpr[keyExpr] 返回映射 mapExprkeyExpr 处的值。
cardinality(expr) 返回 expr 的大小。
element_at(mapExpr, key) 返回 keymapExpr 值。
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) 创建具有 keysvalues 对数组的映射。
map_from_entries(expr) 创建从指定的条目数组创建的映射。
map_keys(map) 返回包含 map 键的无序数组。
map_values(map) 返回一个包含 map 值的无序数组。
map_zip_with(map1, map2, func) map1map2 合并到一个映射中。
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) 返回 keymapExpr 值;如果 key 不存在,则返回 NULL

日期、时间戳和时间间隔函数

有关日期和时间戳格式的信息,请参阅日期/时间模式

功能 说明
intervalExpr / divisor 返回除以 divisor 的间隔。
- intervalExpr 返回 intervalExpr 的求反值。
intervalExpr1 - intervalExpr2 返回从 intervalExpr1 减去 intervalExpr2 得到的结果。
datetimeExpr1 - datetimeExpr2 返回从 datetimeExpr1 减去 datetimeExpr2 得到的结果。
+ intervalExpr 返回 intervalExpr 的值。
intervalExpr1 + intervalExpr2 返回 intervalExpr1intervalExpr2 的总和。
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) valueunit 添加到时间戳 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) valueunit 添加到时间戳 expr
datediff(endDate,startDate) 返回从 startDateendDate 的天数。
datediff(unit, start, stop) 返回两个以 unit 为单位的时间戳之间的差异。
day(expr) 返回日期或时间戳的月份日期。
dayofmonth(expr) 返回日期或时间戳的月份日期。
dayofweek(expr) 返回日期或时间戳的星期几。
dayofyear(expr) 返回日期或时间戳的年份日期。
divisor div dividend 返回间隔 divisor 除以间隔 dividend 的整数部分。
extract(field FROM source) 返回 sourcefield
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) yearmonthday 字段创建日期。
make_dt_interval([days[, hours[, mins[, secs]]]]) dayshoursminssecs 创建日期时间间隔。
make_interval(years, months, weeks, days, hours, mins, secs) 已弃用:从 yearsmonthsweeksdayshoursminssecs 创建时间间隔。
make_timestamp(year,month,day,hour,min,sec[,timezone]) yearmonthdayhourminsectimezone 字段创建时间戳。
make_ym_interval([years[, months]]) yearsmonths 创建年月时间间隔。
minute(expr) 返回 expr 中时间戳的分钟部分。
month(expr) 返回 expr 中时间戳的月份部分。
months_between(expr1,expr2[,roundOff]) 返回 expr1expr2 中的日期或时间戳之间已过去的月数。
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) valueunit 添加到时间戳 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) 返回 expr1expr2 的和,或者,如果发生错误,则返回 NULL。
try_divide(dividend, divisor) 返回 dividend 除以 divisor,或者,如果 divisor 为 0,则返回 NULL。
try_multiply(multiplier, multiplicand) 在溢出时返回 multiplier 乘以 multiplicandNULL 的结果。
try_subtract(expr1, expr2) 返回在溢出时从 expr1NULL 减去 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) 返回由 windowsession_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) yearmonthday 字段创建日期。
make_dt_interval([days[, hours[, mins[, secs]]]]) dayshoursminssecs 创建日期时间间隔。
make_interval(years, months, weeks, days, hours, mins, secs) yearsmonthsweeksdayshoursminssecs 创建间隔。
make_timestamp(year,month,day,hour,min,sec[,timezone]) yearmonthdayhourminsectimezone 字段创建时间戳。
make_ym_interval([years[, months]]) yearsmonths 创建年月时间间隔。
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 强制转换为 DECIMAL。
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]) 返回具有 csvStrschema 的结构值。
schema_of_csv(csv[, options]) 返回 DDL 格式的 CSV 字符串的架构。
to_csv(expr[, options]) 返回具有指定结构值的 CSV 字符串。

JSON 函数

功能 描述
jsonStr : jsonPath 返回从 jsonStr 中提取的字段。
from_json(jsonStr, schema[, options]) 返回具有 jsonStrschema 的结构值。
get_json_object(expr, path) path 中提取 JSON 对象。
json_array_length(jsonArray) 返回最外层 JSON 数组中的元素数。
json_object_keys(jsonObject) 以数组形式返回最外层 JSON 对象的所有键。
json_tuple(jsonStr, path1 [, …]) 以元组形式返回多个 JSON 对象。
schema_of_json(jsonStr[, options]) 以 DDL 格式返回 JSON 字符串的架构。
to_json(expr[, options]) 返回一个 JSON 字符串,带有 expr 中指定的结构。

XPath 和 XML 函数

Function 说明
from_xml(xmlStr, schema[, options]) 返回使用 schemaxmlStr 分析的结构值。
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 节点的内容。

AI 函数

函数 说明
ai_analyze_sentiment(content) 返回文本的情绪。
ai_classify(content, labels) 将提供的内容分类为提供的标签之一。
ai_extract(content, labels) 从给定文本中提取由标签指定的实体。
ai_fix_grammar(content) 更正给定文本中的语法错误。
ai_gen(content) Databricks Foundation 模型 API 调用最先进的生成式 AI 模型,以回答用户提供的提示。
ai_generate_text(prompt, modelName[, param1, value1] […]) 不推荐使用:在提供提示的情况下,返回选定的大型语言模型 (LLM) 生成的文本。
ai_mask(content, labels) 过滤给定文本中的指定实体。
ai_query(endpointName, request, returnType) 调用现有的 Databricks 模型服务终结点,然后分析并返回其响应。
ai_similarity(strExpr1, strExpr2) 比较两个字符串并计算语义相似性分数。
ai_summarize(content[, max_words]) 生成给定文本的摘要。
ai_translate(content, to_lang) 将文本翻译为指定的目标语言。

读取函数

函数 说明
read_files(path, [optionKey => optionValue] [, …]) 读取云存储中的数据文件,并返回表格格式。
read_kafka([optionKey => optionValue] [, …]) 从 Apache Kafka 群集读取记录,并返回表格格式。
read_kinesis({parameter => value} [, …]) 返回一个表,其中包含从一个或多个流的 Kinesis 中读取的记录。
read_pubsub([parameter => value] [, …]) 一个用于从主题中的 Pub/Sub 读取记录的表值函数。
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 的第一个 optNresN;如果没有任何匹配项,则返回 def
CASE { WHEN cond1 THEN res1 } […] [ELSE def] END 返回计算结果为 true 的第一个 condNresN;如果找不到任何匹配项,则返回 def
cloud_files_state( { TABLE(table) | checkpoint } )
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 } )
greatest(expr1, expr2 [, …]) 返回所有参数的最大值(跳过 null 值)。
grouping(col) 指示 GROUPING SETROLLUPCUBE 中指定的列是否表示小计。
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) 如果 condtrue,则返回 expr1;否则返回 expr2
iff(cond, expr1, expr2) 如果 condtrue,则返回 expr1;否则返回 expr2
ifnull(expr1, expr2) 如果 expr1NULL,则返回 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) 如果 trueexpr,则返回 NULL
isnotnull(expr) 如果 expr 不为 NULL,则返回 true
least(expr1, expr2 [, …]) 返回所有参数的最小值(跳过 null 值)。
list_secrets() 返回用户有权从 Databricks 机密服务查看的密钥。
luhn_check(numStr) 如果 numStr 通过 Luhn 算法检查,则返回 true
monotonically_increasing_id() 返回单调递增的 64 位整数。
nullif(expr1, expr2) 如果 expr1 等于 expr2,则返回 NULL;否则返回 expr1
nvl(expr1, expr2) 如果 expr1NULL,则返回 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 机密服务中提取具有给定 scopekey 的机密值。
session_user() 返回连接到 Azure Databricks 的用户。
spark_partition_id() 返回当前分区 ID。
sql_keywords() 返回 Azure Databricks 中的 SQL 关键字集。
stack(numRows, expr1 [, …]) expr1exprN 分隔成 numRows 行。
table_changes(table_str, start [, end]) 返回已启用更改数据馈送的 Delta Lake 表的更改日志。
try_reflect(class, method[, arg1 [, …]]) 使用反射调用一个方法,如果方法失败,则返回 NULL
typeof(expr) expr 的数据类型返回 DDL 格式的类型字符串。
user() 返回执行语句的用户。
uuid() 返回全局唯一标识符 (UUID) 字符串。
window(expr, width[, step [, start]]) 通过时间戳表达式创建基于跳跃的滑动窗口。
xxhash64(expr1 [, …]) 返回参数的 64 位哈希值。
version() 返回 Apache Spark 版本。