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

PK Chunking を使用した一括クエリサンプルの説明

このコードサンプルは、cURL を使用して、いくつかの取引先レコードで PK Chunking が有効な一括クエリを実行します。

インテグレーションまたはその他のクライアントアプリケーションを作成する前に、次のことを実行してください。

  • 製品ドキュメントに従って、開発プラットフォームをインストールする。
  • テストクライアントアプリケーションの作成を開始する前に、すべての手順に目を通す。用語およびコンセプトについて理解するために、このマニュアルの残りの部分も確認します。

メモ

PK Chunking が有効なジョブの作成

  1. 次のテキストを含む、create-job.xml というファイルを作成します。
    1<?xml version="1.0" encoding="UTF-8"?>
    2<jobInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <operation>query</operation>
    5  <object>Account</object>
    6  <concurrencyMode>Parallel</concurrencyMode>
    7  <contentType>CSV</contentType>
    8</jobInfo>
  2. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、PK Chunking が有効なジョブを作成します。

    curl -H "X-SFDC-Session: sessionId" -H "Content-Type: application/xml; charset=UTF-8" -H "Sforce-Enable-PKChunking: true" -d @create-job.xml https://instance.salesforce.com/services/async/41.0/job

    instance は、ログインの応答でメモした <serverUrl> 要素の一部分です。sessionId は同様にメモした <sessionId> 要素です。

    Salesforce は、レコード数が 1,000 万を超えるテーブルをクエリする場合や、一括クエリがいつもタイムアウトしてしまう場合に PK Chunking を有効化することをお勧めします。この例では、この推奨件数よりも大幅に少ないレコード数をクエリしている場合に、そのレコード数よりも小さい数を chunkSize に設定します。たとえば、「Sforce-Enable-PKChunking: chunkSize=1000」などです。こうすることで、PK Chunking の動作、およびクエリが複数のバッチに分割されることを確認できます。

    メモ

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<jobInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <id>750x000000009tvAAA</id>
    5  <operation>query</operation>
    6  <object>Account</object>
    7  <createdById>005x0000001WR0lAAG</createdById>
    8  <createdDate>2016-01-10T00:53:19.000Z</createdDate>
    9  <systemModstamp>2016-01-10T00:53:19.000Z</systemModstamp>
    10  <state>Open</state>
    11  <concurrencyMode>Parallel</concurrencyMode>
    12  <contentType>CSV</contentType>
    13  <numberBatchesQueued>0</numberBatchesQueued>
    14  <numberBatchesInProgress>0</numberBatchesInProgress>
    15  <numberBatchesCompleted>0</numberBatchesCompleted>
    16  <numberBatchesFailed>0</numberBatchesFailed>
    17  <numberBatchesTotal>0</numberBatchesTotal>
    18  <numberRecordsProcessed>0</numberRecordsProcessed>
    19  <numberRetries>0</numberRetries>
    20  <apiVersion>36.0</apiVersion>
    21  <numberRecordsFailed>0</numberRecordsFailed>
    22  <totalProcessingTime>0</totalProcessingTime>
    23  <apiActiveProcessingTime>0</apiActiveProcessingTime>
    24  <apexProcessingTime>0</apexProcessingTime>
    25</jobInfo>

ジョブへのバッチの追加

  1. SOQL クエリステートメントを含む、query.txt というファイルを作成します。
    1SELECT Id, Name FROM Account
  2. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、ジョブにバッチを追加します。

    curl -d @query.txt -H "X-SFDC-Session: sessionId" -H "Content-Type: text/csv; charset=UTF-8" https://instance.salesforce.com/services/async/41.0/job/jobId/batch

    jobId は、ジョブ作成の応答で返されたジョブ ID です。

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<batchInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <id>751x000000009vwAAA</id>
    5  <jobId>750x000000009tvAAA</jobId>
    6  <state>Queued</state>
    7  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
    8  <systemModstamp>2016-01-10T00:59:47.000Z</systemModstamp>
    9  <numberRecordsProcessed>0</numberRecordsProcessed>
    10  <numberRecordsFailed>0</numberRecordsFailed>
    11  <totalProcessingTime>0</totalProcessingTime>
    12  <apiActiveProcessingTime>0</apiActiveProcessingTime>
    13  <apexProcessingTime>0</apexProcessingTime>
    14</batchInfo>

    一括クエリジョブにバッチを追加するときに、要求のヘッダーの Content-Type には、ジョブの作成時に指定されたコンテンツタイプに応じて、text/csvapplication/xml、または application/json のいずれかを指定する必要があります。バッチに使用される実際の SOQL ステートメントは、平文テキスト形式で表されます。

    メモ

