我正在使用spark 3.4版本,创建了一个下面的数据框
df.show()
ID --> 字符串 输出 ---> 布尔值
ID output
AA true
AA false
BB true
BB true
CC true
CC false
CC true
我想在 ID 列上应用 groupby 并聚合输出列上的值(如果每个 ID 的输出列中的所有值均为 true,则应返回 true,否则返回 false)
预期输出为
ID result
AA false
BB true
CC false
使用 pyspark 获得所需输出的最佳方法是什么(Windows 函数/UDF)?我感谢您的帮助!
这个场景我们需要使用group by,所以udf不是必需的。
from pyspark.sql import functions as F
result_df = df.groupBy("ID").agg(F.min("output").alias("result"))
result_df.show()
输出:
+---+------+
| ID|result|
+---+------+
| AA| false|
| BB| true |
| CC| false|
+---+------+
使用 Spark sql 也可以完成相同的操作,
SELECT ID, MIN(output) AS result
FROM my_table
GROUP BY ID;