データ書き込み(DELETE)のAPIコール数について

Q.

Salesforceアダプタの「データ書き込み(DELETE)」のヘルプに次の記述があります。

delete() では、対象となる各レコードの ID を指定する必要があります。
ただし、本コンポーネントでは ID 以外の項目をキーとして指定することができます。この場合、ID を取得するため入力データの値をもとに query() が実行されます。		

ID以外の項目をキーとして指定した場合、APIコール数はどのようになりますか。

A. 

ID 以外をスキーマに指定した場合は、入力データの値を条件に query() を発行して ID を検索します。

query() は入力データの一件づつで発行するのではなく、SOQL の WHERE 句に "OR" を使用して、条件の範囲内でまとめて取得します。

・WHERE ( Name = 'data1' ) OR ( Name = 'data2' ) ...

条件とは、「バッチサイズで指定した件数に到達した」または「SOQL 全体が19,000文字(※)を超えた」となっております。

 

アダプタの処理手順は以下となります。

①入力データの先頭から順に SOQL を組み立て

②条件に到達したタイミングで query() を実行

③取得した ID でバッチサイズごとに delete() を実行

-- 入力データがまだ存在すれば①から繰り返し --

 

もし、入力データ件数が100件、バッチサイズを20とし、入力データに対して返される ID が1対1となる場合は、

・query() 5コール

・delete() 5コール

となります。※2

 

※1

19,000文字という基準値は、SOQLの制限である20,000文字以内という制限に触発しないための機構です。なお「Salesforce接続設定 API26.0」およびそれ以前を使用した場合、セールスフォースのAPIの制限により9,000文字が基準値になります。

 

※2

バッチサイズ内で作成した SOQL 全体が19,000文字を超えない場合です。

 


テラスカイ管理番号 C-00008351