共用方式為


array_sort

集合函數:將輸入陣列按升序排序。 輸入陣列的元素必須是可排序的。 空元素會放在回傳陣列的末尾。 支援 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.Columnstr 欄位名稱或表達式名稱。
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=[])]