PySpark 函数

本页提供 Databricks 上提供的 PySpark SQL 函数列表,其中包含相应的参考文档的链接。

普通函数

功能 Description
broadcast(df) 将 DataFrame 标记为足够小,以便在广播联接中使用。
call_function(funcName, *cols) 调用 SQL 函数。
col(col) 返回基于给定列名的列。
column(col) 返回基于给定列名的列。
lit(col) 创建文本值的列。
expr(str) 将表达式字符串解析为其所代表的列

条件函数

功能 Description
coalesce(*cols) 返回不为 null 的第一列。
ifnull(col1, col2) 如果 col1 为 null,则返回 col2;否则返回 col1。
nanvl(col1, col2) 如果 col1 不是 NaN,则返回 col1;如果 col1 为 NaN,则返回 col2。
nullif(col1, col2) 如果 col1 等于 col2,则返回 null;否则返回 col1。
nullifzero(col) 如果 col 等于零,则返回 null;否则返回 col。
nvl(col1, col2) 如果 col1 为 null,则返回 col2;否则返回 col1。
nvl2(col1, col2, col3) 如果 col1 不为 null,则返回 col2;否则返回 col3。
when(condition, value) 计算条件列表,并返回多个可能的结果表达式之一。
zeroifnull(col) 如果 col 为 null,则返回零;否则返回 col。

模式匹配函数

功能 Description
equal_null(col1, col2) 对于非空操作数,返回与 EQUAL(=)运算符相同的结果,但如果两者均为 null,则返回 true;如果其中一个操作数为 null,则返回 false。
ilike(str, pattern[, escapeChar]) 如果 str 与不区分大小写的转义模式匹配,则返回 true;如果任何参数为 null,则返回 null;否则为 false。
isnan(col) 表达式返回 true,当列为 NaN 时。
isnotnull(col) 如果 col 不为 null,则返回 true;否则返回 false。
isnull(col) 如果某个列值为 null,则表达式返回 true。
like(str, pattern[, escapeChar]) 如果 str 与带转义的模式匹配,则返回 true;如果任何参数为 null,则返回 null;否则返回 false。
regexp(str, regexp) 如果 str 与 Java 正则表达式 regexp 匹配,则返回 true;否则返回 false。
regexp_like(str, regexp) 如果 str 与 Java 正则表达式 regexp 匹配,则返回 true;否则返回 false。
rlike(str, regexp) 如果 str 与 Java 正则表达式 regexp 匹配,则返回 true;否则返回 false。

排序函数

功能 Description
asc(col) 按升序返回目标列的排序表达式。
asc_nulls_first(col) 根据给定列名生成升序排序表达式,其中空值在非空值之前返回。
asc_nulls_last(col) 根据给定列名的升序返回排序表达式,NULL 值显示在非 NULL 值之后。
desc(col) 返回目标列的降序排序表达式。
desc_nulls_first(col) 根据给定列名的降序返回排序表达式,其中 null 值在非 null 值之前出现。
desc_nulls_last(col) 根据给定列名的降序返回排序表达式,null 值显示在非 null 值之后。

数学函数

功能 Description
abs(col) 计算给定列或表达式的绝对值。
acos(col) 计算给定列或表达式的反余弦值(也称为反余弦值)。
acosh(col) 计算给定列或表达式的反双曲余弦值(也称为 arcosh)。
asin(col) 计算输入列的反正弦值。
asinh(col) 计算输入列的反双曲正弦值。
atan(col) 计算输入列的反正切值。
atan2(col1, col2) 计算平面正 x 轴与坐标给出的点之间的角度(以弧度为单位)
atanh(col) 计算输入列的反双曲正切值。
bin(col) 返回给定列的二进制值的字符串表示形式。
bround(col[, scale]) 使用HALF_EVEN舍入模式,当刻度>>= 0时,将给定值舍入至小数第>位;当刻度为0时,将给定值舍入为整数部分。
cbrt(col) 计算给定值的立方根。
ceil(col[, scale]) 计算给定值的上限。
ceiling(col[, scale]) 计算给定值的上限。
conv(col, fromBase, toBase) 将字符串列中的数字从一个基数转换为另一个基列。
cos(col) 计算输入列的余弦值。
cosh(col) 计算输入列的双曲余弦值。
cot(col) 计算输入列的余切值。
csc(col) 计算输入列的余割。
degrees(col) 将以弧度为单位测量的角度转换为以度为单位的大致等效角度。
e() 返回 Euler 的数字。
exp(col) 计算给定值的指数。
expm1(col) 计算给定值的指数减一。
factorial(col) 计算给定值的阶乘。
floor(col[, scale]) 计算给定值的下限。
greatest(*cols) 返回列名列表的最大值,跳过 null 值。
hex(col) 计算给定列的十六进制值,可以是 StringTypeBinaryType、IntegerTypeLongType
hypot(col1, col2) 不会在中间阶段出现溢出或下溢的情况下执行 sqrt(a^2 + b^2) 的计算。
least(*cols) 返回列名列表的最小值,跳过 null 值。
ln(col) 返回参数的自然对数。
log(arg1[, arg2]) 返回第二个参数的第一个基于参数的对数。
log10(col) 计算 Base 10 中给定值的对数。
log1p(col) 计算给定值加上 1 的自然对数。
log2(col) 返回参数的 base-2 对数。
negate(col) 返回负值。
negative(col) 返回负值。
pi() 返回 π。
pmod(dividend, divisor) 返回分红模式除数的正值。
positive(col) 返回值。
pow(col1, col2) 返回第一个参数的值,该参数被提升为第二个参数的幂。
power(col1, col2) 返回第一个参数的值,该参数被提升为第二个参数的幂。
radians(col) 将以度为单位测量的角度转换为以弧度度量的大致等效角度。
rand([seed]) 生成一个随机列,其中包含独立同分布(i.i.d.)的样本,样本在 [0.0, 1.0) 区间内均匀分布。
randn([seed]) 从标准正态分布生成一列具有独立同分布(i.i.d.)样本的随机列。
rint(col) 返回与参数最接近且等于某个数学整数的双精度值。
round(col[, scale]) 使用HALF_UP舍入模式将给定值舍入到指定的小数位数,如果刻度 >= 0,则舍入到小数位,否则在刻度 < 百分之为 0 的情况下舍入到整数部分。
sec(col) 计算输入列的正割。
sign(col) 计算给定值的符号。
signum(col) 计算给定值的符号。
sin(col) 计算输入列的正弦值。
sinh(col) 计算输入列的双曲正弦值。
sqrt(col) 计算指定浮点值的平方根。
tan(col) 计算输入列的正切值。
tanh(col) 计算输入列的双曲正切值。
try_add(left, right) 返回左右两个数的和,在溢出时结果为 null。
try_divide(left, right) 返回红利/除数。
try_mod(left, right) 返回被除数/除数后的余数。
try_multiply(left, right) 返回左乘以右,结果为溢出时为 null。
try_subtract(left, right) 返回左侧减右侧的结果,并且在溢出时结果为 null。
unhex(col) 十六进制的逆
uniform(min, max[, seed]) 返回一个具有独立且相同分布的随机值(i.i.d.)值,该值具有指定的数字范围。
width_bucket(v, min, max, numBucket) 返回此表达式的值在计算后将被分类到的存储桶编号。

