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

PK Chunking

主キー (PK) Chunking 要求ヘッダーを使用すると、一括クエリジョブで自動的に PK Chunking を作成できます。PK Chunking では、大きなテーブルに対する一括クエリを、照会されるレコードのレコード ID (主キー) に基づいたチャンクに分割します。

各チャンクは、別個のバッチとして処理されて 1 日あたりのバッチ制限に反映されます。また、各バッチの結果は別個にダウンロードする必要があります。PK Chunking は、サブクエリまたは WHERE 以外の条件が含まれていないクエリでのみ機能します。

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 は、テーブル全体からデータを抽出するように設計されていますが、絞り込み条件が設定されたクエリにも使用できます。各クエリの結果からレコードが絞り込まれる可能性があるため、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。クエリがチャンクに分割されるときに、論理削除されたレコードの ID は計数されますが、そのレコードは結果から除外されます。したがって、論理削除されたレコードが特定のチャンクの ID 境界内にある場合、返される結果の件数はチャンクサイズを下回ります。状況によっては、正味のチャンクサイズが指定されたものより大きくなることもあります。

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

クエリがチャンクに正常に分割されると、元のバッチの状況が NOT_PROCESSED になります。チャンク分割に失敗すると、元のバッチの状況は FAILED になりますが、チャンク分割時に正常に分割されてキューに入れられたバッチは通常どおり処理されます。元のバッチの状況が NOT_PROCESSED に変更された場合は、後続のバッチを監視します。各後続のバッチの完了後に、そのバッチの結果を取得できます。その後安全にジョブを終了できます。

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

サポートされるオブジェクト

PK Chunking は、次のオブジェクトでのみ機能します。

  • Account
  • AccountContactRelation
  • AccountTeamMember
  • AiVisitSummary
  • Asset
  • AssignedResource
  • Campaign
  • CampaignMember
  • CandidateAnswer
  • Case
  • CaseArticle
  • CaseComment
  • CaseRelatedIssue
  • ChangeRequest
  • ChangeRequestRelatedIssue
  • ChangeRequestRelatedItem
  • Claim
  • ClaimParticipant
  • Contact
  • ContentDistribution
  • ContentDocument
  • ContentVersion
  • Contract
  • ContractLineItem
  • ConversationDefinitionEventLog
  • ConversationEntry
  • ConversationReason
  • ConversationReasonExcerpt
  • ConversationReasonGroup
  • CustomerProperty
  • EinsteinAnswerFeedback
  • EmailMessage
  • EngagementScore
  • Entitlement
  • Event
  • EventRelation
  • FeedItem
  • Incident
  • IncidentRelatedItem
  • Individual
  • InsurancePolicy
  • InsurancePolicyAsset
  • InsurancePolicyParticipant
  • Lead
  • LeadInsight
  • LinkedArticle
  • LiveChatTranscript
  • LoginHistory
  • LoyaltyAggrPointExprLedger
  • LoyaltyLedger
  • LoyaltyMemberCurrency
  • LoyaltyMemberTier
  • LoyaltyPartnerProduct
  • LoyaltyProgramMbrPromotion
  • LoyaltyProgramMember
  • LoyaltyProgramPartner
  • LoyaltyProgramPartnerLedger
  • MlRetrainingFeedback
  • Note
  • ObjectTerritory2Association
  • Opportunity
  • OpportunityContactRole
  • OpportunityHistory
  • OpportunityLineItem
  • OpportunitySplit
  • OpportunityTeamMember
  • Order
  • OrderItem
  • Pricebook2
  • PricebookEntry
  • Problem
  • ProblemIncident
  • ProblemRelatedItem
  • Product2
  • ProductConsumed
  • ProductRequired
  • QuickText
  • Quote
  • QuoteLineItem
  • ReplyText
  • ScoreIntelligence
  • ServiceContract
  • Task
  • TaskRelation
  • TermDocumentFrequency
  • TransactionJournal
  • User
  • UserRole
  • VoiceCall
  • VoiceCallRecording
  • Voucher
  • WebCart
  • WorkloadUnit
  • WorkOrder
  • WorkOrderLineItem
  • WorkPlan
  • WorkPlanTemplate

サポートにはカスタムオブジェクトも含まれます。

共有オブジェクトと履歴オブジェクト

標準オブジェクトがサポートされていればどの共有テーブルおよび履歴テーブルでも PK Chunking を使用できます。履歴オブジェクトおよび共有オブジェクトで PK-Chunking を有効にするには、parent ヘッダー項目名を使用して Sforce-Enable-PKChunking ヘッダーに親オブジェクトを指定します。

検索条件クエリ

PK Chunking は、テーブル全体からデータを抽出するように設計されていますが、絞り込み条件が設定されたクエリにも使用できます。

各クエリの結果からレコードが絞り込まれる可能性があるため、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。また、クエリがチャンクに分割されるときに、論理削除されたレコードの ID は計数されますが、そのレコードは結果から除外されます。したがって、論理削除されたレコードが特定のチャンクの ID 境界内にある場合、返される結果の件数はチャンクサイズを下回ります。

特定の一括クエリジョブでは、PK Chunking が事実上無効になるいくつかのクエリ制限が適用されます。

  • 項目名に「id」がある項目 (ID 項目) での絞り込み。
  • 「ORDER BY」句の使用。

ヘッダーの項目名と値

項目名
Sforce-Enable-PKChunking
項目値
  • TRUE — キューに入れられたテーブルの最初のレコード ID で開始し、デフォルトのチャンクサイズで PK Chunking を有効にします。
  • FALSE — PK Chunking を無効にします。要求にヘッダーが指定されていない場合、デフォルト値は FALSE です。
  • chunkSize — 各チャンクの ID 境界内にあるレコード件数を指定します。デフォルトは 100,000 で、最大サイズは 250,000 です。クエリに絞り込み条件が設定された、あるいは論理削除されたレコードが含まれている場合、各チャンクで返される結果の件数はチャンクサイズを下回る場合があります。その他の要因により、指定された chunkSize よりも大きな正味のチャンクサイズが返される可能性があります。チャンク内のレコード数をより厳しく制限するには、useSampledData ヘッダーを追加します。いずれにしても、最適なチャンクサイズの決定に、実験的な方法を用いることを検討してください。
  • parent — 共有オブジェクトのクエリで PK Chunking を有効にする場合に、親オブジェクトを指定します。チャンクは、共有オブジェクトのレコードではなく、親オブジェクトのレコードを基にしています。たとえば、AccountShare を照会する場合は、Account を親オブジェクトとして指定します。PK Chunking は、親オブジェクトがサポートされていれば、共有オブジェクトでもサポートされます。

    同様に、CaseHistory の場合、Case を親オブジェクトとして指定します。次に例を示します。

    Sforce-Enable-PKChunking: parent=Case

  • startRow — 最初のチャンクの境界の下限として使用する 15 文字または 18 文字のレコード ID を指定します。バッチ間で失敗したジョブを再開するときに、このパラメータを使用して開始 ID を指定します。
Sforce-Enable-PKChunking: chunkSize=50000; startRow=00130000000xEftMGH