我对scala还是很陌生,并且我有一个数据框,其中包含Id,valid_From和Valid_to Date如下:
DataFrame1 (`name in query as tD`):
id E_id start_date CTC valid_from valid_to
z1 it1 2016-01-01 25 2016-02-01 2017-03-01
z1 it1 2017-01-01 25.75 2017-03-01 null
我还有另一个数据框,如下所示:
DataFrame 2(name in query as finalDF
):
id D_id Join_date
z1 it1 2016-05-01
z1 it1 2017-06-01
我正在基于id
和D_id
联接这两个数据帧,并且需要记录DataFrame 2 Join_Date位于DataFrame 1 start_date和valid_to之间。因此最终输出应该像
id D_id
z1 it1
z1 it1
我这样做是:
val joinDF = finalDF.as("DF")
.join(tD.as("tDF"),($"tDF.id" === $"DF.id" && $"tDF.D_id" === $"DF.D_id"))
.filter($"Join_date".between($"start_date", $"valid_to") || $"Join_date".between($"start_date", $"valid_to".isNull))
但这不起作用。请帮助我。