内置函数 (Databricks SQL)

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

另请参阅:

运算符和谓词

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

操作员 语法 说明
& expr1 & expr2 返回 expr1expr2 的按位 AND 结果。
and expr1 and expr2 返回 expr1expr2 的逻辑 AND。
* multiplier * multiplicand 返回 multiplier 乘以 multiplicand 的结果。
!= expr1 != expr2 如果不等于,则返回 true; expr1expr2 否则返回 false
! !expr 返回布尔表达式的逻辑 NOT 结果。
between expr1 [not] between expr2 and expr2 测试 expr1 是否大于等于 expr2 且小于等于 expr3
[ ] arrayExpr [ indexExpr ] 返回 indexExpr 数组的 nd 元素 arrayExpr
[ ] mapExpr [ keyExpr ] 返回映射处 keyExpr 的值 mapExpr
^ expr1 ^ expr2 返回 expr1expr2 的按位异或 OR (XOR) 结果。
: jsonStr : jsonPath 返回从中提取的字段 jsonStr
:: expr :: type 将值转换 expr 为目标数据类型 type 。”
div divisor div dividend 返回 divisor 除以 dividend 所得结果的整数部分。
== expr1 == expr2 true如果 expr1 等于,则返回; expr2false 否则返回。”
= expr1 = expr2 true如果 expr1 等于,则返回; expr2false 否则返回。”
= 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 与区分匹配,则返回 true patternescape
ilike str [not] ilike {ANY|SOME|ALL}([pattern[, ...]]) 如果 str 匹配 any/all 模式区分,则返回 true。
in elem [not] in (expr1[, ...]) 如果 elem 等于任何 exprN,则返回 true
in elem [not] in (query) true如果 elem 等于中的任意行 query ,则返回。
is distinct expr1 is [not] distinct from expr2 测试参数是否具有不同的值,其中 NULL 被视为可比较值。
is false expr is [not] false 测试 expr 是否为 false
is null expr is [not] null true如果 expr 为 (不) ,则返回 NULL
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 结果。
% dividend % divisor 返回在进行 dividend / divisor 运算后的余数。
|| expr1 || expr2 返回将 expr1expr2 串联后的结果。
| expr1 | expr2 返回 expr1expr2 的按位 OR 结果。
+ expr1 + expr2 返回 expr1expr2 的总和。
regexp str [not] regexp regex 如果 strregex 匹配,则返回 true。
regexp_like str [not] regexp_like regex 如果 strregex 匹配,则返回 true。
rlike str [not] rlike regex 如果 strregex 匹配,则返回 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

字符串和二进制函数

