2012-07-16 2 views
1

Salesforce의 Bulk API를 사용하여이 형식의 쿼리를 실행하고 싶습니다.Salesforce에서 WHERE 절과 함께 Bulk API를 사용하는 방법

Select Id from Object where field='<value>'. 

필자는 수천 개의 필드 값을 갖고 있으며 이러한 개체의 ID를 검색하려고합니다. AFAIK, Salesforce의 대량 쿼리는 하나의 SOQL 문만 입력으로 지원합니다.

하나의 옵션은

Select Id,field where field in (<all field values>) 

같은 쿼리를 형성 할 수 있지만, 문제는 SOQL 10000 개 문자 제한이 있습니다.

여기에 어떤 제안이 있습니까?

감사

+0

그것은 많은 필드 값을에 쿼리하기 때문에 성능에 대한 좋은 생각을 간주되지 않습니다, 비즈니스 로직과 질문을 업데이트 가치 후퇴 ons. – Anup

답변

2

검색 쿼리를 수행하는 것처럼 보입니다. 그렇다면 검색중인 필드가 SFDC에 의해 색인화되어있는 한 SOQL과 반대로 SOSL 쿼리를 사용하십시오.

그렇지 않으면 Born2BeMild에 동의합니다. 두 번째 방법이 더 좋으며 값 목록을 일괄 적으로 나누면 한계를 극복하는 데 도움이됩니다.

약간의 사용 사례를 자세히 설명하면 도움이 될 것입니다. 일반적으로 필드 및 값의 동적 집합에 대한 쿼리는 대량 API가있는 경우에도 항상 최상의 성능을 제공하지는 않습니다. 데이터를 로컬 데이터베이스로 다운로드하고 데이터를 탐색하는 것이 좋습니다.

+0

일괄 처리 속보가 하나의 옵션입니다. 이미 데이터베이스에 데이터가 다운로드되어 있으므로 더 효율적입니다. – RandomQuestion

1

당신은 200 정도의 값을 일괄 적으로 사람들을 분해하고 반복적으로 데이터의 메모리 나 프로세스 집합에서 결과 집합을 구축 세일즈 포스를 조회 할 수 있습니다.

SOQL 쿼리의 최대 수에 대한 조정자 한도를 확인해야합니다. 최대 값을 초과하지 않도록 런타임시 API를 통해 사용량을 추적 할 수 있어야합니다.

0

문제는 조정자 한도에 도달했기 때문입니다. Saleforce는 데이터베이스에서 오는 경우 한 번에 200 개의 레코드 만 처리 할 수 ​​있습니다. 당신이 완료되면

List<Account> accounts= [SELECT id, name, FROM Account]; 

그런 다음 당신이 다음에해야 할 모든 일을 목록의 계정을 사용하여 작업 할 수 있습니다 그러므로 예를 들어 목록에 모든 레코드를 추가 할 필요가 우선이 작업 할 수 기록 할 수

Update accounts; 

이 링크는 도움이 될 수 있습니다 : 당신은 사용하여 데이터베이스를 업데이트 할 수 있습니다 https://help.salesforce.com/apex/HTViewSolution?id=000004410&language=en_US