字符串函数

功能 Description
ascii(col) 计算字符串列的第一个字符的数值。
base64(col) 计算二进制列的 BASE64 编码,并将其作为字符串列返回。
bit_length(col) 计算指定字符串列的位长度。
btrim(str[, trim]) 从 str 中删除前导和尾随剪裁字符。
char(col) 返回 ASCII 字符,该字符的二进制值等效于 col。
char_length(str) 返回字符串数据的字符长度或二进制数据的字节数。
character_length(str) 返回字符串数据的字符长度或二进制数据的字节数。
collate(col, collation) 用指定的排序规则标记给定列。
collation(col) 返回给定列的排序规则名称。
concat_ws(sep, *cols) 使用给定分隔符将多个输入字符串列连接到单个字符串列。
contains(left, right) 返回布尔值。
decode(col, charset) 使用提供的字符集(如US-ASCIIISO-8859-1UTF-8UTF-16BEUTF-16LEUTF-16UTF-32)之一,将第一个参数从二进制转换为字符串。
elt(*inputs) 返回第 n 个输入,例如,当 n 为 2 时返回 input2。
encode(col, charset) 使用提供的字符集(US-ASCIIISO-8859-1UTF-8UTF-16BEUTF-16LEUTF-16UTF-32 之一),将第一个参数从字符串转换为二进制。
endswith(str, suffix) 返回布尔值。
find_in_set(str, str_array) 返回以逗号分隔的列表(strArray)中给定字符串(str)的索引(基于 1)。
format_number(col, d) 将数字 X 格式化为类似 #,--#,--#.-- 的格式,使用 HALF_EVEN 舍入模式进行舍入至 d 小数位,并将结果作为字符串返回。
format_string(format, *cols) 在 printf 样式中设置参数的格式,并将结果作为字符串列返回。
initcap(col) 将句子中每个单词的首字母转换为大写。
instr(str, substr) 找到给定字符串中首次出现的子字符串的位置。
is_valid_utf8(str) 如果输入是有效的 UTF-8 字符串,则返回 true,否则返回 false。
lcase(str) 返回经过更改为小写的字符串 str 中的所有字符。
left(str, len) 如果 len 小于或等于 0,则返回字符串 str 中最左侧的 len(len 可以是字符串类型)字符。如果 len 小于或等于 0,则结果为空字符串。
length(col) 计算字符串数据的字符长度或二进制数据的字节数。
levenshtein(left, right[, threshold]) 计算两个给定字符串的 Levenshtein 距离。
locate(substr, str[, pos]) 在字符串列中,定位子字符串在位置 pos 之后的第一次出现的位置。
lower(col) 将字符串表达式转换为小写。
lpad(col, len, pad) 使用填充字符将字符串列左填充到宽度 len。
ltrim(col[, trim]) 删除指定字符串值左端的空格。
make_valid_utf8(str) 返回一个新字符串,其中所有无效的 UTF-8 字节序列(如果有)都由 Unicode 替换字符(U+FFFD)替换。
mask(col[, upperChar, lowerChar, digitChar, ...]) 屏蔽给定的字符串值。
octet_length(col) 计算指定字符串列的字节长度。
overlay(src, replace, pos[, len]) 从 src 的字节位置 pos 开始,用 replace 覆盖指定部分,持续 len 字节。
position(substr, str[, start]) 返回从起始位置开始,str 中 substr 的首次出现位置。
printf(format, *cols) 在 printf 样式中设置参数的格式,并将结果作为字符串列返回。
randstr(length[, seed]) 返回一个指定长度的字符串,其字符从以下字符池中随机选择:0-9、a-z、A-Z。
regexp_count(str, regexp) 返回在字符串 str 中匹配 Java 正则表达式模式 regexp 的次数。
regexp_extract(str, pattern, idx) 从指定的字符串列中提取由 Java 正则表达式 regexp 匹配的特定组。
regexp_extract_all(str, regexp[, idx]) 提取与 Java 正则表达式 regexp 匹配且对应于正则表达式组索引的 str 中的所有字符串。
regexp_instr(str, regexp[, idx]) 返回与 Java 正则表达式 regexp 匹配且对应于正则表达式组索引的 str 中第一个子字符串的位置。
regexp_replace(string, pattern, replacement) 将匹配正则表达式的指定字符串值的所有子字符串替换为替换文本。
regexp_substr(str, regexp) 返回与字符串 str 中的 Java 正则表达式 regexp 匹配的第一个子字符串。
repeat(col, n) 重复字符串列 n 次,并将其作为新字符串列返回。
replace(src, search[, replace]) 将所有搜索结果替换为“替换”。
right(str, len) 如果 len 小于或等于 0,则返回字符串 str 中最右边的 len(len 可以是字符串类型)字符。如果 len 小于或等于 0,则结果为空字符串。
rpad(col, len, pad) 将字符串列右填充至长度为 len,并使用 pad 作为填充字符。
rtrim(col[, trim]) 为指定的字符串值从右端剪裁空格。
sentences(string[, language, country]) 将字符串拆分为句子数组,其中每个句子都是单词数组。
soundex(col) 返回字符串的 SoundEx 编码
split(str, pattern[, limit]) 围绕给定模式的匹配项拆分 str。
split_part(src, delimiter, partNum) 按分隔符拆分字符串,并返回所请求的拆分部分(基于1)。
startswith(str, prefix) 返回布尔值。
substr(str, pos[, len]) 返回从 pos 开始且长度为 len 的 str 子字符串,或以 pos 开头且长度为 len 的字节数组切片。
substring(str, pos, len) 子字符串从 pos 开始,并且当 str 是 String 类型时,其长度为 len;如果 str 是 Binary 类型,则返回从字节位置 pos 开始、长度为 len 的字节数组切片。
substring_index(str, delim, count) 返回字符串 str 中在分隔符 delim 出现 count 次之前的子字符串。
to_binary(col[, format]) 根据提供的格式将输入 col 转换为二进制值。
to_char(col, format) 根据格式将 col 转换为字符串。
to_number(col, format) 根据字符串格式“format”将字符串“col”转换为数字。
to_varchar(col, format) 根据格式将 col 转换为字符串。
translate(srcCol, matching, replace) 将 srcCol 中的任何字符转换为匹配中的字符。
trim(col[, trim]) 去除指定字符串列两端的空格。
try_to_binary(col[, format]) 尝试执行该 to_binary 作,但如果无法执行转换,则返回 NULL 值,而不是引发错误。
try_to_number(col, format) 根据字符串格式col将字符串format转换为数字。
try_validate_utf8(str) 如果输入值对应于有效的 UTF-8 字符串,则返回输入值;否则返回 NULL。
ucase(str) 返回 str,其中的所有字符都更改为大写。
unbase64(col) 解码 BASE64 编码的字符串列,并将其作为二进制列返回。
upper(col) 将字符串表达式转换为大写。
validate_utf8(str) 如果输入值对应于有效的 UTF-8 字符串,或发出错误,则返回输入值。

按位函数

