この記事の目次
SalesforceにおけるBulk APIの概要
Bulk API 2.0とは
Salesforceでは、Bulk API に加えてBulk API 2.0が提供されています。Bulk API 2.0は REST API フレームワークを使用したBulk API と同等の機能です。Bulk API 2.0ではプロセスがより簡易化されています。サポート対象外のBulk APIのクエリ
Bulk API では、以下のクエリはサポートされていません。GROUP BY 句内の日付関数はサポート対象外ですが、WHERE 句内の日付関数はサポートされます。 ・GROUP BY、OFFSET、TYPEOF 句 ・COUNT() などの集計関数 ・GROUP BY 句内の日付関数 ・複合の住所項目 ・地理位置情報項目SalesforceのBulk APIのしくみ

SalesforceにおけるBulk APIの制限

Bulk APIのバッチに関する制限
SalesforceにおけるBulk APIのバッチに関する制限について説明します。 バッチは、BatchInfo リソースで定義されます。HTTP POST 要求により、レコードのセット、バイナリ添付ファイルの参照を記載したCSV、XML、JSONなどのファイルを送信します。処理完了後、各レコードの結果(完了もしくは失敗)が結果セットのリソースとして提供されます。Bulk APIのバッチのコンテンツ
Bulk API のバッチには、単一オブジェクトのレコードで構成された CSV ファイル、XML ファイル、JSON ファイル のいずれか1 つが含まれていなければなりません。これに該当しないバッチは処理されません。 Enterprise WSDL を使用することで、オブジェクトレコードを正しい形式にできます。Bulk APIのバッチ割り当て
24 時間以内に送信できるバッチ数について、15,000 件までという割り当てがあります。 終了したジョブにバッチ送信も、バッチ割り当ての数にカウントされます。この割り当ては Bulk API と Bulk API 2.0 が合計され、両者で処理されるバッチはすべて、この割り当てでカウントされます。Bulk APIのバッチの有効期限
Salesforceでは、Bulk APIのバッチに有効期限があります。 有効期限は、ジョブに関連づけられた最新のバッチの作成日時で判断されます。作成から7日を超過したバッチとジョブが終了したバッチは、キューから削除されます。Bulk APIのバッチサイズ
バッチのサイズには以下の制限があります。 バッチは 10 MB 以下の単一の CSV ファイル、XML ファイル、または JSON ファイルで構成され、バッチのファイルが空の場合はエラーが返されます。 ファイル名の長さ:512 バイトまで zip ファイルのサイズ:10 MBまで コンテンツの合計サイズ:圧縮を解除した状態で 20 MB まで 圧縮ファイル内のファイル数:1,000 ファイルまで(ディレクトリは含まない)Bulk APIのバッチ処理の制限
SalesforceのBulk API のバッチには、API バージョン20.0 以前が100 レコード、API バージョン 21.0 以降は200 レコードという、チャンクサイズの制限があります。 また、各チャンクの処理の制限時間は5分で、バッチ全体の処理に 10 分以上かかる場合はバッチの残りがキューに戻されます。さらに一括クエリの場合は、バッチとは別にクエリ処理の制限時間(2分)があります。 キューに戻されたバッチは再度処理が行われますが、10 分以内に完了できない場合は再びキューに戻されます。最大 10 回までの試行で完了できないバッチ処理は失敗とみなされます。 但し、一部のレコードが正常に処理されていても、バッチの状態はFailed(失敗)となる場合があります。Bulk APIのバッチの圧縮形式
Salesforceでは、バッチを圧縮する場合、gzip のみが有効な形式です。 圧縮は必須ではありませんが、実行することが推奨されています。圧縮を行った場合も文字数の制限は変わりません。Salesforce のBulk APIのジョブに関する制限
SalesforceにおけるBulk APIのジョブに関する制限について説明します。 ジョブはJobInfo リソースで定義され、新規ジョブの作成、既存のジョブの状況の取得、ジョブの状況の変更を行います。権限をもつすべてのユーザがジョブを中止できますが、ジョブを終了できるのはそのジョブを作成したユーザのみです。Bulk APIのジョブのコンテンツ
Bulk APIのジョブは以下のように構成されます。 デフォルトでは並列モードが選択されています。Salesforceでは、並列モードでロック競合が発生する場合に逐次モードを使用することを推奨しています。 ・1 つの処理と 1 つのオブジェクトを指定する ・ジョブに関連付けられたバッチには、1 つのオブジェクトのレコードが含まれるBulk APIのジョブの外部 ID対応
Bulk APIのジョブを表すJobInfo では、外部 ID 項目の編集はできません。 Bulk APIのジョブで外部 ID 項目に対して実行できる処理は、更新/挿入のみです。外部ID項目の作成および更新の処理を実行すると、エラーが返されます。Bulk APIのジョブの有効期限
Salesforceでは、Bulk APIのジョブは作成から24 時間はオープンの状態にありますが、これを超えるとバッチを関連づけることができなくなります。 ジョブの有効期限は、バッチの関連づけが可能な24 時間に加えて、関連づけられたバッチがキューから削除されるまで(「バッチの有効期限」参照)と言えます。バッチが含まれていないジョブは、ジョブの作成日時が基準になります。Bulk APIのジョブ状況の変更と履歴
Bulk API のジョブの状況を変更できるのは status 項目の値のみで、operation 項目および entity 項目を変更することはできません。また、ジョブの状況とバッチの結果セットの履歴は7 日間保存され、その後は削除されます。Salesforce のBulk APIの取得ジョブ固有の制限
Bulk APIの取得ジョブには、アップロードできるレコードやバッチの容量などに制限があります。 直近24 時間以内のアップロードされたレコード:150,000,000 バッチを再試行するまでの時間:10 分 バッチのファイルサイズ:10 MB 1 項目あたりの文字数:32,000 1 レコードあたりの項目数:5,000 1 レコードあたりの文字数:400,000 1 バッチあたりのレコード数:10,000 1 バッチあたりの文字数の合計:10,000,000Salesforce のBulk APIのクエリジョブ固有の制限
Bulk APIのクエリジョブには固有の制限があります。 ・クエリのバッチ処理は10 分ごとに15 回ずつ試行し、15 回を超えるとエラーが返されます。 ・クエリの処理時間が 2 分を超えると、タイムアウトエラーが返されます。 ・クエリの処理で取得できるファイル数は15 個までで、一括バッチサイズは一括クエリには使用できません。 ・クエリの処理の結果の有効期限は7 日です。 ・クエリ処理で取得できるファイルサイズは1 GBまでです。 ・クエリ処理のバッチも、Bulk APIとBulk API 2.0 で処理されるバッチとして、24時間以内のバッチ割り当てとしてカウントされます。SalesforceでBulk APIを活用するために制限を理解する
