我有2个数据框,其中一个包含事务并具有以下属性:
trxId, publishedDate and many other columns
有是具有以下另一个数据帧称为控制数据帧:
controlRecordId, sequence, start, end
基本上,我需要从控制数据帧中获取“序列”值,但它们之间的连接应为:
trx.publishedDate
在controlRecord.start
和controlRecord.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"))
谢谢