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()
说,我有一个数据框如下
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()