从不同的Dataframe中选择最大公共日期(scala spark)

wfypjpf4  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(333)

我有不同的Dataframe,我想选择这些df的最大公共日期。例如,我有以下Dataframe:

+--------------+-------+
|Date          | value |
+--------------+-------+
|2015-12-14    |5      |
|2017-11-19    |1      |
|2016-09-02    |1      |
|2015-12-14    |3      |
|2015-12-14    |1      |

+--------------+-------+
|Date          | value |
+--------------+-------+
|2015-12-14    |5      |
|2017-11-19    |1      |
|2016-09-02    |1      |
|2015-12-14    |3      |
|2015-12-14    |1      |

+--------------+-------+
|Date          | value |
+--------------+-------+
|2015-12-14    |5      |
|2012-12-21    |1      |
|2016-09-02    |1      |
|2015-12-14    |3      |
|2015-12-14    |1      |

所选日期为2016-09-02,因为这3个df中存在的最大日期(2017-11-19日期不在第三个df中)。
我正试着和你一起做 agg(max) 但这样我就得到了Dataframe的最高日期:

df1.select("Date").groupBy("Date").agg(max("Date))

提前谢谢!

w41d8nur

w41d8nur1#

您可以执行半联接来获取公共日期,并聚合最大日期。不需要按日期分组,因为您希望获得其最大值。

val result = df1.join(df2, Seq("Date"), "left_semi").join(df3, Seq("Date"), "left_semi").agg(max("Date"))

你也可以使用 intersect :

val result = df1.select("Date").intersect(df2.select("Date")).intersect(df3.select("Date")).agg(max("Date"))

相关问题