ジョブとバッチの状況の確認

  1. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、ジョブの状況を確認します。

    curl -H "X-SFDC-Session: sessionId" https://instance.salesforce.com/services/async/41.0/job/jobId

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<jobInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <id>750x000000009tvAAA</id>
    5  <operation>query</operation>
    6  <object>Account</object>
    7  <createdById>005x0000001WR0lAAG</createdById>
    8  <createdDate>2016-01-10T00:53:19.000Z</createdDate>
    9  <systemModstamp>2016-01-10T00:53:19.000Z</systemModstamp>
    10  <state>Open</state>
    11  <concurrencyMode>Parallel</concurrencyMode>
    12  <contentType>CSV</contentType>
    13  <numberBatchesQueued>0</numberBatchesQueued>
    14  <numberBatchesInProgress>0</numberBatchesInProgress>
    15  <numberBatchesCompleted>4</numberBatchesCompleted>
    16  <numberBatchesFailed>0</numberBatchesFailed>
    17  <numberBatchesTotal>4</numberBatchesTotal>
    18  <numberRecordsProcessed>350000</numberRecordsProcessed>
    19  <numberRetries>0</numberRetries>
    20  <apiVersion>36.0</apiVersion>
    21  <numberRecordsFailed>0</numberRecordsFailed>
    22  <totalProcessingTime>3500</totalProcessingTime>
    23  <apiActiveProcessingTime>3500</apiActiveProcessingTime>
    24  <apexProcessingTime>0</apexProcessingTime>
    25</jobInfo>
    PK Chunking が有効化されているため、クエリ全体を処理するための追加バッチが自動的に作成されます。
  2. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、元のバッチの状況を確認します。

    curl -H "X-SFDC-Session: sessionId" https://instance.salesforce.com/services/async/41.0/job/jobId/batch/batchId

    batchId は、バッチ作成の応答で返されたバッチ ID です。

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<batchInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <id>751x000000009vwAAA</id>
    5  <jobId>750x000000009tvAAA</jobId>
    6  <state>Not Processed</state>
    7  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
    8  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
    9  <numberRecordsProcessed>0</numberRecordsProcessed>
    10  <numberRecordsFailed>0</numberRecordsFailed>
    11  <totalProcessingTime>0</totalProcessingTime>
    12  <apiActiveProcessingTime>0</apiActiveProcessingTime>
    13  <apexProcessingTime>0</apexProcessingTime>
    14</batchInfo>
    PK Chunking が有効化されているため、元のバッチの状況は Not Processed になります。クエリは残りのバッチで処理されます。

残りのバッチの ID の取得

コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、残りのバッチを取得します。

curl -H "X-SFDC-Session: sessionId" https://instance.salesforce.com/services/async/41.0/job/jobId/batch

Salesforce により、次のようなデータを含む XML 応答が返されます。

1<?xml version="1.0" encoding="UTF-8"?><batchInfoList
2   xmlns="http://www.force.com/2009/06/asyncapi/dataload">
3 <batchInfo>
4  <id>751D00000004YjwIAE</id>
5  <jobId>750D00000004T5OIAU</jobId>
6  <state>NotProcessed</state>
7  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
8  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
9  <numberRecordsProcessed>0</numberRecordsProcessed>
10  <numberRecordsFailed>0</numberRecordsFailed>
11  <totalProcessingTime>0</totalProcessingTime>
12  <apiActiveProcessingTime>0</apiActiveProcessingTime>
13  <apexProcessingTime>0</apexProcessingTime>
14 </batchInfo>
15 <batchInfo>
16  <id>751D00000004Yk1IAE</id>
17  <jobId>750D00000004T5OIAU</jobId>
18  <state>Completed</state>
19  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
20  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
21  <numberRecordsProcessed>100000</numberRecordsProcessed>
22  <numberRecordsFailed>0</numberRecordsFailed>
23  <totalProcessingTime>1000</totalProcessingTime>
24  <apiActiveProcessingTime>1000</apiActiveProcessingTime>
25  <apexProcessingTime>0</apexProcessingTime>
26 </batchInfo>
27 <batchInfo>
28  <id>751D00000004Yk2IAE</id>
29  <jobId>750D00000004T5OIAU</jobId>
30  <state>Completed</state>
31  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
32  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
33  <numberRecordsProcessed>100000</numberRecordsProcessed>
34  <numberRecordsFailed>0</numberRecordsFailed>
35  <totalProcessingTime>1000</totalProcessingTime>
36  <apiActiveProcessingTime>1000</apiActiveProcessingTime>
37  <apexProcessingTime>0</apexProcessingTime>
38 </batchInfo>
39 <batchInfo>
40  <id>751D00000004Yk6IAE</id>
41  <jobId>750D00000004T5OIAU</jobId>
42  <state>Completed</state>
43  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
44  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
45  <numberRecordsProcessed>100000</numberRecordsProcessed>
46  <numberRecordsFailed>0</numberRecordsFailed>
47  <totalProcessingTime>1000</totalProcessingTime>
48  <apiActiveProcessingTime>1000</apiActiveProcessingTime>
49  <apexProcessingTime>0</apexProcessingTime>
50 </batchInfo>
51 <batchInfo>
52  <id>751D00000004Yk7IAE</id>
53  <jobId>750D00000004T5OIAU</jobId>
54  <state>Completed</state>
55  <createdDate>2016-01-10T00:59:47.000Z</createdDate>
56  <systemModstamp>2016-01-10T01:00:19.000Z</systemModstamp>
57  <numberRecordsProcessed>50000</numberRecordsProcessed>
58  <numberRecordsFailed>0</numberRecordsFailed>
59  <totalProcessingTime>500</totalProcessingTime>
60  <apiActiveProcessingTime>500</apiActiveProcessingTime>
61  <apexProcessingTime>0</apexProcessingTime>
62 </batchInfo>
63</batchInfoList>

