pyspark - 聚合

pyspark - aggregation

说,我有一个数据框如下

mid | bid | m_date1   | m_date2 | m_date3   |
100 | ws  |           |         | 2022-02-01|
200 | gs  | 2022-02-01|         |           |

现在我有一个 sql 聚合如下

SELECT
mid,
bid,
min(NEXT(m_date1, 'SAT')) as dat1,
min(NEXT(m_date2, 'SAT')) as dat2,
min(NEXT(m_date3, 'SAT')) as dat3
FROM df
GROUPBY 1,2

我希望使用 Pyspark 实现上述聚合,但想知道是否可以使用任何形式的迭代来实现 dat1、dat2 和 dat3,因为在这些列上应用了相同的 'min' 函数。我可以在 PySpark 中为每一列使用以下聚合语法,但我希望避免在每个聚合列上重复 'min' 函数。

df.groupBy('mid','bid').agg(...)

谢谢

示例输出会更好。如果我猜对了,你就是

df.groupby('mid','bid').agg(*[min(i).alias(f"min{i}") for i in df.drop('mid','bid').columns]).show()