PK Chunking ヘッダー
各チャンクは、別個のバッチとして処理されて 1 日あたりのバッチ制限にカウントされます。また、各バッチの結果は別個にダウンロードする必要があります。PK Chunking は、SELECT 句または WHERE 以外の条件が含まれていないクエリでのみ機能します。
PK Chunking は、Account、Asset、Campaign、CampaignMember、Case、CaseArticle、CaseHistory、Contact、Event、EventRelation、Lead、LoginHistory、ObjectTerritory2Association、Opportunity、Task、User、WorkOrder、WorkOrderLineItem の各オブジェクトとカスタムオブジェクトでサポートされます。
PK Chunking は、WHERE 句でレコード ID 境界をクエリに追加し、クエリ結果を小規模なチャンクの合計結果数に制限することで動作します。残りの結果は、連続した境界を含む追加クエリで取得されます。各チャンクの ID 境界内にあるレコード件数は、チャンクサイズと呼ばれます。最初のクエリでは、指定された開始 ID と、開始 ID にチャンクサイズを加えた値の間にあるレコードが取得されます。次のクエリではレコードの次のチャンクが取得されます。
1SELECT Name FROM Account1SELECT Name FROM Account WHERE Id >= 001300000000000 AND Id < 00130000000132G
2SELECT Name FROM Account WHERE Id >= 00130000000132G AND Id < 00130000000264W
3SELECT Name FROM Account WHERE Id >= 00130000000264W AND Id < 00130000000396m
4...
5SELECT Name FROM Account WHERE Id >= 00130000000euQ4 AND Id < 00130000000fxSKPK Chunking は、テーブル全体からデータを抽出するように設計されていますが、絞り込み条件が設定されたクエリにも使用できます。各クエリの結果からレコードが絞り込まれる可能性があるため、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。また、クエリがチャンクに分割されるときに、論理削除されたレコードの ID はカウントされますが、そのレコードは結果から除外されます。したがって、論理削除されたレコードが特定のチャンクの ID 境界内にある場合、返される結果の件数はチャンクサイズを下回ります。
デフォルトのチャンクサイズは 100,000 で、最大サイズは 250,000 です。デフォルトの開始 ID は、テーブルの最初のレコードです。ただし、異なる開始 ID を指定して、チャンクに分割されたバッチ間で失敗したジョブを再開することができます。
クエリがチャンクに正常に分割されると、元のバッチの状況が NOT_PROCESSED になります。チャンク分割に失敗すると、元のバッチの状況は FAILED になりますが、チャンク分割時に正常に分割されてキューに入れられたバッチは通常どおり処理されます。元���バッチの状況が NOT_PROCESSED に変更された場合は、後続のバッチを監視します。各後続のバッチの完了後に、そのバッチの結果を取得できます。その後安全にジョブを終了できます。
Salesforce は、レコード数が 1,000 万を超えるテーブルを照会する場合や、一括クエリがいつもタイムアウトしてしまう場合に PK Chunking を有効化することをお勧めします。ただし、PK Chunking の有効性は、クエリおよび照会されるデータの詳細に応じて異なります。
ヘッダーの項目名と値
- 項目名
- Sforce-Enable-PKChunking
- 項目値
-
- TRUE — キューに入れられたテーブルの最初のレコード ID で開始し、デフォルトのチャンクサイズで PK Chunking を有効にします。
- FALSE — PK Chunking を無効にします。要求にヘッダーが指定されていない場合、デフォルト値は FALSE です。
- chunkSize — 各チャンクの ID 境界内にあるレコード件数を指定します。デフォルトは 100,000 で、最大サイズは 250,000 です。クエリに絞り込み条件が設定された、あるいは論理削除されたレコードが含まれている場合、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。
-
parent — 共有オブジェクトのクエリで PK Chunking を有効にする場合に、親オブジェクトを指定します。チャンクは、共有オブジェクトのレコードではなく、親オブジェクトのレコードを基にしています。たとえば、AccountShare を照会する場合は、Account を親オブジェクトとして指定します。PK Chunking は、親オブジェクトがサポートされていれば、共有オブジェクトでもサポートされます。
同様に、CaseHistory の場合、Case を親オブジェクトとして指定します。
- startRow — 最初のチャンクの境界の下限として使用する 15 文字または 18 文字のレコード ID を指定します。バッチ間で失敗したジョブを再開するときに、このパラメータを使用して開始 ID を指定します。
- 例
- Sforce-Enable-PKChunking: chunkSize=50000; startRow=00130000000xEftMGH