功能 Description
bit_count(col) 返回参数 expr 中设置为无符号 64 位整数的位数;如果参数为 NULL,则返回 NULL。
bit_get(col, pos) 返回位于指定位置的位(0 或 1)的值。
bitwise_not(col) 不按位计算。
getbit(col, pos) 返回位于指定位置的位(0 或 1)的值。
shiftleft(col, numBits) 将给定值 numBits 向左移动。
shiftright(col, numBits) (已签名) 将给定值 numBits 向右移动。
shiftrightunsigned(col, numBits) 无符号将给定值 numBits 向右移动。

日期/时间函数

功能 Description
add_months(start, months) 返回指定开始日期后若干个月的日期。
convert_timezone(sourceTz, targetTz, sourceTs) 将无时区的时间戳从 sourceTz 时区转换为 targetTz。
curdate() 以 DateType 列的形式返回查询评估开始时的当前日期。
current_date() 以 DateType 列的形式返回查询评估开始时的当前日期。
current_timestamp() 以 TimestampType 列的形式返回查询计算开始时的当前时间戳。
current_timezone() 返回当前会话的本地时区。
date_add(start, days) 返回开始日期后几天的日期。
date_diff(end, start) 返回从开始到结束的天数。
date_format(date, format) 将日期/时间戳/字符串转换为由第二个参数给定的日期格式指定的字符串值。
date_from_unix_date(days) 从 1970-01-01 开始的天数生成日期。
date_part(field, source) 从日期/时间戳或时间间隔中提取部分内容。
date_sub(start, days) 返回开始日期前几天的日期。
date_trunc(format, timestamp) 返回被截断到格式指定的单位的时间戳。
dateadd(start, days) 返回开始日期后几天的日期。
datediff(end, start) 返回从开始到结束的天数。
datepart(field, source) 从日期/时间戳或时间间隔中提取部分内容。
day(col) 将给定日期/时间戳中的日子提取为整数。
dayname(col) 返回给定日期中的三个字母缩写的星期名。
dayofmonth(col) 将给定日期/时间戳中的日子提取为整数。
dayofweek(col) 从给定的日期/时间戳中提取星期几并转换为整数。
dayofyear(col) 从给定的日期/时间戳中提取一年中的第几天,并将其转换为整数。
extract(field, source) 从日期/时间戳或时间间隔中提取部分内容。
from_unixtime(timestamp[, format]) 将 unix epoch(1970-01-01 00:00:00 UTC)中的秒数转换为表示给定格式当前系统时区中该时刻的时间戳的字符串。
from_utc_timestamp(timestamp, tz) 支持 TIMESTAMP WITHOUT TIMEZONE 的数据库常用这个函数。
hour(col) 将给定时间戳的小时数提取为整数。
last_day(date) 返回给定日期所属月份的最后一天。
localtimestamp() 在查询评估开始时返回不带时区的当前时间戳,并作为不带时区的时间戳列处理。
make_date(year, month, day) 返回一列,其中包含从年份、月和日列生成的日期。
make_dt_interval([days, hours, mins, secs]) 构造 DayTimeIntervalType 的持续时间,来自于天、小时、分钟和秒。
make_interval([years, months, weeks, days, ...]) 运用年、月、周、天、小时、分钟和秒来创建一个时间间隔。
make_timestamp(years, months, days, hours, ...) 从年、月、天、小时、分钟、秒和时区字段创建时间戳。
make_timestamp_ltz(years, months, days, ...) 使用年、月、天、小时、分钟、秒和时区字段创建具有本地时区的当前时间戳。
make_timestamp_ntz(years, months, days, ...) 从年、月、天、小时、分钟、秒字段创建本地日期时间。
make_ym_interval([years, months]) 从年份和月份创建年月区间。
minute(col) 将给定时间戳的分钟数提取为整数。
month(col) 将给定日期/时间戳的月份提取为整数。
monthname(col) 返回给定日期中缩写为三个字母的月份名称。
months_between(date1, date2[, roundOff]) 返回日期 1 和 date2 之间的月份数。
next_day(date, dayOfWeek) 返回第一个日期,该日期晚于基于第二周日期参数的日期列的值。
now() 返回查询计算开始时的当前时间戳。
quarter(col) 提取给定日期/时间戳的季度并转换为整数。
second(col) 将给定日期的秒提取为整数。
session_window(timeColumn, gapDuration) 根据指定列的时间戳生成会话窗口。
timestamp_add(unit, quantity, ts) 通过截断分数部分获取指定单位中的时间戳之间的差异。
timestamp_diff(unit, start, end) 通过截断分数部分获取指定单位中的时间戳之间的差异。
timestamp_micros(col) 从自 UTC 纪元以来的微秒数创建 UTC 时间戳。
timestamp_millis(col) 根据 UTC 纪元以来的毫秒数创建时间戳。
timestamp_seconds(col) 将 Unix 纪元(1970-01-01T00:00:00Z)中的秒数转换为时间戳。
to_date(col[, format]) 使用可选的指定格式将列转换为 pyspark.sql.types.DateType。
to_timestamp(col[, format]) 使用可选的指定格式将列转换为 pyspark.sql.types.TimestampType。
to_timestamp_ltz(timestamp[, format]) 将时间戳的格式分析为具有时区的时间戳。
to_timestamp_ntz(timestamp[, format]) 将时间戳的格式分析为没有时区的时间戳。
to_unix_timestamp(timestamp[, format]) 返回给定时间的 UNIX 时间戳。
to_utc_timestamp(timestamp, tz) 支持 TIMESTAMP WITHOUT TIMEZONE 的数据库常用这个函数。
trunc(date, format) 返回根据格式指定的单位截断的日期。
try_make_interval([years, months, weeks, ...]) 尝试执行 make_interval 操作,但如果无法创建区间,则返回 NULL 值,而不是引发错误。
try_make_timestamp(years, months, days, ...) 尝试从年、月、天、小时、分钟、秒和时区字段创建时间戳。
try_make_timestamp_ltz(years, months, days, ...) 尝试使用年、月、日、小时、分钟、秒和时区字段创建包含本地时区的当前时间戳。
try_make_timestamp_ntz(years, months, days, ...) 尝试从年、月、天、小时、分钟、秒字段创建本地日期时间。
try_to_timestamp(col[, format]) 将具有特定格式的列解析为时间戳。
unix_date(col) 返回自 1970-01-01 以来的天数。
unix_micros(col) 返回自 1970-01-01 00:00:00 UTC 以来的微秒数。
unix_millis(col) 返回自 1970-01-01 00:00:00 UTC 以来的毫秒数。
unix_seconds(col) 返回自 1970-01-01 00:00:00 UTC 以来的秒数。
unix_timestamp([timestamp, format]) 使用默认时区和默认区域设置将具有给定模式('yyyy-MM-dd HH:mm:ss')的时间字符串转换为 Unix 时间戳(以秒为单位),如果失败,则返回 null。
weekday(col) 返回代表日期/时间戳所对应的星期几的值(0 = 星期一,1 = 星期二,...,6 = 星期日)。
weekofyear(col) 将给定日期的周数提取为整数。
window(timeColumn, windowDuration[, ...]) 根据指定列的时间戳,将行划分到一个或多个时间窗口中。
window_time(windowColumn) 从窗口列计算事件时间。
year(col) 将给定日期/时间戳的年份提取为整数。

