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<Contact> 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);
                }
            }
        }
    }
}

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

連絡先のマージとデータ抽出

データ抽出の処理方法の詳細については、「 連絡先のマージ 」を参照してください。

  • 以前にマージされた連絡先。

  • データ抽出の進行中に発生する連絡先のマージ。

この記事を改善するための提案がある場合は、 お知らせください!