共用方式為


PySpark 函式

本頁提供 Databricks 上可用的 PySpark SQL 函式清單,並連結至相應的參考文件。

正規函數

功能 Description
broadcast(df) 將資料框架標記為足夠小,適用於廣播連接。
call_function(funcName, *cols) 呼叫一個 SQL 函式。
col(col) 根據給定的欄位名稱回傳一個欄位。
column(col) 根據給定的欄位名稱回傳一個欄位。
lit(col) 產生一個具有實質價值的欄位。
expr(str) 解析表達式字串到它所代表的欄位

條件式函式

功能 Description
coalesce(*cols) 回傳第一個非空欄位。
ifnull(col1, col2) 若 col1 為空,則回傳 col2,否則回傳 col1。
nanvl(col1, col2) 如果不是NaN,則回傳col1;如果col1是NaN,則回傳col2。
nullif(col1, col2) 若 col1 等於 col2,則回傳 null,否則 col1。
nullifzero(col) 若 col 等於零,則返回 null,否則返回 col。
nvl(col1, col2) 若 col1 為空,則回傳 col2,否則回傳 col1。
nvl2(col1, col2, col3) 若 col1 非空,則回傳 col2;否則回傳 col3。
when(condition, value) 評估一份條件清單,並傳回多個可能的結果運算式之一。
zeroifnull(col) 若 col 為空,則回傳 0;否則回傳 col。

模式匹配功能

功能 Description
equal_null(col1, col2) 對於非空運算元,回傳與 EQUAL(=) 運算子相同的結果,但若兩者皆為空,則回傳真;若其中一為空,則為假。
ilike(str, pattern[, escapeChar]) 若 str 與 escape 無區分大小寫的模式相符,則回傳真;若任何參數為空,則回傳 null;否則回傳 false。
isnan(col) 判斷欄位是否為 NaN 的運算式,若為真則回傳 true。
isnotnull(col) 若 col 非空,則返回真,否則為假。
isnull(col) 若欄位為空,則回傳為真的表達式。
like(str, pattern[, escapeChar]) 若 str 與 escape 模式相符,則回傳 true;若任何參數為空,則回傳 null;否則回傳 false。
regexp(str, regexp) 如果 str 與 Java 正則表達式相符,則回傳 true;否則回傳 false。
regexp_like(str, regexp) 如果 str 與 Java 正則表達式相符,則回傳 true;否則回傳 false。
rlike(str, regexp) 如果 str 與 Java 正則表達式相符,則回傳 true;否則回傳 false。

排序函數

功能 Description
asc(col) 會回傳目標欄位的排序表達式,依序由高到低。
asc_nulls_first(col) 回傳依據給定欄位名稱由低到高排序的排序表達式,且在非空值之前回傳 null 值。
asc_nulls_last(col) 回傳一個基於欄位名稱遞增順序的排序表達式,非空值之後會出現空值。
desc(col) 會回傳目標欄位的排序運算式,依降序排列。
desc_nulls_first(col) 回傳基於欄位名稱由低至低排序的排序表達式,且空值出現在非空值之前。
desc_nulls_last(col) 回傳一個基於欄位名稱遞減順序的排序運算式,非空值後方會出現空值。

數學函式