哈希函数

功能 Description
crc32(col) 计算二进制列的循环冗余检查值(CRC32),并将该值作为 bigint 返回。
hash(*cols) 计算给定列的哈希代码,并将结果作为 int 列返回。
md5(col) 计算 MD5 摘要,并将值作为 32 个字符十六进制字符串返回。
sha(col) 返回 sha1 哈希值作为 col 的十六进制字符串。
sha1(col) 返回 SHA-1 的十六进制字符串结果。
sha2(col, numBits) 返回 SHA-2 系列哈希函数(SHA-224、SHA-256、SHA-384 和 SHA-512)的十六进制字符串结果。
xxhash64(*cols) 使用 xxHash 算法的 64 位变体计算给定列的哈希代码,并将结果作为长列返回。

集合函数

功能 Description
aggregate(col, initialValue, merge[, finish]) 将二进制运算符应用于初始状态和数组中的所有元素,并将其减少为单个状态。
array_sort(col[, comparator]) 按升序对输入数组进行排序。
cardinality(col) 返回列中存储的数组或映射的长度。
concat(*cols) 将多个输入列串联成单个列。
element_at(col, extraction) 返回给定(基于 1)索引处的数组元素。
exists(col, f) 返回数组中是否存在一个或多个元素使谓词成立。
filter(col, f) 返回一个包含满足谓词条件的元素的数组。
forall(col, f) 返回数组中每个元素是否满足谓词条件。
map_filter(col, f) 返回一个新的映射列,其键值对满足给定谓词函数。
map_zip_with(col1, col2, f) 通过将函数应用于键值对,将两个给定的映射合并到单个映射中。
reduce(col, initialValue, merge[, finish]) 将二进制运算符应用于初始状态和数组中的所有元素,并将其减少为单个状态。
reverse(col) 返回一个反向字符串或一个数组,其中包含以相反顺序排列的元素。
size(col) 返回列中存储的数组或映射的长度。
transform(col, f) 在向输入数组中的每个元素应用转换后返回元素数组。
transform_keys(col, f) 将函数应用于映射中的每个键值对,并返回一个映射,其中包含这些应用程序的结果作为对的新键。
transform_values(col, f) 将函数应用于映射中的每个键值对,并将这些应用程序的结果作为对的新值返回映射。
try_element_at(col, extraction) 返回数组中在给定(从 1 开始)索引处的元素。
zip_with(left, right, f) 使用函数将两个给定数组(以元素为单位)合并到单个数组中。

数组函数

功能 Description
array(*cols) 从输入列或列名称创建一个新的数组列。
array_append(col, value) 通过将值追加到现有数组列中,返回一个新的数组列。
array_compact(col) 从数组中删除 null 值。
array_contains(col, value) 返回一个布尔值,该值指示数组是否包含给定值:如果数组为 null,则为 null;如果数组包含给定值,则返回 true;否则返回 false。
array_distinct(col) 从数组中删除重复值。
array_except(col1, col2) 返回一个新数组,该数组包含 col1 中存在的元素,但不在 col2 中,不带重复项。
array_insert(arr, pos, value) 将一个元素插入到指定索引处的给定数组中。
array_intersect(col1, col2) 返回一个新数组,其中包含 col1 和 col2 中元素的交集,不带重复项。
array_join(col, delimiter[, null_replacement]) 通过使用分隔符连接输入数组列的元素来返回字符串列。
array_max(col) 返回数组的最大值。
array_min(col) 返回数组的最小值。
array_position(col, value) 查找给定数组中给定值的第一个匹配项的位置。
array_prepend(col, value) 返回一个数组,其中包含给定元素作为原始数组的第一个元素和其余元素。
array_remove(col, element) 从给定数组中删除等于元素的所有元素。
array_repeat(col, count) 创建一个数组,其中的列重复若干次。
array_size(col) 返回数组中的元素总数。
array_union(col1, col2) 返回一个新数组,其中包含 col1 和 col2 中元素的并集,不带重复项。
arrays_overlap(a1, a2) 返回一个布尔列,指示输入数组是否具有共同的非null元素。如果存在共同的非null元素,则返回true;如果数组没有共同元素,但数组不为空且至少一个包含null元素,则返回null;否则返回false。
arrays_zip(*cols) 返回一个合并的结构数组,其中 N 结构包含输入数组的所有 N 值。
flatten(col) 从多维数组创建一个单独的数组。
get(col, index) 给定一个基于0的索引,返回数组中该索引位置的元素。
sequence(start, stop[, step]) 从开始到停止生成整数序列,逐步递增。
shuffle(col[, seed]) 生成给定数组的随机排列。
slice(x, start, length) 通过将输入数组列从起始索引切片到特定长度来返回新的数组列。
sort_array(col[, asc]) 根据数组元素的自然顺序按升序或降序对输入数组进行排序。

结构函数

功能 Description
named_struct(*cols) 使用给定的字段名称和值创建结构。
struct(*cols) 创建新的结构列。

映射函数

功能 Description
create_map(*cols) 从偶数个输入列或列引用中创建新的映射列。
map_concat(*cols) 返回所有给定映射的并集。
map_contains_key(col, value) 如果映射表包含键,则返回 true。
map_entries(col) 返回给定映射中所有条目的无序数组。
map_from_arrays(col1, col2) 从两个数组创建新的映射。
map_from_entries(col) 将键值对项(包含两个字段的结构)的数组转换为映射。
map_keys(col) 返回包含映射键的无序数组。
map_values(col) 返回一个无序数组,其中包含映射的值。
str_to_map(text[, pairDelim, keyValueDelim]) 使用分隔符将文本拆分为键/值对后,将字符串转换为映射。

聚合函数