函数 说明
表达式 1 | |expr2 返回将 expr1expr2 串联后的结果。
ascii(str) 返回 str 的第一个字符的 ASCII 码位。
base64(expr) expr 转换为 base 64 字符串。
bin(expr) 返回 expr 的二进制表示形式。
binary(expr) expr 值强制转换为 BINARY。
bit_length(expr) 返回字符串数据的位长度或二进制数据的位数。
btrim (st [,trimStr] ) 返回 str 删除了前导和尾随字符。
char(expr) 返回位于提供的 UTF-16 码位的字符。
char_length(expr) 返回字符串数据的字符长度或二进制数据的字节数。
character_length(expr) 返回字符串数据的字符长度或二进制数据的字节数。
charindex(substr, str[, pos]) 返回 substr 第一次出现在 str 中位置 pos 之后的位置。
chr(expr) 返回位于提供的 UTF-16 码位的字符。
concat (表达式1,表达式 2 [, ] ) 返回参数的串联。
concat_ws (sep [,表达式 1 [, ]] ) 返回由 sep 分隔的串联字符串。
crc32(expr) 返回 expr 的循环冗余校验值。
decode(expr, charSet) 使用字符集编码 charSet 将二进制 expr 转换为字符串。
encode(expr, charSet) 使用 charSet 字符编码返回字符串的二进制表示形式。
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 (模式 [ESCAPE escape] ) 如果 strpattern 与 case 区分匹配,则返回 true escape
initcap(expr) 返回 expr,其中的每个单词的首字母大写。
instr(str, substr) 返回 strsubstr 的第一个匹配项的索引(从 1 开始)。
lcase(expr) 返回将 expr 的所有字符均更改为小写后的结果。
left(str, len) 返回 str 中最左边的 len 个字符。
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(str, len[, pad]) 返回 str,左侧填充了 pad,填充后长度为 len
ltrim([trimstr,] str) 返回 str,其中删除了 trimStr 内的前导字符。
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_extract(str, regexp[, idx]) str 中提取与 regexp 表达式匹配且对应于 regex 组索引的第一个字符串。
regexp_extract_all(str, regexp[, idx]) str 中提取与 regexp 表达式匹配且对应于 regex 组索引的所有字符串。
regexp_replace(str, regexp, rep[, position]) str 中与 regexp 匹配的所有子字符串替换为 rep
repeat(expr, n) 返回重复时间的字符串 exprn
replace (str,regexp,rep [,position] ) str 中与 regexp 匹配的所有子字符串替换为 rep
reverse(expr) 返回一个反向字符串或一个包含逆序的元素的数组。
right(str, len) 返回字符串 str 中最右边的 len 个字符。
str rlike regex 如果 strregex 匹配,则返回 true。
rpad(str, len[, pad]) 返回右侧填充了 padstr,填充后整个字符的长度为 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 返回数组。
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 的子字符串。
translate(expr, from, to) 返回一个 expr,其中 from 内的所有字符都被替换为 to 中的字符。
trim ( [[两者 |前导 |尾随] [trimStr] FROM] str) 剪裁字符串中的字符。
ucase(expr) 返回将 expr 的所有字符均更改为大写后的结果。
unbase64(expr) 以二进制形式返回已解码的 base64 字符串。
unhex(expr) 将十六进制 expr 转换为二进制。
upper(expr) 返回将 expr 的所有字符均更改为大写后的结果。

数字标量函数

函数 说明
~ expr 返回 expr 的按位 NOT 结果。
dividend / divisor 返回 dividend 除以 divisor 的结果。
表达式 1 |expr2 返回 expr1expr2 的按位 OR 结果。
- expr 返回 expr 的求反值。
expr1 - expr2 返回从 expr1 减去 expr2 得到的结果。
+ expr 返回 expr 的值。
expr1 + expr2 返回 expr1expr2 的总和。
dividend % divisor 返回在进行 dividend / divisor 运算后的余数。
expr1 ^ expr2 返回 expr1expr2 的按位异或 OR (XOR) 结果。
表达式 2 返回 expr1expr2 的按位 AND 结果。
multiplier * multiplicand 返回 multiplier 乘以 multiplicand 的结果。
abs(expr) 返回 expr 中数值的绝对值。
acos(expr) 返回 (反余弦) 的反余弦值 expr
acosh(expr) 返回 expr 的反双曲余弦值。
asin(expr) 返回 (反正弦) 的反正弦值 expr
asinh(expr) 返回 expr 的反双曲正弦值。
atan(expr) 返回 (反正切) 的反正切值 expr
atan2(exprY, exprX) 返回平面的正 x 轴与坐标 (exprX, exprY) 指定的点之间的角度(以弧度为单位)。
atanh(expr) 返回 expr 的反双曲正切值。
bigint(expr) expr 值强制转换为 BIGINT。
bit_count(expr) 返回参数中设置的位数。
bit_get (expr,pos) 返回整数数字的二进制表示形式中的位的值。
bit_reverse(expr) 返回通过反转参数中的位顺序获得的值。
bround(expr[,targetScale]) 使用 HALF_EVEN 舍入模式返回舍入运算后的 expr
cbrt(expr) 返回 expr 的立方根。
ceil(expr) 返回不小于 expr 的最小整数。
ceiling(expr) 返回不小于 expr 的最小整数。
conv(num, fromBase, toBase) numfromBase 转换为 toBase
cos(expr) 返回 expr 的余弦值。
cosh(expr) 返回 expr 的双曲余弦。
cot(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) 返回不大于 expr 的最小整数。
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) expr1如果不是,则返回; ’NaN 否则返回 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
shiftleft(expr, n) 返回按位左移 n 位后的结果。
shiftright(expr, n) 返回由位右移的按位有符号整数 n
shiftrightunsigned (expr,n) 返回由位右移的按位无符号整数 n
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。
try_add (,表达式 2) 返回和的和 expr1expr2 ,如果出现错误,则返回 NULL。
除数 try_divide () 返回 dividend 相除的 divisor ,如果为0,则返回 NULL divisor

