通过


array_agg

返回具有重复项的对象列表。

Syntax

from pyspark.sql import functions as sf

sf.array_agg(col)

参数

参数 类型 Description
col pyspark.sql.Column 或列名 要计算的目标列。

退货

pyspark.sql.Column:具有重复项的对象列表。

例子

示例 1:对 int 列使用 array_agg 函数

from pyspark.sql import functions as sf
df = spark.createDataFrame([[1],[1],[2]], ["c"])
df.agg(sf.sort_array(sf.array_agg('c')).alias('sorted_list')).show()
+-----------+
|sorted_list|
+-----------+
|  [1, 1, 2]|
+-----------+

示例 2:对字符串列使用 array_agg 函数

from pyspark.sql import functions as sf
df = spark.createDataFrame([["apple"],["apple"],["banana"]], ["c"])
df.agg(sf.sort_array(sf.array_agg('c')).alias('sorted_list')).show(truncate=False)
+----------------------+
|sorted_list           |
+----------------------+
|[apple, apple, banana]|
+----------------------+

示例 3:对具有 null 值的列使用 array_agg 函数

from pyspark.sql import functions as sf
df = spark.createDataFrame([[1],[None],[2]], ["c"])
df.agg(sf.sort_array(sf.array_agg('c')).alias('sorted_list')).show()
+-----------+
|sorted_list|
+-----------+
|     [1, 2]|
+-----------+

示例 4:对数据类型不同的列使用 array_agg 函数

from pyspark.sql import functions as sf
df = spark.createDataFrame([[1],["apple"],[2]], ["c"])
df.agg(sf.sort_array(sf.array_agg('c')).alias('sorted_list')).show()
+-------------+
|  sorted_list|
+-------------+
|[1, 2, apple]|
+-------------+