集合函数:按升序对输入数组进行排序。 输入数组的元素必须可排序。 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.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=[])]