Bulk API の制限
Bulk API を使用する場合は、次の制限事項に注意してください。
- API の使用制限
- Bulk API には、標準の API の使用制限が適用されます。使用制限の計算では、各 HTTP 要求が 1 コールとカウントされます。
- バッチのコンテンツ
- 各バッチには、単一オブジェクトのレコードから成る CSV ファイル、XML ファイル、または JSON ファイルが 1 つだけ含まれている必要があります。この制限が守られていない場合、バッチは処理されず、stateMessage が更新されます。オブジェクトレコードの形式を正しいものとするためには、Enterprise WSDL を使用します。
- バッチの制限
- 24 時間内に送信可能なバッチ数は最大で 10,000 件に制限されています。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。
- バッチの有効期限
- 作成後 7 日を超えたバッチやジョブは、ジョブの状況にかかわらずキューから削除されます。この有効期限は、ジョブに関連付けられた最も新しいバッチの作成日時によって判断されます。バッチが含まれていないジョブでは、ジョブの作成日時が基準になります。作成後 24 時間を超えたジョブにバッチを関連付けることはできません。
- バッチサイズ
-
- データ読み込みのバッチは 10 MB 以下の単一の CSV ファイル、XML ファイル、または JSON ファイルで構成できます。
- 1 つのバッチには、最大で 10,000 件のレコードを含めることができます。
- 1 つのバッチには、最大で 10,000,000 文字のデータを含めることができます。
- 1 つの項目には、最大で 32,000 文字を含めることができます。
- 1 つのレコードには、最大で 5,000 項目を含めることができます。
- 1 つのレコードに含まれる項目には、合計で最大 400,000 文字を含めることができます。
- バッチには何らかのコンテンツが必要です。バッチが空の場合はエラーが返されます。
- バイナリ型のコンテンツの制限については、「バイナリ型のコンテンツ」を参照してください。
- バッチの処理時間
- バッチはチャンクで処理されます。チャンクサイズは、API バージョンによって異なります。API バージョンが 20.0 以前の場合、チャンクサイズは 100 レコードです。API バージョンが 21.0 以降の場合、チャンクサイズは 200 レコードです。各チャンクの処理時間には、5 分という制限があります。また、バッチ全体の処理に 10 分以上かかる場合、Bulk API ではバッチの残りがキューに戻され、後で処理されます。その後の処理でも 10 分以内に完了できない場合、バッチがキューに戻され最大 10 回まで処理が試行されます。それでも完了できない場合は、バッチ処理が完全に失敗したとみなされます。
- バッチの状態が Failed であっても、一部のレコードは正常に処理されている可能性があります。バッチ結果を取得して、個々のレコードの処理状況を確認する方法については、「バッチ結果の取得」を参照してください。バッチの処理時にタイムアウトエラーが発生する場合は、バッチをより小さなサイズに分割して再試行します。
- バイナリ型のコンテンツ
-
- ファイル名の最大長は 512 バイトです。
- zip ファイルの最大サイズは 10 MB です。
- コンテンツの最大合計サイズは、圧縮解除した状態で 20 MB です。
- 1 つの zip ファイルに含めることができるファイル数は最大で 1,000 ファイルです。ディレクトリはファイル数にはカウントされません。
- 圧縮
- 有効な圧縮形式の値は 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 にはアクセスできません。
- query の制限
- Bulk API クエリには、次の制限があります。
-
Bulk API クエリでは、次の SOQL はサポートされていません。
- COUNT
- ROLLUP
- SUM
- GROUP BY CUBE
- OFFSET
- ネストされた SOQL クエリ