功能 Description
any_value(col[, ignoreNulls]) 返回一组行的一些 col 值。
approx_count_distinct(col[, rsd]) 返回一个新列,该列估计指定列或一组列中元素的近似非重复计数。
approx_percentile(col, percentage[, accuracy]) 返回数值列 col 的近似百分位,它是有序 col 值(从最小到最大排序)中的最小值,以便不超过 col 值的百分比小于该值或等于该值。
array_agg(col) 返回具有重复项的对象列表。
avg(col) 返回组中值的平均值。
bit_and(col) 返回所有非空输入值的按位 AND;如果没有非空输入值,则返回 null。
bit_or(col) 返回所有非 null 输入值的按位或运算结果,如果没有非 null 值,则返回 null。
bit_xor(col) 返回所有非 null 输入值的按位 XOR;如果没有,则返回 null。
bitmap_construct_agg(col) 返回一个位图,其中包含输入列中所有值的已设置位的位置。
bitmap_or_agg(col) 返回一个位图,该位图是通过对输入列中所有位图执行按位 OR 运算所得。
bool_and(col) 如果 col 的所有值均为 true,则返回 true。
bool_or(col) 如果至少有一个 col 值为 true,则返回 true。
collect_list(col) 将列中的值收集到一个列表中,保持重复项,并返回该对象列表。
collect_set(col) 将列中的值收集到一个集中,消除重复项,并返回这组对象。
corr(col1, col2) 返回 col1 和 col2 的皮尔逊相关系数的新列。
count(col) 返回组中的项数。
count_distinct(col, *cols) 返回一个新的列,用于非重复的 col 或 cols 计数。
count_if(col) 返回 col 的 TRUE 值数。
count_min_sketch(col, eps, confidence[, seed]) 返回具有给定 esp、置信度和种子的列的 count-min 草图。
covar_pop(col1, col2) 返回一个计算 col1 和 col2 总体协方差的新列。
covar_samp(col1, col2) 返回 col1 和 col2 样本协方差的新列。
every(col) 如果 col 的所有值均为 true,则返回 true。
first(col[, ignorenulls]) 返回组中的第一个值。
first_value(col[, ignoreNulls]) 返回一组行的第一个 col 值。
grouping(col) 指示 GROUP BY 列表中的指定列是否聚合,在结果集中,按聚合列返回 1,按未聚合列返回 0。
grouping_id(*cols) 返回分组级别,等于
histogram_numeric(col, nBins) 使用 nb bin 计算数值“col”的直方图。
hll_sketch_agg(col[, lgConfigK]) 返回使用 lgConfigK arg 配置的 Datasketches HllSketch 的可更新二进制表示形式。
hll_union_agg(col[, allowDifferentLgConfigK]) 返回 Datasketches HllSketch 的可更新二进制表示形式,该表示形式是通过 Datasketches Union 实例合并以前创建的 Datasketches HllSketch 实例生成的。
kurtosis(col) 返回组中值的峰态系数。
last(col[, ignorenulls]) 返回组中的最后一个值。
last_value(col[, ignoreNulls]) 返回一组行的最后一个 col 值。
listagg(col[, delimiter]) 返回由分隔符分隔的非 null 输入值的串联。
listagg_distinct(col[, delimiter]) 返回由分隔符分隔的不同非 null 输入值的串联。
max(col) 返回组中表达式的最大值。
max_by(col, ord) 返回与 ord 参数中的最大值关联的 col 参数中的值。
mean(col) 返回组中值的平均值。
median(col) 返回组中值的中值。
min(col) 返回组中表达式的最小值。
min_by(col, ord) 返回与 ord 参数中的最小值关联的 col 参数中的值。
mode(col[, deterministic]) 返回组中最常见的值。
percentile(col, percentage[, frequency]) 返回 expr 数字列在给定百分比位置的确切百分位数,取值范围为 [0.0, 1.0]。
percentile_approx(col, percentage[, accuracy]) 返回数值列 col 的近似百分位,它是有序 col 值(从最小到最大排序)中的最小值,以便不超过 col 值的百分比小于该值或等于该值。
product(col) 返回组中值的乘积。
regr_avgx(y, x) 返回组中非 null 对的独立变量的平均值,其中 y 是从属变量,x 是独立变量。
regr_avgy(y, x) 返回组中非 null 对的依赖变量的平均值,其中 y 是依赖变量,x 是独立变量。
regr_count(y, x) 返回组中非 null 数字对的数目,其中 y 是从属变量,x 是独立变量。
regr_intercept(y, x) 返回组中非 null 对的单变量线性回归线的截距,其中 y 是依赖变量,x 是独立变量。
regr_r2(y, x) 返回组中非 null 对的确定系数,其中 y 是依赖变量,x 是独立变量。
regr_slope(y, x) 返回组中非 null 对的线性回归线的斜率,其中 y 是依赖变量,x 是独立变量。
regr_sxx(y, x) 返回组中非 null 对的 REGR_COUNT(y, x) * VAR_POP(x),其中 y 是依赖变量,x 是独立变量。
regr_sxy(y, x) 返回组中非 null 对的 REGR_COUNT(y, x) * COVAR_POP(y, x),其中 y 是依赖变量,x 是独立变量。
regr_syy(y, x) 返回组中非 null 对的 REGR_COUNT(y, x) * VAR_POP(y),其中 y 是依赖变量,x 是独立变量。
skewness(col) 返回组中值的偏斜性。
some(col) 如果至少有一个 col 值为 true,则返回 true。
std(col) stddev_samp的别名。
stddev(col) stddev_samp的别名。
stddev_pop(col) 返回组中表达式的总体标准偏差。
stddev_samp(col) 返回组中表达式的无偏差样本标准偏差。
string_agg(col[, delimiter]) 返回由分隔符分隔的非 null 输入值的串联。
string_agg_distinct(col[, delimiter]) 返回由分隔符分隔的不同非 null 输入值的串联。
sum(col) 返回表达式中所有值的总和。
sum_distinct(col) 返回表达式中不同值的总和。
try_avg(col) 返回从组的值计算得出的平均值,结果在溢出时为 null。
try_sum(col) 返回从组的值计算得出的总和,结果在溢出时为 null。
var_pop(col) 返回组中值的总体方差。
var_samp(col) 返回组中值的无偏差样本方差。
variance(col) 对于 var_samp 的别名

窗口函数

