【发布时间】:2014-02-24 17:52:05
【问题描述】:
我有一个处理流动行的春季批处理作业。我正在使用标准的阅读器、处理器和编写器模式。
load_id policy_number slice_numb asset_code surrender_value
923 V317865 V317865 XXH XXH 46230.340000
923 V318291 V318291 XXA XXA 40664.230000
923 V318757 V318757 XXA XXA 73263.360000
923 V318757 V318757 XXF XXF 36575.820000
923 V318757 V318757 XXI XXI 8723.330000
923 V318782 V318782 XXI XXI 9141.550000
923 V318782 V318782 XXF XXF 28329.550000
923 V318782 V318782 XXA XXA 76776.220000
对于我处理的每一行,我需要获取具有相同 policy_number 的行的 SUM(surrender_value)。请注意 policy_number V318757 作为三行示例。我需要报告此行提供的总退保价值的百分比。
我对如何实现这个有两个想法,但不确定哪个是更好的方法
第一个选项 - 将 SUM/分组逻辑移动到读者使用的 SQL 查询中。这意味着我需要的所有信息都可供处理器使用,但我必须映射一些额外的字段。
第二个选项 - 为了聚合行,我将添加一个预处理器,该预处理器将维护每个 policy_number 的总数的映射和受影响的行列表。一旦这个处理器完成,我会将生成的数据结构传递给第二个处理器,该处理器将完成标准工作。我担心的是内存占用可能会变得非常大,因为我缓存了这么多行的详细信息。
任何建议或指导将不胜感激。
【问题讨论】:
-
@ballabax 谢谢你。我不愿意将此逻辑移至编写器阶段,因为我觉得它确实属于处理器阶段。我稍后会发布建议的解决方案
-
还有stackoverflow.com/questions/18396259/…;转向作家是正确的选择!
标签: spring-batch