Bulk API の制限
Bulk API を使用する場合は、次の制限事項に注意してください。
- API の使用制限
- Bulk API には、標準の API の使用制限が適用されます。使用制限の計算では、各 HTTP 要求が 1 コールとカウントされます。
- バッチのコンテンツ
- 各バッチには、単一オブジェクトのレコードから成る CSV ファイル、XML ファイル、または JSON ファイルが 1 つだけ含まれている必要があります。この制限が守られていない場合、バッチは処理されず、stateMessage が更新されます。オブジェクトレコードを正しい形式にするには、Enterprise WSDL を使用します。
- バッチ割り当て
- 24 時間内に送信可能なバッチ数は最大で 15,000 件に制限されています。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。終了したジョブにバッチを送信した場合、バッチは作成されませんが、そのバッチは、バッチ割り当てに対して送信済みバッチとしてカウントされます。
- バッチの有効期限
- 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 日よりも古いバッチとジョブが終了状態 (完了または失敗) にある場合、キューから削除されます。この有効期限は、ジョブに関連付けられた最も新しいバッチの作成日時によって判断されます。バッチが含まれていないジョブでは、ジョブの作成日時が基準になります。作成後 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 句内の日付関数はサポートされます)
- 複合の住所項目または地理位置情報項目
- 取得ジョブ固有の制限
- クエリジョブ固有の制限
-
項目 Bulk API の制限 クエリの試行回数 10 分ごとに 15 回、バッチを処理します。クエリの処理時間には 2 分という制限もあります。クエリの試行回数が 15 回を超えると、「Tried more than fifteen times (試行回数が 15 回を超えました)」というエラーメッセージが返されます。クエリの処理時間が 2 分を超えると、QUERY_TIMEOUT エラーが返されます。 取得されるファイル数 15 個。クエリで返されるファイルが 15 個を超える場合は、クエリの検索条件を追加して返されるデータ量を減らす必要があります。一括バッチサイズは、一括クエリには使用されません。 結果の有効期限 7 日 最大取得ファイルサイズ 1 GB 直近 24 時間に送信可能なバッチ数 24 時間内に送信可能なバッチ数は最大で 15,000 件に制限されています。このバッチ割り当ては Bulk API と Bulk API 2.0 で合計されるため、Bulk API または Bulk API 2.0 で処理されるバッチはすべて、この割り当てでカウントされます。 直近 24 時間に生成可能なクエリ結果の合計数 なし - 全般的な制限
-
項目 Bulk API の制限 バッチとジョブの有効期限 7 日よりも古いバッチとジョブが終了状態 (完了または失敗) にある場合、��ョブの状況に関係なくキューから削除されます。この有効期限は、ジョブに関連付けられた最も新しいバッチの作成日時によって判断されます。バッチが含まれていないジョブでは、ジョブの作成日時が基準になります。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。 バッチの処理時間 バッチはチャンクで処理されます。チャンクサイズは、API バージョンによって異なります。API バージョンが 20.0 以前の場合、チャンクサイズは 100 レコードです。API バージョンが 21.0 以降の場合、チャンクサイズは 200 レコードです。各チャンクの処理時間には、5 分という制限があります。また、バッチ全体の処理に 10 分以上かかる場合、Bulk API ではバッチの残りがキューに戻され、後で処理されます。その後の処理でも 10 分以内に完了できない場合、バッチがキューに戻され最大 10 回まで処理が試行されます。それでも完了できない場合は、バッチ処理が完全に失敗したとみなされます。 バイナリ型のコンテンツ - ファイル名の最大長は 512 バイトです。
- zip ファイルの最大サイズは 10 MB です。
- コンテンツの最大合計サイズは、圧縮解除した状態で 20 MB です。
- 1 つの zip ファイルに含めることができるファイル数は最大で 1,000 ファイルです。ディレクトリはファイル数にはカウントされません。
ジョブを Open のままに維持できる最大時間 24 時間 - 関連トピック
- Bulk API 2.0 の制限との比較については、『Salesforce Developer の制限および割り当てクイックリファレンス』を参照してください。