功能 Description
cume_dist() 返回窗口分区中值的累积分布,即当前行下方的行的分数。
dense_rank() 返回窗口分区中行的顺序排名,没有任何间隙。
lag(col[, offset, default]) 返回距离当前行之前指定偏移行数的值;如果当前行之前的行数少于指定的偏移量,则返回默认值。
lead(col[, offset, default]) 返回当前行之后偏移指定行数的行的值,如果当前行之后的行数少于偏移量,则返回默认值。
nth_value(col, offset[, ignoreNulls]) 返回位于窗口框架中偏移第几行的值(从 1 开始计数),如果窗口框架的大小小于偏移行,则返回 null。
ntile(n) 返回有序窗口分区中的 ntile 组 ID(从 1 到 n 含)。
percent_rank() 返回相对排名(即
rank() 返回窗口分区中的行的排名。
row_number() 返回从窗口分区中的 1 开始的序列号。

生成器函数

功能 Description
explode(col) 返回给定数组或映射中每个元素的新行。
explode_outer(col) 返回给定数组或映射中每个元素的新行。
inline(col) 将结构数组分解为一个表。
inline_outer(col) 将结构数组分解为一个表。
posexplode(col) 返回一个新行,对应于给定数组或映射中每个元素的位置。
posexplode_outer(col) 返回一个新行,对应于给定数组或映射中每个元素的位置。
stack(*cols) 将 col1、...、colk 分隔为 n 行。

分区转换函数

功能 Description
partitioning.years(col) 用于将数据中的时间戳和日期划分为年份的转换。
partitioning.months(col) 用于将时间戳和日期的数据分区为按月份的转换。
partitioning.days(col) 一种用于时间戳和日期的转换,将数据按天分区。
partitioning.hours(col) 将时间戳分割为小时段的转换。
partitioning.bucket(numBuckets, col) 用于通过输入列的哈希对任何类型进行分区的变换。

H3 地理空间函数 (Databricks)

功能 Description
h3_boundaryasgeojson(col) 以 GeoJSON 格式返回 H3 单元格的边界
h3_boundaryaswkb(col) 以 WKB 格式返回 H3 单元格的边界
h3_boundaryaswkt(col) 以 WKT 格式返回 H3 单元格的边界
h3_centerasgeojson(col) 以 GeoJSON 格式返回 H3 单元格的中心
h3_centeraswkb(col) 以 WKB 格式返回 H3 单元格的中心
h3_centeraswkt(col) 以 WKT 格式返回 H3 单元格的中心
h3_compact(col) 尽可能多地压缩 H3 单元格 ID 的输入集
h3_coverash3(col1,col2) 返回一个由长整数表示的单元格 ID 数组,该数组对应于指定分辨率的六边形或五边形,这些六边形或五边形最小覆盖输入的线状或面状地理区域。
h3_coverash3string(col1,col2) 返回表示为字符串的单元格 ID 数组,这些字符串对应于指定分辨率的六边形或五角形,能够最小化地覆盖输入的线性或面状地理区域。
h3_distance(col1,col2) 返回两个 H3 单元格 ID 之间的网格距离
h3_h3tostring(col) 将 H3 单元格 ID 转换为十六进制格式的字符串以表示单元格 ID
h3_hexring(col1,col2) 返回一个 H3 单元格 ID 数组,该数组形成一个以原点 H3 单元格为中心、距离其网格距离为 k 的空心六边形环。
h3_ischildof(col1,col2) 如果第一个 H3 单元格 ID 是第二个 H3 单元格 ID 的子级,则返回 True
h3_ispentagon(col) 如果输入的 H3 单元格 ID 表示五边形,则返回 True
h3_isvalid(col) 如果 True 输入表示有效的 H3 单元格 ID,则返回
h3_kring(col1,col2) 输出与原始单元格 ID 在网格距离 k 内的 H3 单元格 ID。
h3_kringdistances(col1,col2) 返回与原点 H3 单元格 ID 之间的网格距离 k 内的所有 H3 单元格 ID(表示为长整数或字符串),以及它们与原点 H3 单元格 ID 之间的距离
h3_longlatash3(col1,col2,col3) 以指定的分辨率返回与提供的经度和纬度对应的 H3 单元格 ID(作为 BIGINT)
h3_longlatash3string(col1,col2,col3) 以指定的分辨率返回对应于提供的经度和纬度的 H3 单元格 ID(作为字符串)
h3_maxchild(col1,col2) 返回指定分辨率下输入 H3 单元格的最大值子单元
h3_minchild(col1,col2) 返回指定分辨率下输入 H3 单元格的最小值的子级
h3_pointash3(col1,col2) 返回与指定分辨率处提供的点对应的 H3 单元格 ID(作为 BIGINT)
h3_pointash3string(col1,col2) 返回与指定分辨率处提供的点对应的 H3 单元格 ID(作为字符串)
h3_polyfillash3(col1,col2) 返回一个以长整数表示的单元格 ID 数组,该数组对应于包含在指定分辨率的输入区域地理内的六边形或五边形。
h3_polyfillash3string(col1,col2) 返回一个由字符串表示的单元格 ID 数组,这些字符串对应于由输入地理区域包含的指定分辨率的六边形或五角形
h3_resolution(col) 返回 H3 单元格 ID 的分辨率
h3_stringtoh3(col) 将字符串表示形式 H3 单元格 ID 转换为其大整数表示形式
h3_tessellateaswkb(col1,col2) 返回一个结构数组,表示以指定分辨率覆盖地理的芯片
h3_tochildren(col1,col2) 返回指定分辨率处输入 H3 单元格 ID 的子 H3 单元格 ID
h3_toparent(col1,col2) 返回指定分辨率处输入 H3 单元格 ID 的父 H3 单元格 ID
h3_try_coverash3(col1,col2) 返回一个由长整数表示的单元格 ID 数组,该数组对应于指定分辨率的六边形或五边形,这些六边形或五边形最小覆盖输入的线状或面状地理区域。
h3_try_coverash3string(col1,col2) 返回表示为字符串的单元格 ID 数组,这些字符串对应于指定分辨率的六边形或五角形,能够最小化地覆盖输入的线性或面状地理区域。
h3_try_distance(col1,col2) 返回同一分辨率的两个 H3 单元格 ID 之间的网格距离,如果未定义则返回 None
h3_try_polyfillash3(col1,col2) 返回一个以长整数表示的单元格 ID 数组,该数组对应于包含在指定分辨率的输入区域地理内的六边形或五边形。
h3_try_polyfillash3string(col1,col2) 返回一个由字符串表示的单元格 ID 数组,这些字符串对应于由输入地理区域包含的指定分辨率的六边形或五角形
h3_try_tessellateaswkb(col1,col2) 返回一个结构数组,该结构表示以指定分辨率覆盖地理的芯片,如果几何图形无效,则返回 null
h3_try_validate(col) 如果输入值是有效的 H3 单元格,则返回它;否则返回 None。
h3_uncompact(col1,col2) 将 H3 单元格 ID 的输入集分解为指定的分辨率
h3_validate(col) 如果输入值是有效的 H3 单元格,则返回此输入值,否则抛出错误

ST 地理空间函数 (Databricks)

功能 Description
st_addpoint(col1,col2,col3) 将新点添加到输入线字符串 GeographyGeometry 中的第 n 个位置
st_area(col) 返回输入地理或几何图形的区域
st_asbinary(col1,col2) 以 WKB 格式返回输入 GeographyGeometry
st_asewkb(col1,col2) 以 EWKB 格式返回输入 Geometry
st_asewkt(col) 以 EWKT 格式返回输入 GeographyGeometry
st_asgeojson(col) 以 GeoJSON 格式返回输入 GeographyGeometry
st_astext(col) 以 WKT 格式返回输入 GeographyGeometry
st_aswkb(col1,col2) 以 WKB 格式返回输入 GeographyGeometry
st_aswkt(col) 以 WKT 格式返回输入 GeographyGeometry
st_buffer(col1,col2) 使用指定的半径返回输入几何图形的缓冲区
st_centroid(col) 返回输入几何图形的质心,并以2D点几何图形的形式表示
st_concavehull(col1,col2,col3) 使用指定的长度比率返回输入几何图形的凹凸外壳作为几何图形
st_contains(col1,col2) 返回 True 第一个几何图形是否包含第二个几何图形
st_convexhull(col) 以几何形式返回输入几何图形的凸体
st_covers(col1,col2) 如果第一个几何图形覆盖第二个几何图形,则返回True
st_difference(col1,col2) 以二维几何返回输入的两个几何体的点集差异
st_dimension(col) 返回输入几何图形的 2D 投影的拓扑维度
st_disjoint(col1,col2) 如果两个几何图形不相交,则返回True
st_distance(col1,col2) 返回两个输入几何图形之间的 2D 笛卡尔距离
st_distancesphere(col1,col2) 返回两个点几何对象之间的球体距离(以米为单位),该球体的半径是 WGS84 椭球体的平均半径。
st_distancespheroid(col1,col2) 返回 WGS84 椭圆上两个点几何图形之间的地理距离(以米为单位)
st_dwithin(col1,col2,col3) True如果两个输入几何图形之间的 2D 笛卡尔距离小于或等于输入距离,则返回
st_endpoint(col) 返回输入线串的最后一个点,或者 None 如果不存在
st_envelope(col) 以几何形式返回输入非空几何图形的 2D 笛卡尔轴对齐最小边界框(信封)
st_envelope_agg(col) 返回列中所有几何图形的信封,如果该列包含零行,返回None,或者如果该列仅包含None值,则返回None
st_equals(col1,col2) 如果两个几何图形在几何上相等,则返回True
st_exteriorring(col) 返回 输入 GeographyGeometry 值表示的多边形的外环(shell),作为线串。
st_flipcoordinates(col) 交换输入几何图形的 X 和 Y 坐标
st_geogfromgeojson(col) 分析 GeoJSON 说明并返回相应的 Geography
st_geogfromtext(col) 分析 WKT 说明并返回相应的 Geography
st_geogfromwkb(col) 分析输入 WKB 说明并返回相应的 Geography
st_geogfromwkt(col) 分析 WKT 说明并返回相应的 Geography
st_geohash(col1,col2) 返回输入 Geometry 的地理哈希码
st_geometryn(col1,col2) 返回输入多几何图形的第 n 个元素,如果不存在则返回 None
st_geometrytype(col) 以字符串形式返回输入 GeographyGeometry 值的类型
st_geomfromewkb(col) 分析输入 EWKB 说明并返回相应的 Geometry
st_geomfromgeohash(col) 以二维多边形几何结构的形式返回与输入的 geohash 值对应的 geohash 网格箱
st_geomfromgeojson(col) 分析 GeoJSON 说明并返回相应的 Geometry
st_geomfromtext(col1,col2) 分析 WKT 说明并返回相应的 Geometry
st_geomfromwkb(col1,col2) 分析输入 WKB 说明并返回相应的 Geometry
st_geomfromwkt(col1,col2) 分析 WKT 说明并返回相应的 Geometry
st_intersection(col1,col2) 将两个输入几何体的点集交集返回为 2D 几何体
st_intersects(col1,col2) 如果两个几何图形相交,则返回True
st_isempty(col) 如果输入 TrueGeometry 值不包含任何非空点,则返回
st_isvalid(col) 如果 True 输入几何图形是 OGC 意义上的有效几何图形,则返回
st_length(col) 返回输入几何图形或地理值的长度
st_m(col) 返回输入点几何图形的 M 坐标,或者 None 输入点几何图形为空或没有 M 坐标
st_makeline(col) 返回一个线字符串几何图形,该几何图形的点是几何图形的输入数组中的非空点,这些几何图形应为点、线字符串或多点
st_makepolygon(col1,col2) 从输入外部边界和内部边界的可选数组构造多边形,表示为封闭线字符串
st_multi(col) 将输入 GeographyGeometry 值作为等效的多地理空间值返回,保留原始 SRID
st_ndims(col) 返回输入 GeographyGeometry 值的坐标维度
st_npoints(col) 返回输入 GeographyGeometry 值中的非空点数
st_numgeometries(col) 返回输入几何体中的几何体数量
st_perimeter(col) 返回输入地理或几何图形的外围
st_point(col1,col2,col3) 返回具有给定 x 和 y 坐标和 SRID 值的 2D 点几何图形
st_pointfromgeohash(col) 以 2D 点几何图形的形式返回与输入 geohash 值对应的 geohash 网格框的中心点
st_pointn(col1,col2) 返回输入线字符串中基于 1 的第 n 个点,或者 None 如果它不存在
st_removepoint(col1,col2) 从输入线字符串 GeographyGeometry 中删除第 n 个点
st_reverse(col) 反转输入 GeographyGeometry 值中的顶点顺序
st_rotate(col1,col2) 按给定旋转角度围绕 Z 轴旋转输入几何图形(以弧度为单位)
st_scale(col1,col2,col3,col4) 使用给定因素缩放 X、Y 和 Z(可选)方向中的输入几何图形
st_setpoint(col1,col2,col3) 设置输入线字符串 GeographyGeometry 中的第 n 个点
st_setsrid(col1,col2) 返回一个新的 Geometry 值,其 SRID 是指定的 SRID 值
st_simplify(col1,col2) 使用 Douglas-Peucker 算法简化输入几何图形
st_srid(col) 返回输入地理空间值的 SRID
st_startpoint(col) 返回输入线字符串的第一个点,如果不存在,则返回None
st_touches(col1,col2) 如果两个几何图形触碰,则返回True
st_transform(col1,col2) 将输入几何图形的 X 和 Y 坐标转换为所提供的 SRID 值描述的坐标引用系统 (CRS)
st_translate(col1,col2,col3,col4) 使用所提供的偏移量在 X、Y 和 Z(可选)方向上平移输入几何体
st_union(col1,col2) 将两个输入几何图形的点集联合作为 2D 几何图形返回
st_union_agg(col) 返回几何列中所有几何体的逐点并集;如果该列没有任何行,或者该列中仅包含 None 的值,则返回 None
st_within(col1,col2) 当第一个几何图形在第二个几何图形内时,返回 True
st_x(col) 返回输入点几何图形的 X 坐标,或者 None 输入点几何图形为空
st_xmax(col) 返回输入几何图形的最大 X 坐标,或者 None 输入几何图形为空
st_xmin(col) 返回输入几何图形的最小 X 坐标,或者 None 输入几何图形为空
st_y(col) 返回输入点几何图形的 Y 坐标,或者 None 输入点几何图形为空
st_ymax(col) 返回输入几何图形的最大 Y 坐标,或者 None 输入几何图形为空
st_ymin(col) 返回输入几何图形的最小 Y 坐标,或者 None 输入几何图形为空
st_z(col) 返回输入点几何图形的 Z 坐标,或者 None 输入点几何图形为空或没有 Z 坐标
st_zmax(col) 返回输入几何图形的最大 Z 坐标,或者 None 输入几何图形为空或不包含 Z 坐标
st_zmin(col) 返回输入几何图形的最小 Z 坐标,或者 None 输入几何图形为空或不包含 Z 坐标
to_geography(col) 分析输入 BINARY 或字符串值并返回相应的 Geography
to_geometry(col) 分析输入 BINARY 或字符串值并返回相应的 Geometry
try_to_geography(col) 解析输入的 BINARY 或字符串值,返回相应的 Geography 值;如果输入无效,则返回 None
try_to_geometry(col) 分析输入的 BINARY 或字符串值,返回相应的 Geometry 值;如果输入无效,则返回 None

CSV 函数

功能 Description
from_csv(col, schema[, options]) 将包含 CSV 字符串的列分析为具有指定架构的行。
schema_of_csv(csv[, options]) 分析 CSV 字符串,并推断其架构(采用 DDL 格式)。
to_csv(col[, options]) 将包含 StructType 的列转换为 CSV 字符串。

JSON 函数

功能 Description
from_json(col, schema[, options]) 将包含 JSON 字符串的列解析为 MapType(以 StringType 作为键类型),或根据指定模式的 StructType 或 ArrayType。
get_json_object(col, path) 根据指定的 json 路径从 json 字符串中提取 json 对象,并返回提取的 json 对象的 json 字符串。
json_array_length(col) 返回最外部 JSON 数组中的元素数。
json_object_keys(col) 以数组形式返回最外部 JSON 对象的所有键。
json_tuple(col, *fields) 根据给定的字段名称为 json 列创建新行。
schema_of_json(json[, options]) 分析 JSON 字符串,并按 DDL 格式推断其架构。
to_json(col[, options]) 将包含 StructType、ArrayType 或 MapType 的列转换为 JSON 字符串。

Variant 函数

功能 Description
is_variant_null(v) 检查变量值是否为 null 变量。
parse_json(col) 将包含 JSON 字符串的列分析为 VariantType。
schema_of_variant(v) 以变体的 SQL 格式返回架构。
schema_of_variant_agg(v) 以变体列的 SQL 格式返回合并的架构。
try_variant_get(v, path, targetType) 根据路径从 v 中提取子变体,然后将子变体转换为 targetType。
variant_get(v, path, targetType) 根据路径从 v 中提取子变体,然后将子变体转换为 targetType。
try_parse_json(col) 将包含 JSON 字符串的列分析为 VariantType。
to_variant_object(col) 将包含嵌套输入(数组/映射/结构)的列转换为一个变体,其中映射和结构将转换为与 SQL 结构不同而无序的变体对象。

XML 函数

功能 Description
from_xml(col, schema[, options]) 将包含 XML 字符串的列分析为具有指定架构的行。
schema_of_xml(xml[, options]) 分析 XML 字符串,并按 DDL 格式推断其架构。
to_xml(col[, options]) 将包含 StructType 的列转换为 XML 字符串。
xpath(xml, path) 返回与 XPath 表达式匹配的 xml 节点中的值的字符串数组。
xpath_boolean(xml, path) 如果 XPath 表达式的计算结果为 true,或者找到匹配的节点,则返回 true。
xpath_double(xml, path) 返回一个双精度值,如果未找到匹配项,则返回值为零;如果找到了匹配项但该值是非数值,则返回 NaN。
xpath_float(xml, path) 返回一个浮点值,如果未找到匹配项,则返回值零;如果未找到匹配项,则返回 NaN,但该值为非数值。
xpath_int(xml, path) 返回整数值;如果未找到匹配项,或找到匹配项,则返回值零,但该值为非数值。
xpath_long(xml, path) 返回长整数值;如果未找到匹配项,或找到匹配项,则返回值零,但该值为非数值。
xpath_number(xml, path) 返回一个双精度值,如果未找到匹配项,则返回值为零;如果找到了匹配项但该值是非数值,则返回 NaN。
xpath_short(xml, path) 返回短整数值;如果未找到匹配项,或找到匹配项,则返回值零,但该值为非数值。
xpath_string(xml, path) 返回与 XPath 表达式匹配的第一个 xml 节点的文本内容。

URL 函数

功能 Description
parse_url(url, partToExtract[, key]) 从 URL 中提取指定部件。
try_parse_url(url, partToExtract[, key]) 尝试执行该 parse_url 操作,但如果无法执行解析,则返回 NULL 值,而不是引发错误。
url_decode(str) application/x-www-form-urlencoded 格式的 URL 编码字符串解码为其原始格式。
url_encode(str) 将字符串编码为以 'application/x-www-form-urlencoded' 格式的 URL 编码字符串。
try_url_decode(str) 尝试执行 url_decode 该作,但如果无法执行解码,则返回 NULL 值,而不是引发错误。

其他功能

功能 Description
aes_decrypt(input, key[, mode, padding, aad]) 使用 AES 的一种操作模式和填充对输入值进行解密并返回解密结果。
aes_encrypt(input, key[, mode, padding, iv, aad]) 在给定模式下使用具有指定填充的 AES 返回输入的加密值。
assert_true(col[, errMsg]) 如果输入列为 true,则返回 null;否则会引发异常,并显示提供的错误消息。
bitmap_bit_position(col) 返回给定输入列的位位置。
bitmap_bucket_number(col) 返回给定输入列的存储桶号。
bitmap_count(col) 返回输入位图中的设置位数。
current_catalog() 返回当前目录。
current_database() 返回当前数据库。
current_schema() 返回当前架构。
current_user() 返回当前用户。
hll_sketch_estimate(col) 返回给定 Datasketches HllSketch 的二进制表示形式的估计唯一值数。
hll_union(col1, col2[, allowDifferentLgConfigK]) 使用 Datasketches Union 对象合并 Datasketches HllSketch 对象的两个二进制表示形式。
input_file_block_length() 返回正在读取的块的长度,或者返回 -1(如果不可用)。
input_file_block_start() 返回正在读取的块的起始偏移量,或者返回 -1(如果不可用)。
input_file_name() 为当前 Spark 任务的文件名创建字符串列。
java_method(*cols) 使用反射调用方法。
monotonically_increasing_id() 生成单调递增 64 位整数的列。
raise_error(errMsg) 抛出包含提供的错误消息的异常。
reflect(*cols) 使用反射调用方法。
session_user() 返回当前执行上下文的用户名。
spark_partition_id() 用于分区 ID 的列。
try_aes_decrypt(input, key[, mode, padding, aad]) 尝试执行该 aes_decrypt 作,但如果无法执行解密,则返回 NULL 值,而不是引发错误。
try_reflect(*cols) 尝试执行 reflect 操作,但如果调用方法抛出异常,则返回 NULL 值,而不是引发错误。
typeof(col) 为输入的数据类型返回 DDL 格式的类型字符串。
user() 返回当前用户。
version() 返回 Spark 版本。

UDF、UDTF、UDT 函数

功能 Description
call_udf(udfName, *cols) 调用用户定义的函数。
pandas_udf([f, returnType, functionType]) 创建一个 pandas 用户自定义函数(即
udf([f, returnType, useArrow]) 创建用户定义的函数(UDF)。
udtf([cls, returnType, useArrow]) 创建用户定义的表函数(UDTF)。
unwrap_udt(col) 将 UDT 数据类型列解包到其基础类型。

表值函数

功能 Description
TableValuedFunction.collations() 获取所有 Spark SQL 字符串排序规则。
TableValuedFunction.explode(collection) 返回一个数据帧,其中包含给定数组或映射中每个元素的新行。
TableValuedFunction.explode_outer(collection) 返回一个数据帧,其中为给定数组或映射中的每个元素按其位置生成新行。
TableValuedFunction.inline(input) 将结构数组分解为一个表。
TableValuedFunction.inline_outer(input) 将结构数组分解为一个表。
TableValuedFunction.json_tuple(input, *fields) 根据给定的字段名称为 json 列创建新行。
TableValuedFunction.posexplode(collection) 返回一个数据帧,其中为给定数组或映射中的每个元素按其位置生成新行。
TableValuedFunction.posexplode_outer(collection) 返回一个数据帧,其中为给定数组或映射中的每个元素按其位置生成新行。
TableValuedFunction.range(start[, end, ...]) 使用单个 pyspark.sql.types.LongType 列创建 DataFrame,其中包含从开始到结尾(独占)和步骤值步骤的范围中的元素。
TableValuedFunction.sql_keywords() 获取 Spark SQL 关键字。
TableValuedFunction.stack(n, *fields) 将 col1、...、colk 分隔为 n 行。
TableValuedFunction.variant_explode(input) 将变量对象/数组分隔为包含其字段/元素的多个行。
TableValuedFunction.variant_explode_outer(input) 将变量对象/数组分隔为包含其字段/元素的多个行。