나는 흐르는 행을 처리하는 스프링 배치 작업이 있습니다. 표준 리더, 프로세서 및 작가 패턴을 사용하고 있습니다.스프링 배치 - 집계 프로세서
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
각 행 i 프로세스마다 동일한 policy_number가있는 행에 대해 SUM (surrender_value)을 가져와야합니다. policy_number V318757을 세 행이있는 예제로 기록하십시오. 이 행이 제공하는 총 항복 가치의 백분율을보고해야합니다.
나는이 내가 이것을 구현하는 방법에 대한 생각하지만, 더 나은 방법을
첫 번째 옵션 인 확신이 - 독자가 사용하는 SQL 쿼리에 SUM/그룹화 논리를 이동합니다. 이것은 필요한 모든 정보가 프로세서에서 사용할 수 있음을 의미하지만 추가 필드를 매핑해야합니다.
두 번째 옵션 - 행을 집계하기 위해 policy_number 당 총계의 맵과 영향을받은 행의 목록을 유지하는 프리 프로세서를 추가했습니다. 이 프로세서가 완성되면 결과 데이터 구조를 표준 작업을 수행하는 두 번째 프로세서로 전달합니다. 내 관심사는 여기에 너무 많은 행의 세부 정보를 캐시로 메모리 발자국이 매우 커질 수 있습니다.
모든 조언이나 조언을 부탁드립니다.
가능한 솔루션 http://stackoverflow.com/questions/19906772/grouping-summarizing-spring-batch-records/19908104#19908104 –
@ballabax 감사합니다. 나는이 논리를 작가 단계로 옮기기를 꺼려한다. 왜냐하면 나는 정말로 프로세서 단계에 속한다고 느낀다. 나중에 제안 된 솔루션을 게시 할 것입니다 – emeraldjava
또한 http://stackoverflow.com/questions/18396259/how-to-write-more-then-one-class-in-spring-batch/18411497#18411497; 작가로 옮기는 것이 올바른 선택입니다! –