2021/05/24

SalesforceにおけるBulk APIの制限とは?機能概要、しくみから解説

 
  

SalesforceにおけるBulk APIの概要

SalesforceにおけるBulk APIは、REST 規則で、大規模データセットの読みこみや削除処理などに最適化されています。 大量のレコードの処理には、SOAP API より短時間で処理できるBulk APIが適しています。SOAP API が少数のレコードをリアルタイムに処理するのに対し、Bulk API は、1,000~1,000,000単位のレコードのデータを読みこむことを想定して設計されています。 SalesforceでBulk API を使用する際は、Bulk API 機能が有効化されていることが必要です。但し、ポータルユーザは、APIの権限を割り当てられても Bulk API にはアクセスできません。 <Bulk API 機能がデフォルトで有効化されているエディション> ・Performance Edition ・Unlimited Edition ・Enterprise Edition ・Developer Edition

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のしくみ

Bulk APIは1 つ以上のバッチを含むジョブにより、一連のレコードを処理します。データセットは複数のバッチに分割して送信され、どのように分割するかはクライアント側で決定します。 バッチは並列処理が可能で、受信したサーバによって受信した順序とは関係なく独自に処理されます。 SalesforceではBulk APIのバッチ処理の実行中に、HTTP GET コールを使用して、ジョブの状況の確認と進行状況の追跡ができます。Bulk APIのすべての処理で、HTTP GET メソッド、HTTP POST メソッドを使用して、CSV データ、XML データ、JSON データが送受信されます。

SalesforceにおけるBulk APIの制限

Salesforceで、Bulk APIを使用する際の制限について説明します。 Salesforceではリソースの独占が起きないよう、ガバナ制限を設けています。制限事項に該当する場合は処理が実行されず、エラーが返されます。 尚、Bulk APIも標準 API のコール数の使用制限の対象であり、HTTP 要求を 1 コールとして適用されます。

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,000

Salesforce のBulk APIのクエリジョブ固有の制限

Bulk APIのクエリジョブには固有の制限があります。 ・クエリのバッチ処理は10 分ごとに15 回ずつ試行し、15 回を超えるとエラーが返されます。 ・クエリの処理時間が 2 分を超えると、タイムアウトエラーが返されます。 ・クエリの処理で取得できるファイル数は15 個までで、一括バッチサイズは一括クエリには使用できません。 ・クエリの処理の結果の有効期限は7 日です。 ・クエリ処理で取得できるファイルサイズは1 GBまでです。 ・クエリ処理のバッチも、Bulk APIとBulk API 2.0 で処理されるバッチとして、24時間以内のバッチ割り当てとしてカウントされます。

SalesforceでBulk APIを活用するために制限を理解する

SalesforceにおけるBulk APIの機能の概要としくみ、制限について説明しました。 Bulk API は、Salesforceで大量のレコードを一度に処理できる機能ですが、使用にあたっては、リソース独占を起こさないための制限があります。 SalesforceでBulk APIを活用するために、その制限について理解しておきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】