制限
Bulk API に固有の制限を次に示します。
- API の使用制限
- Bulk API には、標準の API の使用制限が適用されます。使用制限の計算では、各 HTTP 要求が 1 コールと計数されます。
- Apex のトランザクション
- DML が Bulk API と共に実行されるときは、200 レコードの各チャンクが別々のトランザクションとして処理されます。
- バッチのコンテンツ
- 各バッチには、単一オブジェクトのレコードから成る CSV ファイル、XML ファイル、または JSON ファイルが 1 つだけ含まれている必要があります。この制限が守られていない場合、バッチは処理されず、stateMessage が更新されます。オブジェクトレコードを正しい形式にするには、Enterprise WSDL を使用します。
- バッチ割り当て
- 24 時間内に送信可能なバッチ数は最大で 15,000 件に制限されています。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。終了したジョブにバッチを送信した場合、バッチは作成されませんが、そのバッチは、バッチ割り当てに対して送信済みバッチとして反映されます。
- バッチの有効期限
- 7 日よりも古いバッチとジョブが終了状態 (完了または失敗) にある場合、キューから削除されます。この 7 日は、ジョブに関連付けられた最も新しいバッチの作成日時によって判断されます。バッチが含まれていないジョブでは、ジョブの作成日時が基準になります。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。
- バッチサイズ
- バイナリ型のコンテンツの制限については、「全般的な制限」を参照してください。
- バッチの処理時間
- バッチはチャンクで処理されます。チャンクサイズは、API バージョンによって異なります。API バージョンが 20.0 以前の場合、チャンクサイズは 100 レコードです。API バージョンが 21.0 以降の場合、チャンクサイズは 200 レコードです。各チャンクの処理時間には、5 分という制限があります。また、バッチ全体の処理に 10 分以上かかる場合、Bulk API ではバッチの残りがキューに戻され、後で処理されます。その後の処理でも 10 分以内に完了できない場合、バッチがキューに戻され最大 10 回まで処理が試行されます。それでも完了できない場合は、バッチ処理が完全に失敗したとみなされます。
- バッチの状態が Failed であっても、一部のレコードは正常に処理されている可能性があります。 バッチの処理時にタイムアウトエラーが発生する場合は、バッチをより小さなサイズに分割して再試行します。
- 圧縮
- 有効な圧縮形式の値は gzip のみです。圧縮は必須ではありませんが、実行することをお勧めします。なお、圧縮を行��ても、「バッチサイズ」で説明した文字数の制限は変わりません。
- ジョブの中止
- ジョブの中止は、適切な権限があればどのユーザでも実行できます。ジョブの終了は、そのジョブを作成したユーザのみが実行できます。
- ジョブの終了
- ジョブの終了は、そのジョブを作成したユーザのみが実行できます。ジョブの中止は、適切な権限があればどのユーザでも実行できます。
- ジョブのコンテンツ
- それぞれのジョブでは、1 つの処理と 1 つのオブジェクトを指定できます。このジョブに関連付けられたバッチには、1 つのオブジェクトのレコードが含まれます。必要に応じて逐次処理モードを指定することもできますが、このモードは、以前に送信した非同期ジョブでロックによる競合が発生した場合にのみ使用します。これは、Salesforce が推奨した場合にのみ使用してください。
- ジョブの外部 ID
- JobInfo では外部 ID 項目の値を編集することはできません。外部 ID 項目を指定した場合、実行される処理は必ず更新/挿入となります。作成や更新の処理で使用しようとするとエラーが生成されます。
- ジョブの有効期限
- 7 日よりも古いバッチとジョブが終了状態 (完了または失敗) にある場合、キューから削除されます。この 7 日は、ジョブに関連付けられた最も新しいバッチの作成日時によって判断されます。バッチが含まれていないジョブでは、ジョブの作成日時が基準になります。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。
- ジョブの Open 状態の時間
- ジョブの状態が Open であるのは、作成後最大 24 時間までです。Bulk API では、バッチを毎時間に 1 つずつ、長時間にわたって追加するようなクライアントはサポートされません。
- ジョブ履歴に表示されるジョブの状況
- 完了したジョブのジョブ状況とバッチ結果セットは、ジョブの完了後 7 日間保存され、それを過ぎると完全に削除されます。
- ジョブの状況の変更
- ジョブの状況を変更して POST の本文を送信する場合、指定できるのは status 項目の値のみとなります。operation 項目や entity 項目の値を指定した場合はエラーが発生します。
- ポータルユーザ
- カスタマーポータル、セルフサービスポータル、パートナーポータルなどのポータルユーザは、「API の有効化」プロファイル権限を割り当てられていたとしても Bulk API にはアクセスできません。
- SOQL
-
Bulk API では、次のクエリはサポートされていません。
- GROUP BY、OFFSET、TYPEOF 句
- COUNT() などの集計関数
- GROUP BY 句内に日付関数がある (WHERE 句内の日付関数はサポートされます)
- 複合の住所項目または地理位置情報項目