集合函數:將輸入陣列按升序排序。 輸入陣列的元素必須是可排序的。 空元素會放在回傳陣列的末尾。 支援 Spark Connect。
關於對應的 Databricks SQL 函式,請參見 array_sort 函數。
語法
from pyspark.databricks.sql import functions as dbf
dbf.array_sort(col=<col>, comparator=<comparator>)
參數
| 參數 | 類型 | Description |
|---|---|---|
col |
pyspark.sql.Column 或 str |
欄位名稱或表達式名稱。 |
comparator |
callable可選的 |
一個二元函數若第一個元素回傳負整數、0 或正整數,則小於、等於或大於第二個元素。 如果比較器函式回傳 null,函式將失敗並產生錯誤。 |
退貨
pyspark.sql.Column: 已排序陣列。
範例
範例 1:以預設的升序排序陣列
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([([2, 1, None, 3],),([1],),([],)], ['data'])
df.select(dbf.array_sort(df.data).alias('r')).collect()
[Row(r=[1, 2, 3, None]), Row(r=[1]), Row(r=[])]
範例 2:使用自訂比較器排序陣列
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(["foo", "foobar", None, "bar"],),(["foo"],),([],)], ['data'])
df.select(dbf.array_sort(
"data",
lambda x, y: dbf.when(x.isNull() | y.isNull(), dbf.lit(0)).otherwise(dbf.length(y) - dbf.length(x))
).alias("r")).collect()
[Row(r=['foobar', 'foo', None, 'bar']), Row(r=['foo']), Row(r=[])]