1

Salesforce の Bulk API を使用して、この形式のクエリを実行したいと考えています。

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

そのようなフィールド値が何千もあり、それらのオブジェクトの ID を取得したいと考えています。AFAIK、Salesforce の一括クエリは、入力として 1 つの SOQL ステートメントのみをサポートします。

1 つのオプションは、次のようなクエリを作成することです。

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

しかし、問題はSOQLに10000文字の制限があることです。

ここに何か提案はありますか?

ありがとう

4

3 に答える 3

2

ある種の検索クエリを実行しようとしているようです。その場合、検索しているフィールドが SFDC によってインデックス化されている限り、SOQL ではなくSOSLクエリの使用を検討できます。

そうでなければ、Born2BeMild に同意します。2番目のアプローチの方が優れており、値のリストをバッチに分割すると、制限を回避するのに役立ちます.

ユースケースをもう少し詳しく説明していただけると助かります。通常、動的なフィールドと値のセットに対するクエリは、一括 API を使用しても常に最高のパフォーマンスを発揮するとは限りません。データをローカル データベースにダウンロードして、その方法でデータを探索する方が、ほとんど良い方法です。

于 2012-07-17T14:00:03.537 に答える
1

それらを 200 程度の値のバッチに分割し、Salesforce に繰り返しクエリを実行してメモリ内に結果セットを構築したり、データのサブセットを処理したりできます。

ただし、SOQL クエリの最大数については、ガバナーの制限を確認する必要があります。最大値を超えないように、実行時に API を介して使用状況を追跡できるはずです。

于 2012-07-17T08:42:01.523 に答える
0

問題は、ガバナーの制限に達していることです。データベースから取得した場合、Saleforce は一度に 200 レコードしか処理できません。したがって、最初にこのすべてのレコードを操作できるようにするには、すべてのレコードをリストに追加する必要があります。次に例を示します。

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

次に、リストアカウントを操作して、必要なすべてを実行し、完了したら、次を使用してデータベースを更新できます。

Update accounts;

このリンクが役立つ場合があります: https://help.salesforce.com/apex/HTViewSolution?id=000004410&language=en_US

于 2015-03-16T21:59:09.430 に答える