この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

PK Chunking ヘッダー

PK Chunking 要求ヘッダーを使用すると、一括クエリで自動的に主キー (PK) チャンクを作成できます。PK Chunking では、非常に大きなテーブルに対する一括クエリを、クエリされるレコードのレコード ID (主キー) に基づいたチャンクに分割します。各チャンクは、別個のバッチとして処理されて 1 日あたりのバッチ制限にカウントされます。また、その結果は別個にダウンロードする必要があります。PK Chunking は、Account、Campaign、CampaignMember、Case、Contact、Lead、LoginHistory、Opportunity、Task、User の各オブジェクトとカスタムオブジェクトでサポートされます。

PK Chunking は、WHERE 句でレコード ID 境界をクエリに追加し、クエリ結果を小規模なチャンクの合計結果数に制限することで動作します。残りの結果は、連続した境界を含む追加クエリで取得されます。各チャンクの ID 境界内にあるレコード件数は、チャンクサイズと呼ばれます。最初のクエリでは、指定された開始 ID と、開始 ID にチャンクサイズを加えた値の間にあるレコードが取得され、次のクエリではレコードの次のチャンクが取得されます。

たとえば、10,000,000 件のレコードを含む Account テーブルの次のクエリで PK Chunking を有効にするとします。
1SELECT Name FROM Account
チャンクサイズを 250,000、開始レコード ID を 001300000000000 と想定した場合、クエリは次の 40 個に分割され、各クエリが別個のバッチとして送信されます。
1SELECT 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 < 00130000000fxSK
各クエリは、base-62 の ID 境界で指定された 250,000 件のレコードのチャンクで実行されます。

PK Chunking は、テーブル全体からデータを抽出するように設計されていますが、絞り込み条件が設定されたクエリにも使用できます。各クエリの結果からレコードが絞り込まれる可能性があるため、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。

デフォルトのチャンクサイズは 100,000 で、最大値は 250,000 です。デフォルトの開始 ID は、テーブルの最初のレコードです。ただし、異なる開始 ID を指定して、チャンクに分割されたバッチ間で失敗したジョブを再開することができます。

クエリがチャンクに正常に分割されると、元のバッチの状況が NOT_PROCESSED になり、連続したバッチが処理された後で結果が返されます。チャンク分割に失敗すると、元のバッチの状況は FAILED になりますが、チャンク分割時に正常に分割されてキューに入れられたバッチは通常どおり処理されます。

Salesforce は、レコード数が 1,000 万を超えるテーブルをクエリする場合や、一括クエリがいつもタイムアウトしてしまう場合に PK Chunking を有効化することをお勧めします。ただし、PK Chunking の有効性は、クエリおよびクエリされるデータの詳細に応じて異なります。

ヘッダーの項目名と値

項目名
Sforce-Enable-PKChunking
項目値
  • TRUE — キューに入れられたテーブルの最初のレコード ID で開始し、デフォルトのチャンクサイズで PK Chunking を有効にします。
  • FALSE — PK Chunking を無効にします。要求でヘッダーが指定されていない場合は、これがデフォルト値になります。
  • chunkSize — 各チャンクの ID 境界内にあるレコード件数を指定します。デフォルトは 100,000 で、最大値は 250,000 です。クエリに検索条件が含まれている場合、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。
  • parent — 共有オブジェクトのクエリで PK Chunking を有効にする場合に、親オブジェクトを指定します。チャンクは、共有オブジェクトのレコードではなく、親オブジェクトのレコードを基にしています。たとえば、AccountHistory をクエリする場合は、Account を親オブジェクトとして指定します。PK Chunking は、親オブジェクトがサポートされていれば、共有オブジェクトでもサポートされます。
  • startRow — 最初のチャンクの境界の下限として使用する 15 文字または 18 文字のレコード ID を指定します。バッチ間で失敗したジョブを再開するときに、このパラメータを使用して開始 ID を指定します。
Sforce-Enable-PKChunking: chunkSize=50000; startRow=00130000000xEftMGH