특정 연락처 및 기금별로 여러 통화 필드를 집계 (롤업)해야하는 배치 프로그램이 있습니다. 연락처와 기금으로 필드를 올바르게 롤업해야하는 이유를 알 수 없기 때문에 이에 대한 새로운 시각이 필요합니다.목록에 레코드를 집계하는 방법
for (My_SObject__c obj : (List<My_SObject__c>)scope) {
if(!dbrToContactMap.isEmpty() && dbrToContactMap.size() > 0) {
if(dbrToContactMap.containsKey(obj.DBR__c)) {
List<Id> contactIds = dbrToContactMap.get(obj.DBR__c);
for(Id contactId : contactIds) {
My_Rollup__c rollup = new My_Rollup__c();
rollup.Fund_Name__c = obj.FundName__r.Name;
rollup.DBR__c = obj.DBR__c;
rollup.Contact__c = contactId;
rollup.YearToDate__c = obj.YearToDate__c;
rollup.PriorYear__c = obj.PriorYear__c;
rollupsToInsert.add(rollup);
}
}
}
}
if(!rollupsToInsert.isEmpty() && rollupsToInsert.size() > 0) {
insert rollupsToInsert;
}
내가 반환되는 약 275,000 기록이다 기록의 범위, 반복 해요 :
다음은 일괄 프로그램에서 내 현재 코드입니다. 내 범위의 키 필드에 의해 연락처 목록을 반환하는지도가 있습니다.
이제 현재 각 연락처를 반복하면서 목록에 삽입하고 삽입합니다. 문제는 기금 및 연락처별로 집계 (롤업)해야한다는 것입니다.
예를 들어지도에서 특정 키 필드에 대해 "John Doe"에 대한 연락처를 10 번 반환한다고 가정 해 봅시다. 그래서 "John Doe"의 연락 기록에는 10 개의 관련 기록이 있습니다.
문제는 집계해야하는 동일한 10 개의 기록에 동일한 기금이있을 수 있다는 것입니다.
따라서 "Fund A"가 5 회 나타나고 "Fund B"가 3 회 나타나고 "Fund C"가 2 회 나타나면 "John Doe"에 총 3 개의 관련 레코드 만 있어야합니다. 펀드에 의해 집계 된 (롤업 된) 연락 기록.
내 목록에서 자금으로 롤업하는 방법을 알아낼 수 없었습니다.
아무도 도와 줄 수 있습니까?
도움을 주시면 감사하겠습니다.
감사합니다.
감사합니다. 그것이 내가 필요한 것입니다! – Dman100