聚合函数

功能 说明
any(expr) 如果组中至少一个 expr 值为 true,则返回 true。
approx_count_distinct(expr[,relativeSD]) 返回组内 expr 中的预估非重复值数。
approx_percentile(col,percentage[,accuracy]) 返回组内 expr 的百分位近似值。
avg(expr) 返回从组的值计算出的平均值。
bit_and(expr) 返回组中所有输入值的按位 AND 结果。
bit_or(expr) 返回组中所有输入值的按位 OR 结果。
bit_xor(expr) 返回组中所有输入值的按位 XOR 结果。
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 的行。
计数 (expr [, ] ) 返回组中为其提供的表达式均为非 null 值的行的数目。
count_if(expr) 返回 expr 中组的 true 值数。
count_min_sketch(expr, epsilon, confidence, seed) 返回具有 epsilonconfidenceseedexpr 中的组中所有值的 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 值。
kurtosis(expr) 返回从组的值计算出的峰度值。
last(expr[,ignoreNull]) 返回一组行的最后一个 expr 值。
last_value(expr[,ignoreNull]) 返回一组行的最后一个 expr 值。
max(expr) 返回组中 expr 的最大值。
max_by(expr1,expr2) 返回与组中 expr2 的最大值关联的 expr1 的值。
mean(expr) 返回从组的值计算出的平均值。
min(expr) 返回组中 expr 的最小值。
min_by(expr1, expr2) 返回与组中 expr2 的最小值关联的 expr1 的值。
percentile(expr, percentage [,frequency]) 返回位于指定 percentage 处的 expr 的确切百分位值。
percentile_approx(expr,percentage[,accuracy]) 返回组内 expr 的百分位近似值。
skewness(expr) 返回从组的值计算出的偏度值。
some(expr) 如果组中至少有一个 expr 值是 true,则返回 true。
std(expr) 返回通过组中的值计算出的样本标准偏差。
stddev(expr) 返回通过组中的值计算出的样本标准偏差。
stddev_pop(expr) 返回从组的值计算出的总体标准偏差。
stddev_samp(expr) 返回从组的值计算出的样本标准偏差。
sum(expr) 返回从组的值计算出的总和值。
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] 返回位于 ARRAY 位置 indexExpr 的元素 arrayExpr
aggregate(expr,start,merge[,finish]) 使用自定义聚合器聚合数组中的元素。
array ([expr [, ]]) 返回一个数组,其中包含 expr 中的元素。
array_contains(array,value) 如果 array 包含 value,则返回 true。
array_distinct(array) array 中删除重复值。
array_except(array1,array2) 返回 array1 中(而不是 array2 中)的元素的数组。
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_remove(array,element) array 中删除所有出现的 element
array_repeat(element,count) 返回包含时间的 elementcount 数组。
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(expr) 通过取消嵌套 expr 返回行。
explode_outer(expr) 使用 outer 语义通过取消嵌套 expr 返回行。
filter(expr,func) 使用函数 func 筛选 expr 中的数组。
flatten(arrayOfArrays) 将数组的数组转换为单个数组。
forall(expr, predFunc) 测试 predFunc 是否对数组中的所有元素都有效。
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(array[,ascendingOrder]) 按排序顺序返回 expr 中的数组。
transform(expr, func) 使用函数 expr 转换 func 中数组中的元素。
zip_with(expr1, expr2, func) 使用 func 按元素将 expr1expr2 中的数组合并到一个数组中。

映射函数

