适用于:
Databricks SQL
Databricks Runtime
本文提供适用于字符串和二进制类型、数字标量、聚合、窗口、数组、映射、日期和时间戳、强制转换、CSV 数据、JSON 数据、XPath 操作的内置运算符和函数及其他杂项函数的链接与说明。
对于现有内置函数不支持的用例,请考虑定义自定义函数。 请参阅什么是用户定义函数 (UDF)?。
另请参阅:
运算符和谓词
若要了解如何在考虑到运算符相互之间关系的情况下分析运算符,请参阅运算符优先顺序。
| 操作员 | 语法 | 说明 |
|---|---|---|
| & | expr1 & expr2 |
返回 AND 和 expr1 的按位 expr2 结果。 |
| 和 | expr1 and expr2 |
返回 AND 和 expr1 的逻辑 expr2。 |
| * | multiplier * multiplicand |
返回 multiplier 乘以 multiplicand 的结果。 |
| != | expr1 != expr2 |
如果 expr1 不等于 expr2,则返回 true,否则返回 false。 |
| ! | !expr |
返回布尔表达式的逻辑 NOT 结果。 |
| 之间 | expr1 [not] between expr2 and expr2 |
测试 expr1 是否大于等于 expr2 且小于等于 expr3。 |
| [] | arrayExpr [ indexExpr ] |
返回数组 indexExprARRAY 的 arrayExprnd 元素。 |
| [] | mapExpr [ keyExpr ] |
返回 keyExpr 中 MAPmapExpr 的值。 |
| ^ | expr1 ^ expr2 |
返回 OR (XOR) 和 expr1 的按位异 expr2 结果。 |
| : | jsonStr : jsonPath |
返回从 jsonStr 中提取的字段。 |
| :: | expr :: type |
将值 expr 转换为目标数据类型 type。 |
| ?:: | expr ?:: type |
如果可能,将值 expr 转换为目标数据类型 type;否则返回 NULL。 |
| div | dividend div divisor |
返回 dividend 除以 divisor 所得结果的整数部分。 |
| 。 | mapExpr . keyIdentifier |
按照 MAP 返回 keyIdentifier 值。 |
| 。 | structExpr . fieldIdentifier |
按照 STRUCT 返回 fieldIdentifier 字段。 |
| == | expr1 == expr2 |
如果 true 等于 expr1,则返回 expr2;否则返回 false。 |
| = | expr1 = expr2 |
如果 true 等于 expr1,则返回 expr2;否则返回 false。 |
| >= | expr1 >= expr2 |
如果 true 大于或等于 expr1,则返回 expr2,否则返回 false。 |
| > | expr1 > expr2 |
如果 true 大于 expr1,则返回 expr2,否则返回 false。 |
| 存在 | exists(query) |
如果 query 返回至少一行,则返回 true,否则返回 false。 |
| ilike | str [not] ilike (pattern[ESCAPE escape]) |
如果 str(不)匹配具有 pattern 的 escape(不区分大小写),则返回 true。 |
| ilike | str [not] ilike {ANY\|SOME\|ALL}([pattern[, ...]]) |
如果 str(不)匹配任意/所有模式(不区分大小写),则返回 true。 |
| 在 | elem [not] in (expr1[, ...]) |
如果 true(不)等于任何 elem,则返回 exprN。 |
| 在 | elem [not] in (query) |
如果 true(不)等于 elem 中的任何行,则返回 query。 |
| 是独特的 | expr1 is [not] distinct from expr2 |
测试参数是否(不)具有不同的值,其中 NULL 被视为可比较值。 |
| 为假 | expr is [not] false |
测试 expr 是否(不是)false。 |
| 为空 | expr is [not] null |
如果 true 不为 expr,则返回 NULL。 |
| 为真 | expr is [not] true |
测试 expr 是否(不是)true。 |
| 喜欢 | str [not] like (pattern[ESCAPE escape]) |
如果 str(不)匹配具有 pattern 的 escape,则返回 true。 |
| 喜欢 | str [not] like {ANY\|SOME\|ALL}([pattern[, ...]]) |
如果 str(不)匹配任意/所有模式,则返回 true。 |
| <=> | expr1 <=> expr2 |
对于非空操作数,返回与 EQUAL(=) 相同的结果,但如果两个操作数均为 true,则返回 NULL;如果其中一个操作数为 false,则返回 NULL。 |
| <= | expr1 <= expr2 |
如果 true 小于或等于 expr1,则返回 expr2,否则返回 false。 |
| <> | expr1 <> expr2 |
如果 true 不等于 expr1,则返回 expr2,否则返回 false。 |
| < | expr1 < expr2 |
如果 true 小于 expr1,则返回 expr2,否则返回 false。 |
| - | expr1 - expr2 |
返回从 expr2 减去 expr1 得到的结果。 |
| 不 | not expr |
返回布尔表达式的逻辑 NOT 结果。 |
| 或 | expr1 or expr2 |
返回 OR 和 expr1 的逻辑 expr2。 |
| % | dividend % divisor |
返回在进行 dividend / divisor 运算后的余数。 |
| || | expr1 \|\| expr2 |
返回将 expr1 和 expr2 串联后的结果。 |
| | | expr1 \| expr2 |
返回 OR 和 expr1 的按位 expr2 结果。 |
| + | 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 |
返回 NOT 的按位 expr 结果。 |
运算符优先顺序
| 优先顺序 | 操作员 |
|---|---|
| 1 |
:、、::?::、、[ ] |
| 2 |
-(一元)、 +(一元)、 ~ |
| 3 |
*、、/%、、div |
| 4 |
+、 -、、 \|\| |
| 5 | & |
| 6 | ^ |
| 7 | \| |
| 8 |
=、、==、<=><>、!=、<、<=、、 >>= |
| 9 |
not、exists |
| 10 |
between、、inrlike、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) | 返回字符串数据的字符长度或二进制数据的字节数。 |
| 字符长度(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
| charindex(substr, str[, pos]) | 返回 substr 第一次出现在 str 中 pos 位置之后的位置。 |
| chr(expr) | 在提供的 UTF-16 码位上返回字符。 |
| strExpr 排序规则名称 | 将显式排序规则 collationName 附加到 strExpr。 |
| 排序规则 [for](strExpr) | 返回附加到 strExpr 的排序规则。 |
| concat(expr1, expr2[, ...]) | 返回参数的拼接结果。 |
| concat_ws(sep[, expr1[, ...]]) | 返回由 sep 分隔的串联字符串。 |
| contains(expr, subExpr) | 如果 trueexpr 或 STRING 包含 BINARY,则返回 subExpr。 |
| crc32(expr) | 返回 expr 的循环冗余校验值。 |
| decode(expr, charSet) | 使用字符集编码 expr 将二进制 charSet 转换为字符串。 |
| encode(expr, charSet) | 使用 charSet 字符编码返回字符串的二进制表示形式。 |
| endswith(expr, endExpr) | 如果 trueexpr 或 STRING 以 BINARY 结尾,则返回 endExpr。 |
| 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 与 pattern 不区分大小写地匹配 escape,则返回 true。 |
| initcap(expr) | 返回 expr,其中每个单词的首字母都是大写。 |
| instr(str, substr) | 返回 substr 中 str 的第一个匹配项的索引(从 1 开始)。 |
| lcase(expr) | 返回将 expr 的所有字符均更改为小写后的结果。 |
| left(str, len) | 返回 len 中最左边的 str 个字符。 |
| len(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
| 长度(expr) | 返回字符串数据的字符长度或二进制数据的字节数。 |
| levenshtein(str1,str2) | 返回字符串 str1 和 str2 之间的 Levenshtein 距离。 |
| str like (pattern[ESCAPE escape]) | 如果 str 与具有 pattern 的 escape 匹配,则返回 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(输入放置替换 FROM pos [FOR len]) | 将 input 替换为从 replace 开始且长度为 pos 的 len。 |
| overlay(输入放置替换 FROM pos [FOR len]) | 将 input 替换为从 replace 开始且长度为 pos 的 len。 |
| parse_url(url, partToExtract[, key]) | 从 url 中提取一个部分。 |
| position(substr, str[, pos]) | 返回 substr 第一次出现在 str 中 pos 位置之后的位置。 |
| position(subtr IN str) | 返回 substr 第一次出现在 str 中 pos 位置之后的位置。 |
| printf(strfmt[, obj1 [, ...]]) | 从 printf 样式格式字符串获取格式化后的字符串。 |
| randstr(length) | 返回一个随机字符串,由length字母数字字符组成。 |
| 字符串 正则表达式 regex | 如果 str 与 regex 匹配,则返回 true。 |
| str regexp_like 正则表达式 | 如果 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) | 返回重复 exprn 次的字符串。 |
| replace(str, search [, replace]) | 将所有 search 项都替换为 replace。 |
| reverse(expr) | 返回一个反向字符串或一个包含逆序的元素的数组。 |
| right(str, len) | 返回字符串 len 中最右边的 str 个字符。 |
| str rlike 正则表达式 | 如果 str 与 regex 匹配,则返回 true。 |
| rpad(expr, len[, pad]) | 返回右侧填充了 expr 的 pad,填充后整个字符的长度为 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]) | 根据匹配 str 的匹配项拆分 regex,并以最大的长度 limit 返回数组。 |
| split_part(str,delim,partNum) | 将 str 围绕 delim 的次数拆分,并返回 partNum 部分。 |
| startswith(expr, startExpr) | 如果 trueexpr 或 STRING 以 BINARY 开头,则返回 startExpr。 |
| 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) | 返回第 expr 次出现的分隔符 count 之前的 delim 的子字符串。 |
| to_binary(expr【, fmt】) | 返回基于 expr 强制转换为 BINARY 的 fmt。 |
| to_char(numExpr,fmt) | 使用 numExpr 格式将 STRING 强制转换为 fmt。 |
| to_varchar(numExpr,fmt) | 使用 numExpr 格式将 STRING 强制转换为 fmt。 |
| translate(expr, from, to) | 返回一个 expr,其中 from 内的所有字符都被替换为 to 中的字符。 |
| trim([BOTH |LEADING |尾随] [trimStr] FROM] str) | 剪裁字符串中的字符。 |
| try_aes_decrypt(expr, key[, mode[, padding[, aad]]]]) | 解密使用 AES 加密生成的二进制文件 expr,并在出错时返回 NULL。 |
| try_to_binary(expr [, fmt]) 尝试将表达式转换为二进制(expr [, fmt]) | 返回基于 expr 强制转换为 BINARY 的 fmt;或者,如果输入无效,则返回 NULL。 |
| try_url_decode(str) | 从 application/x-www-form-urlencoded 格式转换回字符串,并在出现错误时返回 NULL。 |
| try_zstd_decompress(值) | 返回使用 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(值) | 返回使用 Zstandard 压缩技术解压缩的值。 |
数字标量函数
| 功能 | 说明 |
|---|---|
| ~ expr | 返回 NOT 的按位 expr 结果。 |
| 被除数/除数 | 返回 dividend 除以 divisor 的结果。 |
| expr1 |expr2 | 返回 OR 和 expr1 的按位 expr2 结果。 |
| - expr | 返回 expr 的求反值。 |
| expr1 - expr2 | 返回从 expr2 减去 expr1 得到的结果。 |
| + expr | 返回 expr 的值。 |
| expr1 + expr2 | 返回 expr1 和 expr2 的总和。 |
| dividend % 除数 | 返回在进行 dividend / divisor 运算后的余数。 |
| expr1 ^ expr2 | 返回 OR (XOR) 和 expr1 的按位异 expr2 结果。 |
| expr1 和 expr2 | 返回 AND 和 expr1 的按位 expr2 结果。 |
| multiplier * multiplicand | 返回 multiplier 乘以 multiplicand 的结果。 |
| abs(expr) | 返回 expr 中数值的绝对值。 |
| acos(expr) | 返回 expr 的反余弦值。 |
| 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]) | 使用 expr 舍入模式返回舍入运算后的 HALF_EVEN。 |
| 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_NTZsourceTs 从 sourceTz 时区转换为 targetTz。 |
| cos(expr) | 返回 expr 的余弦值。 |
| cosh(expr) | 返回 expr 的双曲余弦。 |
| cot(expr) | 返回 expr 的余切值。 |
| csc(expr) | 返回 expr 的余割。 |
| 十进制(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) | 返回 e 的自然对数(以 expr 为底)。 |
| 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) | 如果不是 expr1,则返回 NaN,否则返回 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([种子]) | 返回介于 0 和 1 之间的随机值。 |
| randn([种子]) | 从标准正态分布返回一个随机值。 |
| random([种子]) | 返回介于 0 和 1 之间的随机值。 |
| rint(expr) | 以 expr 值返回舍入为整数的 DOUBLE。 |
| round(expr[, targetScale]) | 使用 expr 舍入模式返回舍入运算后的 HALF_UP。 |
| 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) | 使用格式 expr 将 DECIMAL 强制转换为 fmt。 |
| try_add(expr1,expr2) | 返回 expr1 加 expr2 的和,或者,如果发生错误,则返回 NULL。 |
| try_divide(分红、除数) | 返回 dividend 除以 divisor,或者,如果 NULL 为 0,则返回 divisor。 |
| try_mod(分红、除数) | 返回在进行 dividend / divisor 运算后的余数,或者,如果 NULL 为 0,则返回 divisor。 |
| try_multiply(乘数、被乘数) | 在溢出时返回 multiplier 乘以 multiplicand 或 NULL 的结果。 |
| try_subtract(expr1,expr2) | 返回在溢出时从 expr2 或 expr1 减去 NULL 得到的结果。 |
| try_to_number(expr,fmt) | 返回使用格式设置 expr 强制转换为 DECIMAL 的 fmt,或者,如果 NULL 与格式不匹配,则返回 expr。 |
| uniform(expr1, expr2 [,seed]) | 返回一个在指定数值范围内具有独立的同分布值的随机值。 |
| width_bucket(expr、minExpr、maxExpr、numBuckets) | 返回等宽直方图中某个值的 Bucket 编号。 |
| “zeroifnull(expr)” | 如果不为 expr,则返回 NULL;否则返回 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]]) | 返回 k 中最常出现的前 expr 个项目值及其近似计数。 |
| 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) | 返回组中所有 OR 输入值的按位 BINARY 结果。 |
| 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(列,epsilon,置信度,种子) | 返回具有 column、epsilon 和 confidence 的 seed 中的组中所有值的 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) | 返回从组的值计算出的峰度值。 |
| 最后(expr[,忽略空值]) | 返回一组行的最后一个 expr 值。 |
| 最后值(expr[,忽略空值]) | 返回一组行的最后一个 expr 值。 |
| listagg(expr [, delim]) [WITHIN GROUP(ORDER BY 键 [,...])] | 返回组中所有 STRING 的值的串联结果是 BINARY 或 expr,并用 delim 作为分隔符。 |
| max(expr) | 返回组中 expr 的最大值。 |
| max_by(expr1,expr2) | 返回与组中 expr1 的最大值关联的 expr2 的值。 |
| mean(expr) | 返回从组的值计算出的平均值。 |
| measure(measure_column) | 返回从组的值计算而来的度量视图的测量值。 |
| median(expr) | 返回根据组的值计算出的中值。 |
| min(expr) | 返回组中 expr 的最小值。 |
| min_by(expr1,expr2) | 返回与组中 expr1 的最小值相关联的 expr2 的值。 |
| mode(expr [,deterministic]) | 返回组中 NULL 的最常见值,而不是 expr。 |
| 百分位数(expr, percentage [,frequency]) | 返回位于指定 expr 处的 percentage 的确切百分位值。 |
| percentile_approx(expr,percentage[,accuracy]) | 返回组内 expr 的百分位近似值。 |
| percentile_cont(pct) WITHIN GROUP (ORDER BY 排序键) | 返回组内 key 的插值百分位。 |
| percentile_disc(pct) WITHIN GROUP (ORDER BY 参数) | 返回组内 key 的离散百分比。 |
| regr_avgx(yExpr,xExpr) | 返回根据 xExpr 和 xExpr 为 yExpr 的组的值计算出的 NOT NULL 的平均值。 |
| regr_avgy(yExpr、xExpr) | 返回根据 yExpr 和 xExpr 为 yExpr 的组的值计算出的 NOT NULL 的平均值。 |
| regr_count(yExpr、xExpr) | 返回组中非空值对 yExpr, xExpr 的个数。 |
| regr_intercept(yExpr、xExpr) | 返回组中单变量线性回归线的截距,其中 xExpr 和 yExpr 不为 NULL。 |
| regr_r2(yExpr、xExpr) | 返回 xExpr 和 yExpr 不是 NULL 的组值的决定系数。 |
| regr_slope(yExpr、xExpr) | 返回组中非空值对yExpr和xExpr的线性回归线的斜率。 |
| regr_sxx(yExpr、xExpr) | 返回 xExpr 和 xExpr 不为 NULL 的组中 yExpr 值的平方和。 |
| regr_sxy(yExpr、xExpr) | 返回从 yExpr 和 xExpr 为 xExpr 的组中的值计算的 yExpr 和 NOT NULL 乘积的总和。 |
| regr_syy(yExpr、xExpr) | 返回 yExpr 和 xExpr 不为 NULL 的组中 yExpr 值的平方和。 |
| schema_of_json_agg(json[, options]) | 以 DDL 格式返回组中 JSON 字符串的组合架构。 |
| schema_of_variant_agg(variantExpr) | 以 DDL 格式返回组中所有 VARIANT 值的组合架构。 |
| 偏度(expr) | 返回从组的值计算出的偏度值。 |
| some(expr) | 如果组中至少有一个 expr 值是 true,则返回 true。 |
| std(expr) | 返回通过组中的值计算出的样本标准偏差。 |
| stddev(expr) | 返回通过组中的值计算出的样本标准偏差。 |
| stddev_pop(expr) | 返回通过一组数据计算出的总体标准偏差。 |
| stddev_samp(expr) | 返回从组的值计算出的样本标准偏差。 |
| string_agg(expr[,delim]) [WITHIN GROUP (ORDER BY 键 [,...])] | 返回组中所有 STRING 的值的串联结果是 BINARY 或 expr,并用 delim 作为分隔符。 |
| sum(expr) | 返回从组的值计算出的总和值。 |
| try_avg(expr) | 返回根据组的值计算出的平均值,如果溢出则返回 NULL。 |
| try_sum(expr) | 返回根据组的值计算出的和,如果溢出则返回 NULL。 |
| var_pop(expr) | 返回从一组数据的值计算出的总体方差。 |
| var_samp(expr) | 返回从组的值计算出的样本方差。 |
| 方差(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]) | 返回位于窗口中特定 expr 处的 offset 的值。 |
数组函数
| 功能 | 说明 |
|---|---|
| arrayExpr[indexExpr] | 返回数组 indexExpr 的位置 arrayExpr 处的元素。 |
| aggregate(expr,start,merge[,finish]) | 使用自定义聚合器聚合数组中的元素。 |
| array([expr [, ...]]]) | 返回一个数组,其中包含 expr 中的元素。 |
| 数组_附加(数组, 元素) | 返回 array 追加的 elem。 |
| array_compact(数组) | 从 array 中删除 NULL 值。 |
| array_contains(数组, 值) | 如果 array 包含 value,则返回 true。 |
| array_distinct(array) | 从 array 中删除重复值。 |
| array_except(array1,array2) | 返回 array1 中(而不是 array2 中)的元素的数组。 |
| array_insert(数组、索引、elem) | 返回一个已展开的 array,其中 elem 被插入到 index 位置。 |
| array_intersect(array1,array2) | 返回 array1 和 array2 的交集中的元素的数组。 |
| array_join(array,delimiter[,nullReplacement]) | 串联 array 的元素。 |
| array_max(数组) | 返回 array 中的最大值。 |
| array_min(数组) | 返回 array 中的最小值。 |
| array_position(array,element) | 返回 element 中第一次出现 array 的位置。 |
| array_prepend(数组, 元素) | 返回以 array 为前缀的 elem。 |
| array_remove(array,element) | 从 element 中删除出现的所有 array。 |
| 数组重复(元素,计数) | 返回包含 elementcount 时间的数组。 |
| 数组大小(array) | 返回 array 中的元素数量。 |
| array_sort(数组,函数) | 返回 array 按照 func 排序后的结果。 |
| array_union(array1,array2) | 返回 array1 和 array2 的并集元素数组,无重复项。 |
| arrays_overlap(array1,array2) | 如果 array1 和 array2 的交集不为空,则返回 true。 |
| arrays_zip(array1【, ……】) | 返回合并的结构数组,其中第 n 个结构包含输入数组的所有第 N 个值。 |
| 基数(expr) | 返回 expr 的大小。 |
| concat(expr1, expr2 [, ...]) | 返回参数的拼接结果。 |
| element_at(arrayExpr,索引) | 返回位于 arrayExpr 处的 index 的元素。 |
| exists(expr, pred) | 如果 pred 对于 expr 中的任一元素为 true,则返回 true。 |
| explode(collection) | 通过取消嵌套 collection 返回行。 |
| explode_outer(集合) | 使用 outer 语义通过取消嵌套 collection 返回行。 |
| filter(expr,func) | 使用函数 expr 筛选 func 中的数组。 |
| flatten(arrayOfArrays) | 将数组的数组转换为单个数组。 |
| forall(expr, predFunc) | 测试 predFunc 是否对数组中的所有元素都有效。 |
| get(arrayExpr, index) | 返回 arrayExpr 处的 index 元素,从 0 开始。 |
| 内嵌(输入) | 将结构数组分解为一个表。 |
| inline_outer(输入) | 使用 outer 语义将结构数组分解为表。 |
| posexplode(集合) | 通过取消嵌套具有位置编号的数组来返回行。 |
| posexplode_outer(集合) | 使用 OUTER 语义,通过取消嵌套具有位置编号的数组来返回行。 |
| reduce(expr,start,merge[,finish]) | 使用自定义聚合器聚合数组中的元素。 |
| 反转(数组) | 返回一个反向字符串或一个包含逆序的元素的数组。 |
| 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,索引) | 返回位于 arrayExpr 处的 index 的元素;如果 NULL 超出边界,则返回 index。 |
| zip_with(expr1,expr2,func) | 使用 expr1 按元素将 expr2 和 func 中的数组合并到一个数组中。 |
映射函数
| 功能 | 说明 |
|---|---|
| mapExpr[keyExpr] | 返回映射 keyExpr 的 mapExpr 处的值。 |
| 基数(expr) | 返回 expr 的大小。 |
| element_at(mapExpr,键) | 返回 mapExpr 的 key 值。 |
| explode(collection) | 通过取消嵌套 expr 返回行。 |
| explode_outer(集合) | 使用 outer 语义通过取消嵌套 expr 返回行。 |
| map([{key1, value1}[, ...]]) | 创建具有指定键值对的映射。 |
| map_concat([expr1[,] ...]) | 返回所有 expr 映射表达式的并集。 |
| map_contains_key(映射, 键) | 如果 true 包含 map,则返回 key;否则返回 false。 |
| map_entries(地图) | 返回 map 中所有条目的无序数组。 |
| map_filter(expr, func) | 使用 expr 函数在 func 中筛选映射中的条目。 |
| map_from_arrays(键,值) | 创建具有 keys 和 values 对数组的映射。 |
| map_from_entries(expr) | 创建从指定的条目数组创建的映射。 |
| map_keys(地图) | 返回包含 map 键的无序数组。 |
| map_values(地图) | 返回一个包含 map 值的无序数组。 |
| map_zip_with(map1, map2, func) | 将 map1 和 map2 合并到一个映射中。 |
| size(expr) | 返回 expr 的基数。 |
| str_to_map(expr[, pairDelim[, keyValueDelim]]) | 在使用分隔符将 expr 拆分为键值对之后返回映射。 |
| transform_keys(expr, func) | 在 expr 中使用函数 func 转换映射表中的键。 |
| transform_values(expr, func) | 使用函数 expr 转换 func 中映射的值。 |
| try_element_at(mapExpr,key) | 返回 mapExpr 的 key 值;如果 NULL 不存在,则返回 key。 |
日期、时间戳和时间间隔函数
有关日期和时间戳格式的信息,请参阅日期/时间模式。
| 功能 | 说明 |
|---|---|
| intervalExpr / divisor | 返回除以 divisor 的间隔。 |
| - intervalExpr | 返回 intervalExpr 的求反值。 |
| intervalExpr1 - intervalExpr2 | 返回从 intervalExpr2 减去 intervalExpr1 得到的结果。 |
| datetimeExpr1 - datetimeExpr2 | 返回从 datetimeExpr2 减去 datetimeExpr1 得到的结果。 |
| + intervalExpr | 返回 intervalExpr 的值。 |
| intervalExpr1 + intervalExpr2 | 返回 intervalExpr1 和 intervalExpr2 的总和。 |
| intervalExpr * multiplicand | 返回 intervalExpr 乘以 multiplicand 的结果。 |
| abs(expr) | 返回 expr 中间隔值的绝对值。 |
| add_months(startDate,numMonths) | 返回在 numMonths 之后 startDate 的日期。 |
| curdate() | 返回查询计算开始时的当前日期。 |
| current_date() | 返回查询计算开始时的当前日期。 |
| current_timestamp() | 返回查询计算开始时的当前时间戳。 |
| current_timezone() | 返回当前会话的本地时区。 |
| date(expr) | 将 expr 值转化为 DATE。 |
| date_add(startDate,numDays) | 返回在 numDays 之后的日期 startDate。 |
| date_add(单位、值、expr) | 将 valueunit 添加到时间戳 expr。 |
| date_diff(单位, 开始日期, 结束日期) | 返回以 unit 为单位所测量的两个时间戳之间的差异。 |
| date_format(expr,fmt) | 将时间戳转换为 fmt 格式的字符串。 |
| date_from_unix_date(天) | 根据自 1970-01-01 以来的天数创建日期。 |
| date_part(field,expr) | 提取部分日期、时间戳或间隔。 |
| date_sub(startDate,numDays) | 返回在 numDays 之前的日期 startDate。 |
| date_trunc(单位,expr) | 返回已截断到 unit 中指定的单位的时间戳。 |
| dateadd(startDate,numDays) | 返回在 numDays 之后的日期 startDate。 |
| dateadd(unit, value, expr) | 将 valueunit 添加到时间戳 expr。 |
| datediff(endDate,startDate) | 返回从 startDate 到 endDate 的天数。 |
| datediff(单位, 开始, 结束) | 返回以 unit 为单位所测量的两个时间戳之间的差异。 |
| day(expr) | 返回日期或时间戳的月份日期。 |
| dayname(expr) | 返回给定日期的星期几的三个字母英语首字母缩略词。 |
| dayofmonth(expr) | 返回日期或时间戳的月份日期。 |
| dayofweek(expr) | 返回日期或时间戳的星期几。 |
| dayofyear(expr) | 从日期或时间戳返回一年中的第几天。 |
| divisor div dividend | 返回间隔 divisor 除以间隔 dividend 的整数部分。 |
| extract(field FROM source) | 返回 field 的 source。 |
| from_unixtime(unixTime,fmt) | 在 unixTime 中返回 fmt。 |
| from_utc_timestamp(expr,timezone) | 针对 UTC 的 expr 时间戳返回 timeZone 的时间戳。 |
| getdate() | 返回查询计算开始时的当前时间戳。 |
| hour(expr) | 返回时间戳的小时部分。 |
| last_day(expr) | 返回日期所属月份的最后一天。 |
| make_date(年、月、日) | 从 year、month 和 day 字段创建日期。 |
| make_dt_interval([days[, hours[, mins[, secs]]]]) // 创建一个时间间隔的函数,参数依次为天、小时、分钟和秒。 | 从 days、hours、mins 和 secs 创建日期时间间隔。 |
| make_interval(年, 月, 周, 天, 小时, 分钟, 秒) | 已弃用:从 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[, month]]) | 从 years 和 months 创建年月时间间隔。 |
| 分钟(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。 |
| 时间差(单位, 开始, 停止) | 返回以 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 为单位所测量的两个时间戳之间的差异。 |
| to_date(expr[,fmt]) | 返回使用可选格式设置将 expr 转换为日期后的值。 |
| to_timestamp(expr[,fmt]) | 返回使用可选格式设置强制转换为某个时间戳的 expr。 |
| to_unix_timestamp(expr[,fmt]) | 将 expr 中的时间戳返回为 UNIX 时间戳。 |
| to_utc_timestamp(expr,timezone) | 针对 UTC 的 expr 时间戳返回 timezone 的时间戳。 |
| trunc(expr, fmt) | 返回一个日期,其中日期的一部分已截断至格式模型 fmt 所指定的单位。 |
| try_add(expr1,expr2) | 返回 expr1 加 expr2 的和,或者,如果发生错误,则返回 NULL。 |
| try_divide(分红、除数) | 返回 dividend 除以 divisor,或者,如果 divisor 为 0,则返回 NULL。 |
| try_multiply(乘数、被乘数) | 在溢出时返回 multiplier 乘以 multiplicand 或 NULL 的结果。 |
| try_subtract(expr1,expr2) | 返回在溢出时从 expr2 或 expr1 减去 NULL 得到的结果。 |
| 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]]) | 通过 timestamp 表达式创建基于跳跃的滑动窗口。 |
| window_time(窗口时间) | 返回由 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。 |
| 十进制(expr) | 将 expr 值强制转换为 DECIMAL。 |
| double(expr) | 将 expr 值强制转换为 DOUBLE。 |
| float(expr) | 将 expr 值强制转换为 FLOAT。 |
| int(expr) | 将 expr 值强制转换为 INTEGER。 |
| make_date(年、月、日) | 从 year、month 和 day 字段创建日期。 |
| make_dt_interval([days[, hours[, mins[, secs]]]]) // 创建一个时间间隔的函数,参数依次为天、小时、分钟和秒。 | 从 days、hours、mins 和 secs 创建日期时间间隔。 |
| make_interval(年, 月, 周, 天, 小时, 分钟, 秒) | 从 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[, month]]) | 从 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) | 使用 expr 格式将 STRING 强制转换为 fmt。 |
| to_date(expr[,fmt]) | 返回使用可选格式设置将 expr 转换为日期后的值。 |
| to_number(expr, fmt) | 使用 expr 格式返回 DECIMA 强制转换为 fmtL。 |
| to_timestamp(expr[,fmt]) | 返回使用可选格式设置强制转换为某个时间戳的 expr。 |
| to_varchar(expr, fmt) | 使用 expr 格式将 STRING 强制转换为 fmt。 |
| try_cast(expr AS 类型) | 将值 expr 安全强制转换为目标数据类型 type。 |
| try_to_number(expr, fmt) | 使用 expr 格式返回 DECIMAL 强制转换为 fmt,或者如果 NULL 无效则返回 expr。 |
CSV 和 Avro 函数
| 功能 | 说明 |
|---|---|
| from_avro(avroBin, jsonSchema[, options]) | 根据 avroBin 和 jsonSchema 返回结构值。 |
| from_csv(csvStr, schema[, options]) | 返回具有 csvStr 和 schema 的结构值。 |
| schema_of_csv(csv[, options]) | 返回 DDL 格式的 CSV 字符串的架构。 |
| to_avro(expr[, options]) | 返回具有指定结构值的 Avro 二进制值。 |
| to_csv(expr[, options]) | 返回具有指定结构值的 CSV 字符串。 |
JSON 函数
| 功能 | 说明 |
|---|---|
| jsonStr : jsonPath | 返回从 jsonStr 中提取的字段。 |
| from_json(jsonStr, schema[, options]) | 返回具有 jsonStr 和 schema 的结构值。 |
| get_json_object(expr,path) | 从 JSON 中提取 path 对象。 |
| json_array_length(jsonArray) | 返回最外层 JSON 数组中的元素数。 |
| json_object_keys(jsonObject) | 以数组形式返回最外层 JSON 对象的所有键。 |
| json_tuple(jsonStr, path1 [, ...]) | 以元组形式返回多个 JSON 对象。 |
| parse_json(jsonStr) | 从 VARIANT 返回一个 jsonStr 值。 |
| schema_of_json(jsonStr[, options]) | 以 DDL 格式返回 JSON 字符串的架构。 |
| schema_of_json_agg(jsonStr[,options]) | 以 DDL 格式返回组中 JSON 字符串的组合架构。 |
| to_json(expr[, options]) | 返回一个 JSON 字符串,其中包含在 STRUCT 中指定的 VARIANT 或 expr。 |
VARIANT 函数
| 功能 | 说明 |
|---|---|
| variantExpr : jsonPath | 使用 JSON 路径返回从 variantExpr 中提取的字段。 |
| is_variant_null(variantExpr) | 测试 variantExpr 是否为 VARIANT 编码的 NULL。 |
| parse_json(jsonStr) | 从 VARIANT 返回一个 jsonStr 值。 |
| schema_of_variant(variantExpr) | 返回 DDL 格式的 VARIANT 表达式的架构。 |
| schema_of_variant_agg(variantExpr) | 以 DDL 格式返回组中所有 VARIANT 值的组合架构。 |
| to_json(expr[, options]) | 返回一个 JSON 字符串,其中包含在 STRUCT 中指定的 VARIANT 或 expr。 |
| try_parse_json(jsonStr) | 如果可能,从 VARIANT 返回 jsonStr 值。 如果不可能,则返回 NULL。 |
| try_variant_get(variantExpr,path,type) | 从 type 指定的 variantExpr 中提取类型为 path 的值,如果无法将值强制转换为目标类型,则提取 NULL。 |
| variant_explode(输入) | 通过取消嵌套 input 返回行集。 |
| variant_explode_outer(输入) | 使用 outer 语义通过取消嵌套 input 返回行集。 |
| variant_get(variantExpr,path,type) | 从 type 中提取由 variantExpr 指定的 path 类型的值。 |
XPath 和 XML 函数
| 功能 | 说明 |
|---|---|
| from_xml(xmlStr, schema[, options]) | 返回使用 xmlStr 从 schema 分析的结构值。 |
| schema_of_xml(xmlStr[, options]) | 以 DDL 格式返回 XML 字符串的架构。 |
| xpath(xml, xpath) | 返回与 xml 匹配的 xpath 节点内的值。 |
| xpath_boolean(xml, xpath) | 如果 true 表达式的计算结果为 xpath,或者在 true 中找到匹配节点,则返回 xml。 |
| 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(内容) | 返回文本的情绪。 |
| ai_classify(内容、标签) | 将提供的内容分类为提供的标签之一。 |
| ai_extract(内容、标签) | 从给定文本中提取由标签指定的实体。 |
| ai_fix_grammar(内容) | 更正给定文本中的语法错误。 |
| ai_forecast(观测,时间列) | 将时序数据外推到未来。 |
| ai_gen(内容) | 从 Databricks Foundation 模型 API 调用最先进的生成式 AI 模型,以回答用户提供的提示。 |
| ai_generate_text(prompt, modelName[, param1, value1] ~) | 不推荐使用:在提供提示的情况下,返回选定的大型语言模型 (LLM) 生成的文本。 |
| ai_mask(内容、标签) | 过滤给定文本中的指定实体。 |
| ai_query(endpointName, request, returnType) | 调用现有的 Mosaic AI 模型服务终结点,然后分析并返回其响应。 |
| ai_similarity(strExpr1、strExpr2) | 比较两个字符串并计算语义相似性分数。 |
| ai_summarize(content[, max_words]) | 生成给定文本的摘要。 |
| ai_translate(内容、to_lang) | 将文本翻译为指定的目标语言。 |
| vector_search(索引、查询、结果数量) | 使用 SQL 查询 Mosaic AI 矢量搜索索引。 |
读取函数
| 功能 | 说明 |
|---|---|
| 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]结束 | 返回等于 resN 的第一个 optN 的 expr;如果没有任何匹配项,则返回 def。 |
| CASE { WHEN cond1 THEN res1 } \ [ELSE def]结束 | 为计算结果为 true 的第一个 resN 返回 condN,或者,如果找不到任何匹配项,则返回 def。 |
| cloud_files_state( { TABLE(表) | 检查点 } ) | 返回自动加载程序 cloud_files 源的文件级状态。 |
| coalesce(expr1, expr2 [, ...]) | 返回第一个非 null 参数。 |
| 排序规则() | 返回可用排序规则的列表。 |
| 立方体(expr1 [, …]) | 使用指定的表达式列创建多维立方体。 |
| current_catalog() | 返回当前目录。 |
| current_database() | 返回当前架构。 |
| current_metastore() | 返回当前的 Unity Catalog 元存储 ID。 |
| 当前接收者(键) | 返回通过 Delta Sharing 共享的视图中当前接收者的属性。 |
| current_schema() | 返回当前架构。 |
| current_user() | 返回执行语句的用户。 |
| current_version() | 返回当前版本的 Azure Databricks。 |
| decode(expr, { key, value } [, ...][,defValue]) | 返回与键匹配的值。 |
| elt(index, expr1 [, ...] ) | 返回第 n 个表达式。 |
| equal_null(expr1,expr2) | 如果 true 等于 expr1 或两个表达式都为 expr2,则返回 NULL,否则返回 false。 |
| event_log({TABLE(table) | pipeline_id}) | 返回物化视图、流式表或管道的刷新历史记录表。 |
| 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 草图。 |
| http_request({parm => expr} [, ...]) | 使用定义的 HTTP 连接发出 HTTP 请求。 |
| java_method(class, method[, arg1 [, ...]]]) | 使用反射调用方法。 |
| if(cond,expr1,expr2) | 如果 expr1 为 cond,则返回 true;否则返回 expr2。 |
| iff(cond, expr1, expr2) | 如果 expr1 为 cond,则返回 true;否则返回 expr2。 |
| ifnull(expr1, expr2) | 如果 expr2 为 expr1,则返回 NULL;否则返回 expr1。 |
| input_file_block_length() | 返回所读取块的长度(以字节为单位)。 |
| input_file_block_start() | 返回正在读取的块的起始偏移量(以字节为单位)。 |
| input_file_name() | 返回正在读取的文件的名称。如果无法获得该名称,则返回空字符串。 |
| is_account_group_member(组) | 如果当前用户是帐户级别的组的成员,则返回 true。 |
| is_member("group") | 如果当前用户是工作区级别的组的成员,则返回 true。 |
| isnull(expr) | 如果 true 为 expr,则返回 NULL。 |
| isnotnull(expr) | 如果 true 不为 expr,则返回 NULL。 |
| least(expr1, expr2 [, ...]) | 返回所有参数的最小值(跳过 null 值)。 |
| list_secrets([scopeStr]) | 返回用户有权从 Databricks 机密服务查看的所有或一个范围内的密钥。 |
| luhn_check(numStr) | 如果 true 通过 numStr检查,则返回 。 |
| monotonically_increasing_id() | 返回单调递增的 64 位整数。 |
| nullif(expr1, expr2) | 如果 NULL 等于 expr1,则返回 expr2;否则返回 expr1。 |
| nvl(expr1,expr2) | 如果 expr2 为 expr1,则返回 NULL;否则返回 expr1。 |
| nvl2(expr1, expr2, expr3) | 如果 expr2 不是 expr1,则返回 NULL,否则返回 expr3。 |
| raise_error(expr) | 使用 expr 作为消息引发异常。 |
| 范围(结束) | 返回指定范围内值的表。 |
| range(start,end[,step[,numParts]]) | 返回指定范围内值的表。 |
| reflect(class, method[, arg1 [, ...]]]) | 使用反射调用方法。 |
| secret(scope, key) | 从 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]) | 返回启用 Change Data Feed 功能的 Delta Lake 表的变更日志。 |
| try_reflect(class, method[, arg1 [, ...]]) | 使用反射调用一个方法,如果方法失败,则返回 NULL。 |
| try_secret(范围、密钥) | 从 scope中提取具有给定 key 和 的机密值,如果无法检索密钥,则为 NULL。 |
| typeof(expr) | 为 expr 的数据类型返回 DDL 格式的类型字符串。 |
| user() | 返回执行语句的用户。 |
| uuid() | 返回全局唯一标识符 (UUID) 字符串。 |
| window(expr,宽度[, 步长 [, 起始]]) | 通过 timestamp 表达式创建基于跳跃的滑动窗口。 |
| xxhash64(expr1 [, ...]) | 返回参数的 64 位哈希值。 |
| version() | 返回 Apache Spark 版本。 |