返回一个新数组,其中包含 col1 和 col2 中元素的并集,不带重复项。
Syntax
from pyspark.sql import functions as sf
sf.array_union(col1, col2)
参数
| 参数 | 类型 | Description |
|---|---|---|
col1 |
pyspark.sql.Column 或 str |
包含第一个数组的列的名称。 |
col2 |
pyspark.sql.Column 或 str |
包含第二个数组的列的名称。 |
退货
pyspark.sql.Column:包含 col1 和 col2 中元素的并集的新数组。
例子
示例 1:基本用法
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["b", "a", "c"], c2=["c", "d", "a", "f"])])
df.select(sf.sort_array(sf.array_union(df.c1, df.c2))).show()
+-------------------------------------+
|sort_array(array_union(c1, c2), true)|
+-------------------------------------+
| [a, b, c, d, f]|
+-------------------------------------+
示例 2:没有常见元素的联合
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["b", "a", "c"], c2=["d", "e", "f"])])
df.select(sf.sort_array(sf.array_union(df.c1, df.c2))).show()
+-------------------------------------+
|sort_array(array_union(c1, c2), true)|
+-------------------------------------+
| [a, b, c, d, e, f]|
+-------------------------------------+
示例 3:与所有常见元素联合
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["a", "b", "c"], c2=["a", "b", "c"])])
df.select(sf.sort_array(sf.array_union(df.c1, df.c2))).show()
+-------------------------------------+
|sort_array(array_union(c1, c2), true)|
+-------------------------------------+
| [a, b, c]|
+-------------------------------------+
示例 4:与 null 值的联合
from pyspark.sql import Row, functions as sf
df = spark.createDataFrame([Row(c1=["a", "b", None], c2=["a", None, "c"])])
df.select(sf.sort_array(sf.array_union(df.c1, df.c2))).show()
+-------------------------------------+
|sort_array(array_union(c1, c2), true)|
+-------------------------------------+
| [NULL, a, b, c]|
+-------------------------------------+
示例 5:包含空数组的联合
from pyspark.sql import Row, functions as sf
from pyspark.sql.types import ArrayType, StringType, StructField, StructType
data = [Row(c1=[], c2=["a", "b", "c"])]
schema = StructType([
StructField("c1", ArrayType(StringType()), True),
StructField("c2", ArrayType(StringType()), True)
])
df = spark.createDataFrame(data, schema)
df.select(sf.sort_array(sf.array_union(df.c1, df.c2))).show()
+-------------------------------------+
|sort_array(array_union(c1, c2), true)|
+-------------------------------------+
| [a, b, c]|
+-------------------------------------+