功能 说明
mapExpr[keyExpr] 返回 MAP 中的 keyExprmapExpr
cardinality(expr) 返回 expr 的大小。
element_at(mapExpr, key) 返回 keymapExpr 值。
explode(expr) 通过取消嵌套 expr 返回行。
explode_outer(expr) 使用 outer 语义通过取消嵌套 expr 返回行。
map ([{key1, value1}[, ]]) 创建具有指定键值对的映射。
map_concat ([expr1 [, ]]) 返回所有 expr 映射表达式的并集。
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 的基数。
transform_keys(expr, func) 使用 func 函数在 expr 中转换映射中的键。
transform_values(expr, func) 使用 func 函数在 expr 中转换映射中的值。

Date、timestamp 和 interval 函数

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

函数 说明
intervalExpr/约数 返回除以的间隔 divisor
- intervalExpr 返回 intervalExpr 的求反值。
intervalExpr1 - intervalExpr2 返回从 intervalExpr1 减去 intervalExpr2 得到的结果。
datetimeExpr1 - datetimeExpr2 返回从 datetimeExpr1 减去 datetimeExpr2 得到的结果。
+ intervalExpr 返回 intervalExpr 的值。
intervaExpr1 + intervalExpr2 返回 intervalExpr1ntervalExpr2 的总和。
intervalExpr * 被乘数 返回 intervalExpr 乘以 multiplicand 的结果。
add_months(startDate,numMonths) 返回在 startDate 之后 numMonths 的日期。
current_date() 返回查询计算开始时的当前日期。
current_timestamp() 返回查询计算开始时的当前时间戳。
current_timezone() 返回当前会话的本地时区。
date(expr) expr 值强制转换为 DATE。
date_add(startDate,numDays) 返回在 startDate 之后的日期 numDays
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(field,expr) 返回已截断到 field 中指定的单位的时间戳。
datediff(endDate,startDate) 返回从 startDateendDate 的天数。
day(expr) 返回日期或时间戳的月份日期。
dayofmonth(expr) 返回日期或时间戳的月份日期。
dayofweek(expr) 返回日期或时间戳的星期几。
dayofyear(expr) 返回日期或时间戳的年份日期。
extract(field FROM source) 返回 sourcefield
from_unixtime(unixTime,fmt) 返回 fmt 中的 unixTime
from_utc_timestamp(expr,timezone) 返回在时区 timeZone 中以 UTC 格式指定的 expr 格式的时间戳。
hour(expr) 返回时间戳的小时部分。
last_day(expr) 返回日期所属月份的最后一天。
make_date(year,month,day) yearmonthday 字段创建日期。
make_dt_interval ( [天 [,小时 [,分钟 [,秒]]]] ) 从、和创建日期时间间隔 dayshoursminssecs
make_interval(years, months, weeks, days, hours, mins, secs) 弃用:从、、、 yearsmonthsweeksdayshoursminssecs 创建一个间隔。
make_timestamp(year,month,day,hour,min,sec[,timezone]) yearmonthdayhourminsectimezone 字段创建时间戳。
make_ym_interval ( [年 [,月]] ) 从、和创建年月间隔 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 中时间戳的第二个分量。
timestamp(expr) expr 强制转换为 TIMESTAMP。
timestamp_micros(expr) 创建自 UTC 纪元以来的时间戳(expr 微秒)。
timestamp_millis(expr) 创建自 UTC 纪元以来的时间戳 expr 毫秒。
timestamp_seconds(expr) 创建自 UTC 纪元以来的时间戳(expr 秒)。
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 (,表达式 2) 返回和的和 expr1expr2 ,如果出现错误,则返回 NULL。
除数 try_divide () 返回 dividend 相除的 divisor ,如果为0,则返回 NULL divisor
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 的年份部分。
窗口 (expr,width [,step [,start]] ) 通过时间戳表达式创建基于跳跃的滑动窗口。

Cast 函数和构造函数

有关类型之间的转换的信息,请参阅cast 函数 (Databricks SQL) try_cast 函数 (Databricks SQL)

