PK Chunking ヘッダー
各チャンクは、別個のバッチとして処理されて 1 日あたりのバッチ制限に反映されます。また、各バッチの結果は別個にダウンロードする必要があります。PK Chunking は、サブクエリまたは WHERE 以外の条件が含まれていないクエリでのみ機能します。
PK Chunking は、WHERE 句でレコード ID 境界をクエリに追加し、クエリ結果を小規模なチャンクの合計結果数に制限することで動作します。残りの結果は、連続した境界を含む追加クエリで取得されます。各チャンクの ID 境界内にあるレコード件数は、チャンクサイズと呼ばれます。最初のクエリでは、指定された開始 ID と、開始 ID にチャンクサイズを加えた値の間にあるレコードが取得されます。次のクエリではレコードの次のチャンクが取得されます。
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
- Account
- AccountContactRelation
- AccountTeamMember
- AiVisitSummary
- Asset
- AssignedResource
- B2BMktActivity
- B2BMktProspect
- Campaign
- CampaignMember
- CandidateAnswer
- Case
- CaseArticle
- CaseComment
- ChangeRequest
- Claim
- ClaimParticipant
- Contact
- ContractLineItem
- ConversationDefinitionEventLog
- ConversationEntry
- CustomerProperty
- EinsteinAnswerFeedback
- EmailMessage
- EngagementScore
- Event
- EventRelation
- FeedItem
- Incident
- Individual
- InsurancePolicy
- InsurancePolicyAsset
- InsurancePolicyParticipant
- Lead
- LeadInsight
- LinkedArticle
- LiveChatTranscript
- LoginHistory
- LoyaltyLedger
- LoyaltyMemberCurrency
- LoyaltyMemberTier
- LoyaltyPartnerProduct
- LoyaltyProgramMember
- LoyaltyProgramPartner
- MlRetrainingFeedback
- Note
- ObjectTerritory2Association
- Opportunity
- OpportunityContactRole
- OpportunityHistory
- OpportunityLineItem
- OpportunitySplit
- OpportunityTeamMember
- Order
- OrderItem
- Pricebook2
- PricebookEntry
- Problem
- Product2
- ProductConsumed
- ProductRequired
- QuickText
- Quote
- QuoteLineItem
- ReplyText
- ScoreIntelligence
- ServiceContract
- Task
- TaskRelation
- TermDocumentFrequency
- TransactionJournal
- User
- UserRole
- VoiceCall
- VoiceCallRecording
- WebCart
- WorkloadUnit
- WorkOrder
- WorkOrderLineItem
- WorkPlan
- WorkPlanTemplate
サポートには、カスタムオブジェクトと、標準オブジェクトをサポートする共有テーブルおよび履歴テーブルも含まれます。
検索条件クエリ
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 を親オブジェクトとして指定します。
- startRow — 最初のチャンクの境界の下限として使用する 15 文字または 18 文字のレコード ID を指定します。バッチ間で失敗したジョブを再開するときに、このパラメータを使用して開始 ID を指定します。
- 例
- Sforce-Enable-PKChunking: chunkSize=50000; startRow=00130000000xEftMGH