如何使用Talend中先前行的值计算值

时间:2017-12-21 22:01:10

标签: etl talend

我有一个如下所示的数据集。

数据集:

Dataset

现在的业务逻辑是找出每笔贷款的最后付款日期。我尝试使用tmap组件,它调用一个具有静态变量last_paid_dt的java例程,该例程将存储每日存款时的交易日期>但是,当每日存款小于0时,静态变量不会改变。当支付金额为0时,此方法正常。

问题 - 请参阅下表中的红色突出显示值

当支付的金额在一天或之后被撤销时,最后支付的金额应该来自之前的非逆转正数。我无法完成那件事。 此外,当新的贷款ID开始处理时,我需要静态变量来重置,这当前没有发生  如果我目前的方法是错误的,请帮助我以更好,更有效的方式做。感谢

预期产出:

Expected output

1 个答案:

答案 0 :(得分:0)

首先,您需要使用Map组件,其中键是loanId。 您不想覆盖该值。即如果地图中存在该键,则不要使用新值覆盖它。 你可以根据需要使用globalMap,在这种情况下我可以:

  

globalMap.get(" loan _" + loanId)!= null?   globalMap.put(" loand _" + loanId,loanDate):loanDate

然后:

  

globalMap.get("贷款_&#34 +的LoanID)

不优雅,但有效。 a更优雅的是定义您放入globalMap的自己的地图,并在该过程将其置空后,以便释放内存。但这一切都取决于你工作的复杂性。