功能 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]) 若比例 >大於或等於 0,則使用 HALF_EVEN 四捨五入模式將給定值四捨五入至小數位數;若比例 <小於 0,則在整數部分四捨五入。
cbrt(col) 計算給定值的立方根。
ceil(col[, scale]) 計算給定值的上限。
ceiling(col[, scale]) 計算給定值的上限。
conv(col, fromBase, toBase) 將字串欄位中的數字從一個底數轉換成另一個底數。
cos(col) 計算輸入欄位的餘弦值。
cosh(col) 計算輸入列的雙曲餘弦。
cot(col) 計算輸入欄位的餘切線。
csc(col) 計算輸入欄的餘割。
degrees(col) 將以弧度計算的角度轉換為以度為單位的近似等效角度。
e() 回傳歐拉數。
exp(col) 計算給定值的指數。
expm1(col) 計算給定值減一的指數。
factorial(col) 計算給定值的階乘。
floor(col[, scale]) 計算給定值的底線。
greatest(*cols) 回傳欄位名稱清單中最大值,跳過空值。
hex(col) 計算給定欄位的十六進位值,該欄位可以是 StringTypeBinaryTypeIntegerTypeLongType
hypot(col1, col2) 計算sqrt(a^2 + b^2)時,沒有發生中間溢位或下溢位。
least(*cols) 回傳欄位名稱清單中最小值,跳過空值。
ln(col) 返回論元的自然對數。
log(arg1[, arg2]) 回傳第二個參數以第一個參數為底的對數。
log10(col) 計算給定值的以10為底的對數。
log1p(col) 計算給定值加一的自然對數。
log2(col) 回傳該參數的底數為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]) 若小數位數 >= 0,則使用HALF_UP四捨五入模式將給定值四捨五入至指定的小數位數;若小數位數 < 0,則在整數部分進行四捨五入。
sec(col) 計算輸入欄位的正割。
sign(col) 計算給定值的符號。
signum(col) 計算給定值的符號。
sin(col) 計算輸入欄位的正弦值。
sinh(col) 計算輸入欄位的雙曲正弦。
sqrt(col) 計算指定浮點數值的平方根。
tan(col) 計算輸入欄位的切線。
tanh(col) 計算輸入欄位的雙曲切線。
try_add(left, right) 回傳左與右的總和,溢位時結果為零。
try_divide(left, right) 返回股息/除數。
try_mod(left, right) 扣除股息或除數後,還清剩餘部分。
try_multiply(left, right) 回傳左側乘以右側,若溢位則結果為null。
try_subtract(left, right) 回傳左減右的結果,若溢位則結果為空值。
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]) 移除字串前方和後方的修剪字符。
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-ASCII(其中 、 ISO-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) 找出 substr 欄位在給定字串中首次出現的位置。
is_valid_utf8(str) 若輸入為有效的 UTF-8 字串,則回傳 true;否則回傳 false。
lcase(str) 返回的字串中所有字元都轉換為小寫。
left(str, len) 從字串 str 回傳最左邊的 len(len 可為字串類型)字元,若 len 小於或等於 0,則為空字串。
length(col) 計算字串資料的字元長度或二進位資料的位元組數。
levenshtein(left, right[, threshold]) 計算兩條給定弦的列文斯坦距離。
locate(substr, str[, pos]) 在 position pos 之後,找出字串欄位中 substr 首次出現的位置。
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]) 從位置 start 開始後,回傳 str 中 substr 首次出現的位置。
printf(format, *cols) 以 printf 風格格式化參數,並以字串欄位回傳結果。
randstr(length[, seed]) 回傳一個指定長度的字串,其字元均勻隨機選自以下字元池:0-9、a-z、A-Z。
regexp_count(str, regexp) 回傳 Java 正則表達式模式在字串 str 中被匹配的次數。
regexp_extract(str, pattern, idx) 從指定的字串欄位中,擷取與 Java 正則表達式匹配的特定群組。
regexp_extract_all(str, regexp[, idx]) 擷取 str 中所有符合 Java 正則表達式且對應正則表達式群組的索引的字串。
regexp_instr(str, regexp[, idx]) 回傳 str 中第一個與 Java 正則表達式相符的子字串的位置及其對應的正則表達式群組索引。
regexp_replace(string, pattern, replacement) 將指定字串值中所有與正則表達式相符的子字串替換為新的內容。
regexp_substr(str, regexp) 返回字串 str 中第一個符合 Java 正則表達式 regexp 的子字串。
repeat(col, n) 重複一個字串欄位 n 次,並以新的字串欄位回傳。
replace(src, search[, replace]) 將所有搜尋到的條目替換為指定的內容。
right(str, len) 回傳字串 str 中最右邊的 len(len 可為字串類型)字元,若 len 小於或等於 0,則為空字串。
rpad(col, len, pad) 將字串欄位右側填充至指定寬度。
rtrim(col[, trim]) 從右端去除指定字串值的空格。
sentences(string[, language, country]) 將字串拆分成多個句子陣列,每個句子是一個詞彙陣列。
soundex(col) 回傳一個字串的 SoundEx 編碼
split(str, pattern[, limit]) 將字串按照指定模式的匹配進行分割。
split_part(src, delimiter, partNum) 將 str 以分隔符分割,並返回所請求的分割部分(從 1 開始計數)。
startswith(str, prefix) 傳回布林值。
substr(str, pos[, len]) 回傳從pos開始且長度為len的str子串,或從pos開始且長度為len的位元組陣列切片。
substring(str, pos, len) 當 str 為 String 類型時,子串從 pos 開始,長度為 len;而當 str 為二進位型時,則回傳從 pos 開始且長度為 len 的位元組陣列切片。
substring_index(str, delim, count) 回傳字串 str 中在分隔符 delim 出現次數達到 count 之前的子字串。
to_binary(col[, format]) 根據所提供格式,將輸入 col 轉換為二進位值。
to_char(col, format) 根據格式將 col 轉換成字串。
to_number(col, format) 將字串「col」根據字串格式「format」轉換為數字。
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) 回傳將所有字元轉換為大寫的字串。
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) 將無時區 sourceT 的時間戳從 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年1月1日起的天數建立日期。
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 紀元(1970-01-01 00:00:00 UTC)的秒數轉換為代表該系統時區該時刻時間戳記的字串,並以該格式呈現。
from_utc_timestamp(timestamp, tz) 這是支援 TIMESTAMP 且不 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與日期2之間的月份數。
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紀元以來的微秒數產生時間戳記。
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 且不 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]) 解析 col 與格式並標註時間戳記。
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),並以大整數形式回傳。
hash(*cols) 計算給定欄位的雜湊碼,並以整數欄位回傳結果。
md5(col) 計算 MD5 摘要,並回傳 32 字元十六進位字串的值。
sha(col) 回傳 col 的 sha1 雜湊值,並以十六進位字串形式顯示。
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) 透過在現有陣列 col 上附加值,回傳新的陣列欄位。
array_compact(col) 移除陣列中的空值。
array_contains(col, value) 回傳一個布林值,表示陣列是否包含給定值:若陣列為空,則為 True;若陣列包含該值,則為 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;否則為假。
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) 若映射包含 鍵,則回傳為真。
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 結果,若沒有非空輸入值則回傳空值。
bit_or(col) 回傳所有不為空輸入值的按位或,若沒有則回傳空值。
bit_xor(col) 回傳所有非空值的位元運算 XOR 結果;若無非空值則回傳空值。
bitmap_construct_agg(col) 回傳一個位元位置圖,這些位元是從輸入欄位的所有值中設定出來的。
bitmap_or_agg(col) 回傳一個位圖,此位圖是輸入欄位中的所有位圖進行位元 OR 運算的結果。
bool_and(col) 如果所有 col 值都為真,則會回傳 true。
bool_or(col) 若至少有一個col值為真,則會回傳為真。
collect_list(col) 將欄位中的值收集成清單,維持重複值,並回傳此物件清單。
collect_set(col) 將欄位的值收集成集合,消除重複,並回傳這組物件。
corr(col1, col2) 回傳 col1 與 col2 的 Pearson 相關係數新欄位。
count(col) 傳回群組中的項目數。
count_distinct(col, *cols) 回傳新的欄位以獲取欄位或欄位組的不同計數。
count_if(col) 回傳該山坳的真實值數量。
count_min_sketch(col, eps, confidence[, seed]) 回傳欄位的計數最小草圖,包含給定的 ESP、信心度和種子。
covar_pop(col1, col2) 回傳一個新的欄位,用於表示 col1 和 col2 之間的族群協方差。
covar_samp(col1, col2) 回傳一個新的欄位,以計算 col1 與 col2 的樣本協變性。
every(col) 如果所有 col 值都為真,則會回傳 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 參數配置的可更新 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]) 回傳非空輸入值的串接,並以分隔符分隔。
listagg_distinct(col[, delimiter]) 回傳由分隔符分隔的不同非空輸入值的串接。
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]) 回傳數值欄位表達式在指定百分比下的精確百分位數,值範圍為 [0.0, 1.0]。
percentile_approx(col, percentage[, accuracy]) 回傳數值欄位 col 的近似百分位數,該欄位為排序的 col 值中最小值(由最小到最大排序),且 col 值中不超過該值的百分比。
product(col) 回傳群組中各值的乘積。
regr_avgx(y, x) 回傳組中非空對自變數的平均值,在其中 y 為依變數,x 為自變數。
regr_avgy(y, x) 回傳群組中非空對的因變數平均值,其中 y 為依變數,x 為自變數。
regr_count(y, x) 回傳一組中非零數對的數量,其中 y 為依變數,x 為自變數。
regr_intercept(y, x) 回傳在一組資料中非空值對的單變量線性迴歸線截距,其中 y 為依變數,x 為自變數。
regr_r2(y, x) 回傳群組中非空對的決定係數,其中 y 為依變數,x 為自變數。
regr_slope(y, x) 回傳一組中非空值組的線性回歸線斜率,其中 y 為依變數,x 為自變數。
regr_sxx(y, x) 對於群中非零對,回傳 REGR_COUNT(y, x) * VAR_POP(x),其中 y 為依變數,x 為自變數。
regr_sxy(y, x) 對於群中非零對,回傳 REGR_COUNT(y, x) * COVAR_POP(y, x),其中 y 為依變數,x 為自變數。
regr_syy(y, x) 對於群中非零對,回傳 REGR_COUNT(y, x) * VAR_POP(y) ,其中 y 為依變數,x 為自變數。
skewness(col) 回傳群組中值的偏態。
some(col) 若至少有一個col值為真,則會回傳為真。
std(col) stddev_samp 的別名。
stddev(col) stddev_samp 的別名。
stddev_pop(col) 回傳群體中表達式的母體標準差值。
stddev_samp(col) 回傳該組中表達式的無偏樣本標準差。
string_agg(col[, delimiter]) 回傳非空輸入值的串接,並以分隔符分隔。
string_agg_distinct(col[, delimiter]) 回傳由分隔符分隔的不同非空輸入值的串接。
sum(col) 回傳表達式中所有值的總和。
sum_distinct(col) 回傳表達式中不同值的總和。
try_avg(col) 回傳從群組值計算出的平均值,結果在溢位時為零。
try_sum(col) 回傳從群組值計算出的總和,溢位時結果為零。
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 列偏移數值(從 1 開始計),若視窗框架大小小於偏移列數,則為空值。
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) 回傳 H3 儲存格的邊界,格式為 GeoJSON 格式
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 cell ID 之間的網格距離
h3_h3tostring(col) 將 H3 儲存格 ID 轉換為表示該 ID 的十六進位字串
h3_hexring(col1,col2) 回傳一個包含H3單元格ID的陣列,這些單元格形成一個以原點H3單元格為中心的空心六角形環,且與原點H3單元格的網格距離為k。
h3_ischildof(col1,col2) 如果第一個 H3 cell ID 是第二個 H3 cell ID 的子節點,則會回傳True
h3_ispentagon(col) 若輸入 H3 cell ID 代表五邊形,則回傳True
h3_isvalid(col) 若輸入表示有效的 H3 單元 ID,則回傳True
h3_kring(col1,col2) 回傳距離為 k 的起始單元格 ID 範圍內的 H3 單元格 ID
h3_kringdistances(col1,col2) 回傳所有距離原 H3 格點 ID k 內的 H3 cell ID(以長整數或字串表示),並返回它們與原 H3 格點 ID 的距離
h3_longlatash3(col1,col2,col3) 回傳 H3 單元 ID(以 BIINT 形式),對應指定解析度下的經度與緯度
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 cell ID(字串)
h3_polyfillash3(col1,col2) 回傳一組以長整數表示的單元 ID 陣列,對應於輸入區域地理所包含的指定解析度的六角形或五邊形
h3_polyfillash3string(col1,col2) 回傳一個以字串表示的格子 ID 陣列,對應於指定解析度的六角形或五邊形,這些 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 cell ID 的父 H3 cell 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 陣列,對應於指定解析度的六角形或五邊形,這些 ID 由輸入的區域地理所包含
h3_try_tessellateaswkb(col1,col2) 回傳一個結構體陣列,表示在指定解析度下覆蓋地理的晶片,若幾何無效則為空
h3_try_validate(col) 若輸入值為有效 H3 儲存格則回傳;否則為 None
h3_uncompact(col1,col2) 將輸入的 H3 單元 ID 解壓縮至指定解析度
h3_validate(col) 若輸入值為有效 H3 單元則回傳,否則會出錯