結果の取得

残りの各バッチで次の手順を実行します。
  1. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、バッチ結果のリストを取得します。

    curl -H "X-SFDC-Session: sessionId" https://instance.salesforce.com/services/async/41.0/job/jobId/batch/batchId/result

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<result-list xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    3  <result>752x00000004CJE</result>
    4</result-list>
  2. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、クエリの結果を取得します。

    curl -H "X-SFDC-Session: sessionId" https://instance.salesforce.com/services/async/41.0/job/jobId/batch/batchId/result/resultId

    resultId は、バッチ結果リストの要求に対する応答で返された結果 ID です。

    Salesforce により、次のようなデータを含む CSV 応答が返されます。

    1"Id","Name"
    2"001x000xxx4TU4JAAW","name161268--1296595660659"
    3"001x000xxx4TU4KAAW","name161269--1296595660659"
    4"001x000xxx4TU4LAAW","name161270--1296595660659"
    5"001x000xxx4TU4MAAW","name161271--1296595660659"
    6"001x000xxx4TU4NAAW","name161272--1296595660659"
    7"001x000xxx4TU4OAAW","name161273--1296595660659"
    8"001x000xxx4TU4PAAW","name161274--1296595660659"
    9"001x000xxx4TU4QAAW","name161275--1296595660659"
    10"001x000xxx4TU4RAAW","name161276--1296595660659"
    11"001x000xxx4TU4SAAW","name161277--1296595660659"
    12...

ジョブの終了

  1. 次のテキストを含む、close-job.xml というファイルを作成します。
    1<?xml version="1.0" encoding="UTF-8"?>
    2<jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    3  <state>Closed</state>
    4</jobInfo>
  2. コマンドラインウィンドウを使用して、次の cURL コマンドを実行し、ジョブを終了します。

    curl -H "X-SFDC-Session: sessionId" -H "Content-Type: text/csv; charset=UTF-8" -d @close-job.xml https://instance.salesforce.com/services/async/41.0/job/jobId

    Salesforce により、次のようなデータを含む XML 応答が返されます。

    1<?xml version="1.0" encoding="UTF-8"?>
    2<jobInfo
    3    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    4  <id>750x000000009tvAAA</id>
    5  <operation>query</operation>
    6  <object>Account</object>
    7  <createdById>005x0000001WR0lAAG</createdById>
    8  <createdDate>2016-01-10T00:53:19.000Z</createdDate>
    9  <systemModstamp>2016-01-10T00:53:19.000Z</systemModstamp>
    10  <state>Closed</state>
    11  <concurrencyMode>Parallel</concurrencyMode>
    12  <contentType>CSV</contentType>
    13  <numberBatchesQueued>0</numberBatchesQueued>
    14  <numberBatchesInProgress>0</numberBatchesInProgress>
    15  <numberBatchesCompleted>4</numberBatchesCompleted>
    16  <numberBatchesFailed>0</numberBatchesFailed>
    17  <numberBatchesTotal>4</numberBatchesTotal>
    18  <numberRecordsProcessed>350000</numberRecordsProcessed>
    19  <numberRetries>0</numberRetries>
    20  <apiVersion>36.0</apiVersion>
    21  <numberRecordsFailed>0</numberRecordsFailed>
    22  <totalProcessingTime>3500</totalProcessingTime>
    23  <apiActiveProcessingTime>3500</apiActiveProcessingTime>
    24  <apexProcessingTime>0</apexProcessingTime>
    25</jobInfo>