数据框之间的日期比较-使用pyspark

时间:2019-02-01 23:31:46

标签: date pyspark

我有2个数据框,其中一个包含事务并具有以下属性:

trxId, publishedDate and many other columns

有是具有以下另一个数据帧称为控制数据帧:

controlRecordId, sequence, start, end

基本上,我需要从控制数据帧中获取“序列”值,但它们之间的连接应为:

trx.publishedDatecontrolRecord.startcontrolRecord.end之间

我正在做下面的事情,并希望您对这是否在所有情况下都能奏效表示意见。它似乎对我有用,但是在具有成千上万条记录的生产场景中,它根本不会有任何问题。

假设:

(1)控制记录不会重叠。这意味着对于给定的时间,将有只有一个记录

(2)很有可能在给定日期没有相应的控制记录。 (由于说时间问题)。在这种情况下,生成的数据帧仍应返回一行,但其“序列”值为空

(3)因此,在下面的示例中,即使未找到相应的“序列”值,trxDf和resultDf的行数也应始终相同

resultDf = trxDf.join(controlRecordsDf, controlRecordsDf.start <= trxDf.publishedDate & controlRecordsDf.end > trxDf.publishedDate), 'left_outer')

如果上述方法可行,我最终将使用它-仅供参考。

resultDf = trxDf.join(controlRecordsDf, controlRecordsDf.start <= trxDf.publishedDate & controlRecordsDf.end > trxDf.publishedDate), 'left_outer').select(trxDf["*"], controlRecordsDf["sequence"].alias("sequence"))

谢谢

0 个答案:

没有答案