ST 地理空間函數(Databricks)

功能 Description
st_addpoint(col1,col2,col3) 在輸入線串 地理幾何中第 n 個位置新增一個點
st_area(col) 回傳輸入的地理或幾何的面積
st_asbinary(col1,col2) 回傳輸入的 地理幾何 值,格式為 WKB 格式
st_asewkb(col1,col2) 回傳以 EWKB 格式的輸入 幾何
st_asewkt(col) 回傳輸入的 地理幾何 值,以 EWKT 格式呈現
st_asgeojson(col) 回傳輸入的 地理幾何 值,格式為 GeoJSON 格式
st_astext(col) 回傳輸入的 地理幾何 值,為 WKT 格式
st_aswkb(col1,col2) 回傳輸入的 地理幾何 值,格式為 WKB 格式
st_aswkt(col) 回傳輸入的 地理幾何 值,為 WKT 格式
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) 回傳兩個輸入幾何體中不同的點集,作為 2D 幾何體
st_dimension(col) 傳回輸入幾何圖形的二維投影之拓撲維度
st_disjoint(col1,col2) 若兩個幾何不相交,則返回True
st_distance(col1,col2) 回傳兩個輸入幾何體之間的二維笛卡爾距離
st_distancesphere(col1,col2) 回傳兩個點幾何形狀間的球面距離(以公尺計),測量於半徑為 WGS84 橢球體平均半徑的球面上
st_distancespheroid(col1,col2) 回傳 WGS84 橢球體上兩點幾何體間的測地線距離(以公尺為單位)
st_dwithin(col1,col2,col3) 若兩個輸入幾何體之間的二維笛卡兒距離小於或等於輸入距離,則返回True
st_endpoint(col) 回傳輸入線串的最後一個點,或 None 如果不存在該點
st_envelope(col) 回傳輸入非空幾何的二維笛卡兒軸對齊最小邊界框(包絡線),作為幾何形狀
st_envelope_agg(col) 回傳欄位中所有幾何圖形的包絡,若欄位沒有行,或只包含 None 值,則回傳 None
st_equals(col1,col2) 若兩個幾何形狀幾何相等,則返回True
st_exteriorring(col) 回傳外環(殼層),以線條形式呈現輸入 的地理幾何 值,代表一個多邊形
st_flipcoordinates(col) 交換輸入幾何體的 X 與 Y 座標
st_geogfromgeojson(col) 解析 GeoJSON 描述並回傳對應的 地理
st_geogfromtext(col) 解析 WKT 描述並回傳對應的 地理
st_geogfromwkb(col) 解析輸入的 WKB 描述並回傳對應的 地理
st_geogfromwkt(col) 解析 WKT 描述並回傳對應的 地理
st_geohash(col1,col2) 回傳輸入Geometry的 geohash 值
st_geometryn(col1,col2) 回傳以 1 為基礎的第 n 個輸入多重幾何元素,若不存在則回傳None
st_geometrytype(col) 回傳輸入 GeographyGeometry 值的型別,作為字串
st_geomfromewkb(col) 解析輸入的 EWKB 描述並回傳對應的 幾何
st_geomfromgeohash(col) 回傳對應輸入地理雜湊值的網格框,作為二維多邊形幾何體
st_geomfromgeojson(col) 解析 GeoJSON 描述並回傳對應 的幾何
st_geomfromtext(col1,col2) 解析 WKT 描述並回傳相應的 幾何
st_geomfromwkb(col1,col2) 解析輸入的 WKB 描述並回傳對應的 幾何
st_geomfromwkt(col1,col2) 解析 WKT 描述並回傳相應的 幾何
st_intersection(col1,col2) 將兩個輸入幾何體的點集交集回傳為二維幾何體
st_intersects(col1,col2) 若兩個幾何相交,則返回True
st_isempty(col) 若輸入的True幾何值不包含任何非空點,則回傳
st_isvalid(col) 若輸入幾何體在 OGC 意義上是有效幾何,則回傳True
st_length(col) 輸出輸入的幾何或地理值的長度
st_m(col) 回傳輸入點幾何的 M 座標,或 None 當輸入點幾何為空或沒有 M 座標時
st_makeline(col) 回傳一個線條幾何體,其點為輸入幾何陣列中非空的點,這些幾何體預期為點、線串或多點
st_makepolygon(col1,col2) 從輸入的外部邊界及可選的內邊界陣列(以閉線串表示)構造一個多邊形
st_multi(col) 回傳輸入的地理資料幾何資料為等效的多重地理空間資料,保留原始 SRID
st_ndims(col) 回傳輸入 地理幾何 值的座標維度
st_npoints(col) 回傳輸入 地理幾何 值中非空點數的數量
st_numgeometries(col) 回傳輸入幾何體中的幾何體數量
st_perimeter(col) 回傳輸入地理資料或幾何資料的周長
st_point(col1,col2,col3) 回傳一個二維點 幾何, 包含給定的 x 和 y 座標及 SRID 值
st_pointfromgeohash(col) 回傳對應輸入地理雜湊值的地哈希格網格中心點,作為二維點幾何
st_pointn(col1,col2) 回傳輸入線串中以 1 為基礎的第 n 點,如果不存在,則回傳None
st_removepoint(col1,col2) 從輸入線串 地理幾何中移除第 n 點
st_reverse(col) 將輸入的 地理幾何 值中頂點的順序反轉
st_rotate(col1,col2) 將輸入的幾何圖形繞 Z 軸以給定的旋轉角度(以弧度為單位)旋轉
st_scale(col1,col2,col3,col4) 利用給定的縮放因子對輸入幾何形狀的 X、Y 方向,以及可選的 Z 方向進行縮放。
st_setpoint(col1,col2,col3) 設定輸入線串 地理幾何中的第 n 個點
st_setsrid(col1,col2) 回傳一個新的 幾何 值,其 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) 回傳兩個輸入幾何體的點集聯集,並以二維幾何體呈現。
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 座標;若輸入幾何體為空或不包含 Z 座標,則回傳 None
to_geography(col) 解析輸入的二進位或字串值,並回傳對應的 地理
to_geometry(col) 解析輸入的二進位或字串值,並回傳對應的 幾何
try_to_geography(col) 解析輸入的二進位或字串值,並回傳對應的 地理 值;若輸入無效,則回傳 None
try_to_geometry(col) 解析輸入的二進位或字串值,並回傳對應的 幾何 值,或 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,並使用指定的 schema。
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 字串。

