1. データ抽出

接触と相互作用の抽出

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

CreateContactEnumerator()とCreateInteractionEnumerator()のメソッドを使って接触点やインタラクションを抽出してください。バッチサイズを指定し、展開オプションを使って各結果でどのファセットを返すべきか指定する必要があります。

データ抽出は同期実行できません。

接触線の抽出

以下の例は、すべての接触を抽出する方法を示しています。結果は200個のバッチで返されます。 CreateContactEnumerator() メソッドはContactExpandOptionsオブジェクトを受け入れ、どの接触面や関連する相互作用が返されるかを決定します。

!重要エクスポートされたJSONには、PIISensitiveとマークされたファセットを抽出する場合、PII(個人識別情報)が含まれます。

using Sitecore.XConnect; using Sitecore.XConnect.Collection.Model; using System; using System.Collections.Generic;

namespace Documentation { public class DataExtraction { // Async interaction public async void ExampleAsync() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { // Extract contacts var contactCursor = await client.CreateContactEnumerator( new ContactEnumeratorOptions( new ContactExpandOptions(PersonalInformation.DefaultFacetKey) { Interactions = new RelatedInteractionsExpandOptions(IpInfo.DefaultFacetKey) { StartDateTime = DateTime.UtcNow.AddDays(-300), EndDateTime = DateTime.UtcNow.AddDays(-200) } }) { BatchSize = 200 });

var totalContactsCount = contactCursor.TotalCount;

while (await contactCursor.MoveNext()) { // Batch of 200 var currentBatch = contactCursor.Current;

// Write batch to third party or do something else } } catch (XdbExecutionException ex) { // Manage exceptions } } } } }

!注データ抽出は 、マージ時に廃止された連絡先を含むすべての連絡先を返します。

相互作用の抽出

以下の例は、指定されたカットオフ日以前に保存されたすべての相互作用を抽出する方法を示しています。結果は200件のバッチで返されます。 CreateInteractionEnumerator() メソッドはInteractionExpandOptionsオブジェクトを受け入れ、どの相互作用面と関連する接触面が返されるかを決定します。

using Sitecore.XConnect; using Sitecore.XConnect.Collection.Model; using System; using System.Collections.Generic;

namespace Documentation { public class DataExtraction { // Async interaction public async void ExampleAsync() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { // Extract interactions var interactionCursor = await client.CreateInteractionEnumerator( new InteractionEnumeratorOptions(DateTime.UtcNow, new InteractionExpandOptions(IpInfo.DefaultFacetKey) { Contact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey) })

{ BatchSize = 200 });

var totalInteractionsCount = interactionCursor.TotalCount;

while (await interactionCursor.MoveNext()) { // Batch of 200 var currentBatch = interactionCursor.Current;

// Write batch to third party or do something else }

} catch (XdbExecutionException ex) { // Manage exceptions } } } } }

日付範囲の指定

CreateInteractionEnumerator()メソッドは、cutOffDateパラメータと連動する以下のオプションの構成パラメータを受け入れます。

  • minStartDateTime - 最小相互作用 StartDateTime (含む)。
  • maxStartDateTime- 最大相互作用 StartDateTime (排他的)。

相互作用のStartDateTimeプロパティは相互作用が開始された時期を表し、LastModifiedプロパティは相互作用がxConnectに保存された時刻を表します。外部システムからスケジュールされた間隔でインタラクションがインポートされた場合、LastModified日はStartDateTimeより大きい可能性が高いです。

開始日の範囲と終了日を指定することで、2つの日付間で発生したやり取りを抽出できますが、特定の日付以降にxConnectに保存されたその範囲内のやり取りは除外できます。

A cut-off date is used to limit the interactions that are extracted from xConnect

!注デフォルトでは、cutOffDateは抽出カーソルの作成時間を使用します。抽出処理に時間がかかるため、その後の新しい接触や相互作用は含まれません。

以下の例では、11月1日から11月10日までに始まったすべてのインタラクションを返しますが、11月8日以降に保存されたインタラクションは除外します。

using Sitecore.XConnect; using Sitecore.XConnect.Collection.Model; using System; using System.Collections.Generic;

namespace Documentation { public class DataExtraction { // Async interaction public async void ExampleAsync() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { var startDate = new DateTime(2017, 11, 01).ToUniversalTime(); // 1st November 2017

var endDate = new DateTime(2017, 11, 10).ToUniversalTime(); // 10th November 2017

var cutOff = new DateTime(2017, 11, 08).ToUniversalTime(); // 8th November 2017

// Extract interactions var dateRangeInteractionCursor = await client.CreateInteractionEnumerator(

new InteractionEnumeratorOptions(cutOff, new InteractionExpandOptions(IpInfo.DefaultFacetKey)

{ Contact = new RelatedContactExpandOptions(PersonalInformation.DefaultFacetKey)

})

{

MinStartDateTime = startDate,

MaxStartDateTime = endDate,

BatchSize = 200

});

var totalDateRangeInteractionsCount = dateRangeInteractionCursor.TotalCount;

while (await dateRangeInteractionCursor.MoveNext())

{

// Batch of 200

var currentBatch = dateRangeInteractionCursor.Current;

} } catch (XdbExecutionException ex) { // Manage exceptions } } } } }

カーソルマークの使用

プロセスが中断された場合、カーソルマークを使ってデータ抽出を再開できます。これは接触データ抽出とインタラクションデータ抽出の両方に適用されます。以下の例は、例外が投げられた場合にカーソルマークをCreateContactEnumerator() に渡す方法を示しています:

using Sitecore.XConnect; using Sitecore.XConnect.Collection.Model; using System; using System.Collections.Generic;

namespace Documentation { public class DataExtractionBookmark { // Async interaction public async void ExampleAsync(byte b) { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.XConnectClientConfiguration.GetClient()) { IAsyncEntityBatchEnumerator contactCursor = null; var batchSize = 200; byte bookmark = b;

try { var expandOptions = new RelatedInteractionsExpandOptions(IpInfo.DefaultFacetKey) { StartDateTime = DateTime.UtcNow.AddDays(-300), EndDateTime = DateTime.UtcNow.AddDays(-200) };

if (bookmark == null) { // Extract contacts - no bookmark contactCursor = await client.CreateContactEnumerator(new ContactEnumeratorOptions( new ContactExpandOptions(PersonalInformation.DefaultFacetKey) { Interactions = expandOptions }) { BatchSize = batchSize }); } else { // Extract contacts - with bookmark contactCursor = await client.CreateContactEnumerator( new BookmarkContactEnumeratorOptions( batchSize, bookmark, new ContactExpandOptions(PersonalInformation.DefaultFacetKey) { Interactions = expandOptions }));

} , batchSize); }

var totalContactsCount = contactCursor.TotalCount;

while (await contactCursor.MoveNext()) { // Batch of 200 var currentBatch = contactCursor.Current; bookmark = contactCursor.GetBookmark(); } } catch (XdbExecutionException ex) { // Something happened! // Restart at cursor mark ExampleAsync(bookmark); } } } } }

シャードの位置情報はカーソル内に保存されません。つまり、シャードが別のサーバーに移動されるとカーソルマークは期限切れになります。カーソルマークが期限切れになった場合は、データ抽出プロセスを最初から開始しなければなりません。

接触マージとデータ抽出

データ抽出がどのように処理されるかについては、マージ連絡先 を参照してください:

  • 以前に統合された連絡先。
  • データ抽出中に行われるコンタクトマージ。
この記事を改善するための提案がある場合は、 お知らせください!