函数 说明
数组 ( [expr [, ]] ) 返回一个数组,其中包含 expr 中的元素。
bigint(expr) expr 值强制转换为 BIGINT。
binary(expr) expr 值强制转换为 BINARY。
boolean(expr) expr 强制转换为布尔值。
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 ( [天 [,小时 [,分钟 [,秒]]]] ) 从、和创建日期时间间隔 dayshoursminssecs
make_interval(years, months, weeks, days, hours, mins, secs) yearsmonthsweeksdayshoursminssecs 创建间隔。
make_timestamp(year,month,day,hour,min,sec[,timezone]) yearmonthdayhourminsectimezone 字段创建时间戳。
make_ym_interval ( [年 [,月]] ) 从、和创建年月间隔 yearsmonths
map ( [{key1,value1} [, ]] ) 创建具有指定键值对的映射。
named_struct ( {name1,val1} [, ] ) 创建具有指定的字段名称和值的结构。
smallint(expr) expr 值强制转换为 SMALLINT。
string(expr) expr 值强制转换为 STRING。
struct (表达式 1 [, ] ) 创建具有指定字段值的结构。
tinyint(expr) expr 强制转换为 TINYINT。
timestamp(expr) expr 强制转换为 TIMESTAMP。
try_cast(expr AS type) 将值 expr 安全强制转换为目标数据类型 type

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 提取 JSON 对象。
json_array_length(jsonArray) 返回最外层 JSON 数组中的元素数。
json_object_keys(jsonObject) 以数组形式返回最外层 JSON 对象的所有键。
json_tuple (jsonStr, path1 [, ]) 以元组形式返回多个 JSON 对象。
schema_of_json(json[, options]) 返回 DDL 格式的 JSON 字符串的架构。
to_json(expr[, options]) 返回一个 JSON 字符串,其中 expr 中指定了结构。

XPath 函数

函数 说明
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 节点的内容。

其他函数

函数 说明
assert_true(expr) 如果 expr 不为 true,则返回错误。
CASE expr { WHEN opt1 THEN res1 } [ … ] [ELSE def]结束 返回等于 expr 的第一个 optNresN;如果没有任何匹配项,则返回 def
CASE { WHEN cond1 THEN res1 } [ … ] [ELSE def]结束 如果 resN 第一个 condN 计算结果为 true,则返回 ;如果 def 未找到,则返回 。
coalesce (expr1, expr2 [, ]) 返回第一个非 null 参数。
cube (expr1 [, ]) 使用指定的表达式列创建多维多维数据集。
current_catalog() 返回当前目录。
current_database() 返回当前数据库(架构)。
current_user() 返回当前用户。
decode (expr, { key1, value1 } [, … ] [,defValue]) 返回与键匹配的值。
elt (index, expr1 [, … ] ) 返回第 n 个表达式。
最大 (expr1 [, ]) 返回所有参数的最大的值,跳过 null 值。
grouping(col) 指示 GROUPING SETROLLUPCUBE 中指定的列是否表示小计。
grouping_id ([col1 [, ]]]) 返回一组列的分组级别。
hash (expr1 [, ]) 返回参数的哈希值。
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_member(group) 如果当前用户是组的成员,则返回 true。
isnull(expr) 如果 trueexpr,则返回 NULL
isnotnull(expr) 如果 expr 不为 NULL,则返回 true
least (expr1 [, ]) 返回所有参数的最小值(跳过 null 值)。
monotonically_increasing_id() 返回单调递增的 64 位整数。
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]]) 返回指定范围内值的表。
反射 (类, method[, arg1 [, ]]) 使用反射调用某个方法。
spark_partition_id() 返回当前分区 ID。
stack (numRows, expr1 [, ]) expr1 、 … 分隔 exprNnumRows 行。
uuid() 返回全局唯一标识符 (UUID) 字符串。
window (expr, width[, step[, start]]) 通过时间戳表达式创建基于跳跃的滑动窗口。
xxhash64 (expr1 [, ]) 返回参数的 64 位哈希值。
version() 返回 Apache Spark 版本。