通过


array_sort

集合函数:按升序对输入数组进行排序。 输入数组的元素必须可排序。 Null 元素将放置在返回的数组的末尾。 支持 Spark Connect。

有关相应的 Databricks SQL 函数,请参阅 array_sort 函数

Syntax

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=[])]