1. 連絡先を操作する

xDBからのコンタクトとインタラクションの削除

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

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

Sitecore 9.2以降では、コンタクトと関連するすべてのインタラクション、ファセット、識別子を削除できます。この機能を使用して、ビジネスにとって価値がなくなったデータを削除します (たとえば、過去2年間のインタラクションがない取引先担当者を削除することができます)。次のビデオでは、非アクティブな連絡先を検索して削除する方法を示します。

次の点に注意してください。

  • 連絡先を削除することは、忘れられる権利を行使することとは異なります。

  • Sitecore 10.2以降では、XConnectパージ ツールを使用して インタラクションのサブセットを削除したり、コンタクトを削除せずにインタラクションを削除したりします。

  • コンタクトを削除すると、そのコンタクトのインタラクションが削除され、再構築を選択した場合にxDB Reporting databaseの集計データに影響します。

    メモ

    xDB Reportingデータベースには、再構築を選択するまで削除されたデータが含まれます。

  • アクティブなセッション中に削除された連絡先は、セッション終了時にトラッカーによって部分的に再作成されます。

次の例は、2つの連絡先のバッチを削除する方法を示しています。

using System;
using System.Threading.Tasks;
using Sitecore.XConnect;
using Sitecore.XConnect.Client;


namespace Documentation
{
    public class DeleteContact
    {
        // Async example
        public async void ExampleAsync()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    // Get contact
                    var referenceOne = new Sitecore.XConnect.ContactReference(Guid.Parse("A9812105-2D45-A612-82E6-34E6D7117DCB"));
                    var referenceTwo = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F45-E611-82E6-34E6D7117DCB"));

                    Task<Sitecore.XConnect.Contact> contactTaskOne = client.GetAsync<Sitecore.XConnect.Contact>(referenceOne, new ContactExecutionOptions(new ContactExpandOptions() { }));
                    Task<Sitecore.XConnect.Contact> contactTaskTwo = client.GetAsync<Sitecore.XConnect.Contact>(referenceTwo, new ContactExecutionOptions(new ContactExpandOptions() { }));
                    
                    Contact contactOne = await contactTaskOne;
                    Contact contactTwo = await contactTaskTwo;

                    // Delete contact
                    client.DeleteContact(contactOne);
                    client.DeleteContact(contactTwo);

                    await client.SubmitAsync();
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }

        // Sync example
        public void Example()
        {
            using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    // Get contact
                    var referenceOne = new Sitecore.XConnect.ContactReference(Guid.Parse("B9814105-1F55-E611-12E6-22E6D7117DCB"));
                    var referenceTwo = new Sitecore.XConnect.ContactReference(Guid.Parse("DB814105-1F45-E611-82E6-34E6D7117DCB"));

                    var contactOne = client.Get<Sitecore.XConnect.Contact>(referenceOne, new ContactExecutionOptions(new ContactExpandOptions() { }));
                    var contactTwo = client.Get<Sitecore.XConnect.Contact>(referenceTwo, new ContactExecutionOptions(new ContactExpandOptions() { }));

                    // Delete contact
                    client.DeleteContact(contactOne);
                    client.DeleteContact(contactTwo);

                    client.Submit();
                }
                catch (XdbExecutionException ex)
                {
                    // Manage exceptions
                }
            }
        }
    }
}

連絡先の削除ロジック

連絡先を削除すると、次のようになります。

  • 次のデータがxDB Collectionデータベースから削除されます。

    • インタラクションファセット

    • 相互 作用

    • コンタクトファセット

    • 接触

    • 連絡先識別子インデックス

    手記

    連絡先に関連付けられているデバイスプロファイルは削除されません。

  • xDB Searchインデクサーは、xDBインデックスからすべてのコンタクトデータとインタラクションデータを削除します。

  • Marketing Automation EngineのxConnectサービス プラグイン (Sitecore.XConnect.Service.Plugins.MarketingAutomation.XdbContactEventWatcher) は、削除されたコンタクトをすべてのオートメーション プランから削除するための優先度の高い作業項目を追加します。

削除操作を使用するときは、次の点に注意してください。

  • 削除操作では、同時実行トークンの検証は無視されます。つまり、連絡先は並列スレッドによって更新されている場合でも削除され、連絡先識別子インデックスがロックされている場合でも連絡先識別子は削除されます。

  • 削除操作はトランザクションレスであるため、プロバイダー レベル (SQL) でシステム エラーが発生した場合、データが部分的に削除される可能性があります。

連絡先の削除と結合

2つの連絡先がマージされると、ソース連絡先とターゲット連絡先の間に参照が追加されます。ターゲット連絡先はマージ識別子を介してソース連絡先を参照し、ソース連絡先はファセットプロパティを介してターゲット連絡先を参照します。

複数のマージ操作の一部である連絡先は、関連する連絡先のマージ ツリーになります。次の図では、Known2が複数のマージ操作の対象であり、マージ ツリーの現在のルートです。

手記

この例では、読みやすくするためにGUIDの代わりにテキスト識別子を使用しています。

Sitecore 9.2と9.3では、次のシナリオの処理方法が若干異なります。

  • マージ ツリーの中央にある連絡先を削除する ( Known1など)。

  • ルート連絡先の削除 ( Known2など)。

9.2での連絡先の削除とマージ

Sitecore 9.2では、コンタクトを削除するときに次のロジックが適用されます。

  • マージ ツリーの途中にある連絡先 (Known1など) を削除すると、 Anon1Anon2Known2をリンクするチェーンが切断され、Anon1Anon2が孤立します。

  • ルート連絡先を削除しても、他の連絡先は削除されません。ダイアグラムでObsoleteとマークされた連絡先は、xDB Collectionデータベースに残ります。

9.3以降での連絡先の削除と結合

9.3以降では、連絡先を削除するときに次のロジックが適用されます。

  • マージツリーの途中にある連絡先 ( Known1など) を削除すると、ルート連絡先とブランチ内の残りの連絡先との間に新しい参照が作成されます。次の例では、Known2Anon1/Anon2の間に参照が追加されています。

  • ルート連絡先を削除すると、マージ ツリー全体が削除されます。つまり、Known2を削除すると、Anon1Anon2Anon3Known1も削除されます。

削除と忘れられる権利

コンタクトの削除は、xConnectの「忘れられる権利」機能を使用することと同じではありません。組織は、特定のケースでGDPRやその他のデータ プライバシー法の要件を満たすオプションを決定する必要があります。

警告

アクティブなセッション中に削除された連絡先は、既知または匿名の識別子を含め、トラッカーによって部分的に再作成されることに注意してください。

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