變體功能

功能 Description
is_variant_null(v) 檢查變體值是否為變體空值。
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。
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]) 從網址中擷取指定的部分。
try_parse_url(url, partToExtract[, key]) 嘗試執行 parse_url 操作,但若無法解析,則回傳 NULL 值,而非拋出錯誤。
url_decode(str) 將 URL 編碼的字串 application/x-www-form-urlencoded 解碼為原始格式。
url_encode(str) 將字串編碼成 URL 編碼的字串,格式為 'application/x-www-form-urlencoded'。
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]) 若輸入欄位為真,則回傳 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 HllSketch 物件的二進位表示,使用 Datasketches Union 物件。
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,但如果 invoke 方法拋出例外,則回傳 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) 回傳一個 DataFrame,其中每個給定陣列或映射內的元素都有一個新行。
TableValuedFunction.explode_outer(collection) 回傳一個 DataFrame,其中包含在指定陣列或映射表中每個元素對應位置的新列。
TableValuedFunction.inline(input) 將結構陣列分解成數據表。
TableValuedFunction.inline_outer(input) 將結構陣列分解成數據表。
TableValuedFunction.json_tuple(input, *fields) 根據給定的欄位名稱,為 JSON 資料表中的某一欄建立一列新資料。
TableValuedFunction.posexplode(collection) 回傳一個 DataFrame,其中包含在指定陣列或映射表中每個元素對應位置的新列。
TableValuedFunction.posexplode_outer(collection) 回傳一個 DataFrame,其中包含在指定陣列或映射表中每個元素對應位置的新列。
TableValuedFunction.range(start[, end, ...]) 建立一個 DataFrame,包含單一名為 id 的 pyspark.sql.types.LongType 欄位,包含從開始到結束(排他)範圍內的元素,並以步數值步驟為單位。
TableValuedFunction.sql_keywords() 取得 Spark SQL 關鍵字。
TableValuedFunction.stack(n, *fields) 將col1、...、colk排列成n行。
TableValuedFunction.variant_explode(input) 將變體物件/陣列拆分成多列,包含其欄位/元素。
TableValuedFunction.variant_explode_outer(input) 將變體物件/陣列拆分成多列,包含其欄位/元素。