在数据框中过滤日期范围

时间:2020-04-10 17:47:17

标签: scala apache-spark

我对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

我正在基于idD_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))

但这不起作用。请帮助我。

0 个答案:

没有答案
相关问题