Identity Graph Linking Rulesのトラブルシューティング ガイド
Identity Graph Linking Rulesをテストして検証する際に、データの取り込みとグラフの動作に関連する問題が発生する場合があります。 このドキュメントでは、Identity Graph Linking Rulesを操作する際に発生する可能性のある一般的な問題のトラブルシューティング方法について説明します。
データ取り込みフローの概要 data-ingestion-flow-overview
次の図は、Adobe Experience Platformとアプリケーションへのデータの流れを簡略化したものです。 この図を参照として使用すると、このページの内容をより深く理解できます。
次の要素に注意することが重要です。
- ストリーミングデータの場合、Real-Time Customer Profile、ID Service、データレイクは、データの送信時にデータの処理を開始します。 ただし、データの処理を完了するための待ち時間は、サービスによって異なります。 通常、プロファイルやIDと比較して、データレイクの処理には長い時間がかかります。
- 数時間後でもデータセットに対してクエリを実行してもデータが表示されない場合は、データがExperience Platformに取り込まれなかった可能性があります。
- バッチデータの場合、すべてのデータはまずデータレイクに流れ込み、データセットがプロファイルとIDに対して有効になっている場合、データはプロファイルとIDに反映されます。
- 取り込み関連の問題については、正確なデバッグとトラブルシューティングのために、問題をサービスレベルで分離することが重要です。 考慮すべき潜在的な問題タイプは3つあります。
データ取り込みの問題 data-ingestion-issues
-
このセクションでは、データがデータレイクに正常に取り込まれ、最初にExperience Platformにデータを取り込むのを妨げる構文やその他のエラーがないことを前提としています。
-
この例では、ECIDをCookie名前空間として、CRMIDを人物名前空間として使用しています。
自分のIDがID サービスに取り込まれていません my-identities-are-not-getting-ingested-into-identity-service
この問題が発生する理由は様々ですが、次のようなものがあります。
- プロファイル に対してデータセットが有効になっていません。
- イベント内にIDが1つしかないため、レコードはスキップされます。
- ID サービス で検証エラーが発生しました。
- 例えば、ECIDが最大長38文字を超えている可能性があります。
- デフォルトでは、AAIDは取り込みからブロックされます。
- システムガードレール により、IDが削除されます。
Identity Graph Linking Rulesのコンテキストでは、受信イベントに同じ一意の名前空間を持つ2つ以上のIDが含まれていますが、ID値が異なるため、レコードがID サービスから拒否される可能性があります。 このシナリオは通常、実装エラーが原因で発生します。
次のイベントを2つの仮定で考えてみましょう。
- フィールド名CRMIDは、名前空間CRMIDを持つIDとしてマークされます。
- 名前空間CRMIDは、一意の名前空間として定義されます。
次のイベントは、取り込みが失敗したことを示すエラーメッセージを返します。
{
"_id": "random_string",
"eventType": "web browsing event",
"identityMap": {
"ECID": [
{
"id": "11111111111111111111111111111111111111",
"primary": false
}
],
"CRMID": [
{
"id": "Alice",
"primary": true
}
]
},
"CRMID": "Bob",
"timestamp": "2024-08-17T15:22:51+00:00",
"web": {
"webPageDetails": {
"URL": "https://www.adobe.com/acrobat.html",
"name": "Adobe Acrobat"
}
}
}
トラブルシューティング手順
このエラーを解決するには、まず次の情報を収集する必要があります。
- ID グラフに取り込む予定のID値(
identity_value)。 - イベントが送信されたデータセット (
dataset_name)。
次に、Adobe Experience Platform クエリサービス を使用して、次のクエリを実行します。
dataset_nameとidentity_valueを、収集した情報に置き換えます。 SELECT key, col.id as identityValue, timestamp, _id, identityMap, *
FROM (SELECT key, explode(value), *
FROM (SELECT explode(identityMap), *
FROM dataset_name)) WHERE col.id = 'identity_value'
クエリを実行した後、グラフを生成する予定のイベントレコードを見つけ、ID値が同じ行で異なることを検証します。 例については、次の画像を参照してください。
認証後のExperienceEventsは、間違った認証プロファイルに関連付けられています
名前空間優先度は、イベントフラグメントがプライマリ IDを決定する際に重要な役割を果たします。
認証済みユーザーイベント をユーザー名前空間に関連付けるには、すべての認証済みイベントにユーザー名前空間(CRMID)が含まれている必要があります。 つまり、ユーザーがログインした後でも、認証されたすべてのイベントにユーザー名前空間が存在する必要があります。
プロファイルビューアでプロファイルを検索すると、primary=true ‘イベント’ フラグが引き続き表示される場合があります。 ただし、これは無視され、プロファイルでは使用されません。
AAIDはデフォルトでブロックされます。 したがって、Adobe Analytics ソースコネクタ を使用している場合は、未認証のイベントがECIDのプライマリ IDを持つように、ECIDがECIDよりも優先されるようにしなければなりません。
トラブルシューティング手順
- 認証されたイベントに個人とCookieの両方の名前空間が含まれていることを検証するには、ID サービスに取り込まれていないデータに関するエラーのトラブルシューティング の節で概説されている手順を参照してください。
- 認証済みイベントがユーザー名前空間のプライマリ ID (CRMIDなど)を持っていることを検証するには、ステッチなし結合ポリシー(プライベートグラフを使用しない結合ポリシー)を使用して、プロファイルビューアでユーザー名前空間を検索します。 この検索では、ユーザー名前空間に関連付けられたイベントのみが返されます。
エクスペリエンスイベントフラグメントがプロファイルに取り込まれない my-experience-event-fragments-are-not-getting-ingested-into-profile
エクスペリエンスイベントフラグメントがプロファイルに取り込まれない理由には、次のような様々な理由があります。
-
プロファイル に対してデータセットが有効になっていません。
-
プロファイル で検証エラーが発生した可能性があります。
- 例えば、エクスペリエンスイベントには
_idとtimestampの両方を含める必要があります。 - さらに、
_idは各イベント(レコード)に対して一意である必要があります。
- 例えば、エクスペリエンスイベントには
名前空間の優先度のコンテキストでは、プロファイルは、受信イベント ので名前空間の優先度が最も高い2つ以上のIDを含むイベントを拒否します。 例えば、ID設定が次のように設定されているとします。
各シナリオについて、エクスペリエンスイベントに次のイベントが含まれていると仮定します。
シナリオ 1: 2 GAID、1 ECID
- このシナリオでは、受信エクスペリエンスイベントに2つのGAIDと1つのECIDが含まれます。 これらの名前空間の間で、GAIDは名前空間の優先順位が最も高い名前空間として設定されます。 ただし、2つのGAIDがあるので、プロファイル はこのエクスペリエンスイベントを保存しません。
シナリオ 2: 2 CRMID、1 GAID
- このシナリオでは、受信エクスペリエンスイベントに2つのCRMIDと1つのGAIDが含まれます。 これらの名前空間の間では、CRMIDは名前空間の優先度が最も高い名前空間として設定されます。 ただし、CRMIDが2つあるため、プロファイル はこのエクスペリエンスイベントを保存しません。
シナリオ 3: 1 CRMID、2 GAID
- このシナリオでは、受信エクスペリエンスイベントに1つのCRMIDと2つのGAIDが含まれます。 これらの名前空間の間では、CRMIDは名前空間の優先度が最も高い名前空間として設定されます。 CRMIDは1つしかないため、プロファイルは、名前空間の優先順位が最も高い名前空間のIDが1つしかないため、エクスペリエンスイベントを取り込みます。
トラブルシューティング手順
データがプロファイルではなくデータレイクに送信され、これが1つのイベントで名前空間の優先度が最も高い2つ以上のIDを送信することが原因であると考えられる場合は、次のクエリを実行して、同じ名前空間に対して2つの異なるID値が送信されていることを検証できます。
_testimsorg.identification.core.emailをIDを送信するパスに置き換えます。Emailを優先度の高い名前空間に置き換えます。 これは、取り込まれていないのと同じ名前空間です。dataset_nameをクエリするデータセットに置き換えます。
SELECT identityMap, key, col.id as identityValue, _testimsorg.identification.core.email, _id, timestamp
FROM (SELECT key, explode(value), *
FROM (SELECT explode(identityMap), *
FROM dataset_name)) WHERE col.id != _testimsorg.identification.core.email and key = 'Email'
このクエリは、次の条件を満たしていることを前提としています。
- 1つのIDはidentityMapから送信され、別のIDはID記述子から送信されます。 メモ: Experience Data Model (XDM) スキーマでは、ID記述子はIDとしてマークされたフィールドです。
- CRMIDはidentityMapを介して送信されます。 CRMIDがフィールドとして送信される場合は、WHERE句から
key='Email'を削除します。
グラフ動作に関連する問題 graph-behavior-related-issues
この節では、ID グラフの動作に関して発生する可能性のある一般的な問題の概要を説明します。
未認証のExperienceEventsが間違った認証済みプロファイルに接続される
ID最適化アルゴリズムは最新のリンクを尊重し、最も古いリンクを削除します。 したがって、この機能を有効にすると、ECIDをあるユーザーから別のユーザーに再割り当て(再リンク)できる可能性があります。 IDが時間の経過とともにどのようにリンクされるかを理解するには、次の手順に従います。
トラブルシューティング手順
-
1つのデータセットが使用中です(複数のデータセットをクエリしません)。
-
Advanced Data Lifecycle Management、Privacy Serviceまたはその他の削除中のサービスにより、データがデータレイクから削除されない。
まず、次の情報を収集する必要があります。
- Cookie名前空間(ECIDなど)のID記号(namespaceCode)と、送信されたユーザー名前空間(CRMIDなど)。1.1. Web SDKの実装の場合、これらは通常、identityMapに含まれる名前空間です。1.2. Analytics ソースコネクタ実装の場合、これらはidentityMapに含まれるCookie IDです。 個人IDは、IDとしてマークされたeVar フィールドです。
- イベントが送信されたデータセット(dataset_name)。
- 検索するCookie名前空間のID値(identity_value)。
ID記号(namespaceCode)では、大文字と小文字が区別されます。 identityMap内の特定のデータセットのすべてのID シンボルを取得するには、次のクエリを実行します。
SELECT distinct explode(*)FROM (SELECT map_keys(identityMap) FROM dataset_name)
Cookie IDのID値がわからない場合に、複数のユーザーIDにリンクされたCookie IDを検索する場合は、次のクエリを実行する必要があります。 このクエリは、ECIDをCookie名前空間として、CRMIDを人物名前空間として仮定します。
| code language-sql |
|---|
|
| code language-sql |
|---|
|
注: personIDは、記述子のパスを参照します。 この情報はスキーマの下にあります。
複数の人物IDにリンクされたcookie値を特定したら、結果から1つを取得し、次のクエリで使用して、そのcookie値が別の人物IDにリンクされたときの時系列ビューを取得します。
| code language-sql |
|---|
|
| code language-sql |
|---|
|
注:この例では、eVar10がIDとしてマークされていることを前提としています。 設定の場合は、組織の実装に基づいてeVarを変更する必要があります。
ID最適化アルゴリズムが期待どおりに「動作していません」
トラブルシューティング手順
ID最適化アルゴリズム に関するドキュメントと、サポートされているグラフ構造の種類を参照してください。
-
サポートされているグラフ構造の例については、 グラフ設定ガイド を参照してください。
-
サポートされていないグラフ構造の例については、実装ガイド を参照することもできます。 起こりうるシナリオは2つあります。
- あらゆるプロファイルをまたいで、ひとつの名前空間を定義する必要はありません。
- 「ダングリング ID」 のシナリオが発生します。 このシナリオでは、ID サービスは、ぶら下がっているIDがグラフ内の人物エンティティのいずれかに関連付けられているかどうかを判断できません。
UI🔗の グラフシミュレーションツールを使用して、イベントをシミュレートし、独自の名前空間と名前空間の優先度設定を設定することもできます。 これにより、ID最適化アルゴリズムの動作を基本的に把握できます。
シミュレーション結果がグラフの動作の期待値と一致する場合は、ID設定がシミュレーションで設定した設定と一致するかどうかを確認できます。
ID設定を設定した後でも、サンドボックスに折りたたまれたグラフが表示される
ID グラフは、設定された一意の名前空間と名前空間の優先度 後 に、設定が保存された状態に従います。 新しい設定を保存する 前 に存在する「折りたたまれた」グラフは、折りたたまれたグラフが更新されるように新しいデータが取り込まれるまで、影響を受けません。 リアルタイム顧客プロファイル上のイベントフラグメントのプライマリ IDは、名前空間の優先順位が変更された後でも更新されません。
トラブルシューティング手順
ID グラフビューア を使用して、グラフが設定の前または後に取り込まれたかどうかを確認できます。 ID サービスがグラフを取り込んだタイミングを確認するには、 リンクプロパティ の下で最後に更新されたタイムスタンプを調べます。 タイムスタンプが設定の前にある場合は、機能を有効にする前に「折りたたまれた」グラフが作成されたことを示します。
サンドボックスに「折りたたまれた」グラフがいくつあるか知りたい
ID ダッシュボードを使用して、IDやグラフの数など、ID グラフの状態に関するインサイトを得ることができます。 折りたたまれたグラフの数については、「複数の名前空間を持つグラフ数」という指標を参照してください。これらは、同じ名前空間を持つ2つ以上のIDを含むグラフです。 サンドボックスにデータがなく、名前空間(CRMIDなど)が一意に設定されていると仮定すると、2つ以上のCRMIDを持つグラフはゼロである必要があります。 次の例では、2つ以上の電子メールアドレスを含む2つのグラフがあります。
以下のクエリを実行すると、データレイクの プロファイルスナップショット書き出しデータセット の詳細な分類を確認できます。
-
dataset_nameをデータセットの実際の名前に置き換えます。 -
カウントが正確に一致しない場合があります。 ID ダッシュボードはID グラフ数に基づいており、次のクエリは2つ以上のIDを持つプロファイル数に基づいています。 データは、サービスによって個別に処理および更新されます。
SELECT key, identityCountInGraph, count(identityCountInGraph) as graphCount
FROM (SELECT key, cardinality(value) as identityCountInGraph
FROM (SELECT explode(identityMap)
FROM dataset_name
WHERE cardinality(identityMap) > 1)) /* by definition, graphs have 2 or more identities */
WHERE key not in ('ecid', 'aaid', 'idfa', 'gaid') /* filter out common device/cookie namespaces */
GROUP BY 1, 2
ORDER BY 1, 2 asc
プロファイルのスナップショット書き出しデータセットで次のクエリを使用して、「折りたたまれた」グラフからサンプル IDを取得できます。
SELECT identityMap
FROM dataset_name
WHERE cardinality(identityMap['CRMID'])>1 /* any graphs with 2+ CRMID. Change CRMID namespace if needed */
よくある質問 faq
このセクションでは、Identity Graph Linking Rulesに関するよくある質問に対する回答のリストを説明します。
ID 最適化アルゴリズム identity-optimization-algorithm
この節では、ID最適化アルゴリズム に関するよくある質問への回答を示します。
ビジネスユニット(B2C CRMID、B2B CRMID)ごとにCRMIDを持っていますが、すべてのプロファイルで一意の名前空間を持っているわけではありません。 B2C CRMIDとB2B CRMIDを一意としてマークし、ID設定を有効にするとどうなりますか?
このシナリオはサポートされていません。 したがって、ユーザーがB2C CRMIDを使用してログインし、別のユーザーがB2B CRMIDを使用してログインする場合、グラフが折りたたまれる可能性があります。 詳しくは、実装ページの「単一のユーザー名前空間要件」の節を参照してください。
Id最適化アルゴリズムは、既存の折りたたまれたグラフを「修正」しますか?
既存の折りたたまれたグラフは、新しい設定を保存した後にこれらのグラフが更新された場合にのみ、グラフアルゴリズムによって影響を受けます(「修正」)。
2人のユーザーが同じデバイスを使用してログインおよびログアウトした場合、イベントはどうなりますか? すべてのイベントは、最後に認証されたユーザーに転送されますか?
- 匿名イベント(リアルタイム顧客プロファイル上のプライマリ IDとしてECIDを持つイベント)は、最後に認証されたユーザーに転送されます。 これは、ECIDが(ID サービス上で)最後に認証されたユーザーのCRMIDにリンクされるためです。
- すべての認証済みイベント(プライマリ IDとして定義されたCRMIDを持つイベント)は、その人物に残ります。
詳しくは、 エクスペリエンスイベントのプライマリ IDの決定に関するガイドを参照してください。
ECIDがある人から別の人に転送される場合、Adobe Journey Optimizerのジャーニーはどのように影響しますか?
最後に認証されたユーザーのCRMIDは、ECID (共有デバイス)にリンクされます。 ECIDは、ユーザーの行動に基づいて、あるユーザーから別のユーザーに再割り当てできます。 影響はジャーニーの構築方法によって異なるため、顧客が開発サンドボックス環境でジャーニーをテストして動作を検証することが重要です。
重要なポイントは次のとおりです。
-
プロファイルがジャーニーに入ると、ECIDの再割り当てによって、プロファイルがジャーニーの途中で離脱することはありません。
- ジャーニーの終了は、グラフの変更によってトリガーされません。
-
プロファイルがECIDに関連付けられなくなった場合、オーディエンスの選定を使用する条件がある場合、ジャーニーパスが変更される可能性があります。
- ECIDの削除により、プロファイルに関連するイベントが変更され、オーディエンスの選定が変更される可能性があります。
-
ジャーニーの再入力は、ジャーニーのプロパティに依存します。
- ジャーニーの再入力を無効にすると、プロファイルがそのジャーニーから離脱すると、同じプロファイルは91日間再入力されません(グローバルジャーニータイムアウトに基づく)。
-
ジャーニーがECID名前空間で始まる場合、入力するプロファイルとアクションを受け取るプロファイル(例: メール、オファー)は、ジャーニーの設計方法によって異なる場合があります。
- 例えば、アクション間に待機条件があり、待機期間中にECID転送がある場合、別のプロファイルがターゲットにされる可能性があります。
- この機能を使用すると、ECIDは1つのプロファイルに常に関連付けられなくなります。
- ユーザーネームスペース(CRMID)を使用してジャーニーを開始することをお勧めします。
- ECIDと、一意でないメール/電話名前空間が、ある人から別の人に移動する可能性があります。
- ジャーニーに待機条件があり、一意でない名前空間を使用してジャーニーのプロファイルを検索する場合、ジャーニーメッセージが誤ったユーザーに送信される可能性があります。
名前空間の優先度
名前空間の優先度に関するよくある質問に対する回答については、この節を参照してください。
ID設定を有効にしました。 設定を有効にした後にカスタム名前空間を追加する場合、設定はどうなりますか?
名前空間には、個人の名前空間とデバイス/cookieの名前空間の2つの「バケット」があります。 新しく作成されたカスタム名前空間は、各「バケット」で最も優先度が低くなるため、この新しいカスタム名前空間が既存のデータ取り込みに影響を与えることはありません。
Real-Time Customer ProfileがIDMapで「プライマリ」フラグを使用しなくなった場合、この値を送信する必要がありますか?
はい、identityMapの「primary」フラグは他のサービスで使用されます。 詳しくは、他のExperience Platform サービスに対する名前空間の優先度の影響に関するガイドを参照してください。
Real-Time Customer Profileのプロファイルレコードデータセットには、名前空間優先度が適用されますか?
いいえ。 名前空間優先度は、XDM ExperienceEvent クラスを使用するExperience Event データセットにのみ適用されます。
この機能は、1つのグラフにつき50 IDのID グラフガードレールと連動して、どのように機能しますか? 名前空間の優先順位は、このシステム定義のガードレールに影響しますか?
ID最適化アルゴリズムは、個人エンティティの表現を確保するために、最初に適用されます。 その後、グラフがID グラフガードレール (グラフごとに50 ID)を超えようとした場合、このロジックが適用されます。 名前空間の優先度は、50 ID/グラフガードレールの削除ロジックには影響しません。
テスト
Identity Graph Linking Rulesの機能のテストとデバッグに関するよくある質問に対する回答については、この節を参照してください。
開発サンドボックス環境でテストすべきシナリオは何ですか?
一般的に、開発用サンドボックスでのテストは、実稼動用サンドボックスで実行するユースケースを模倣する必要があります。 包括的なテストを実施する際に検証すべき主な領域については、次の表を参照してください。
- 匿名ブラウジングを模倣
- 同じデバイスを使用してログインする2人の人物(John、Jane)を模倣する
- JohnとJaneの両方を、属性と認証イベントに関連付ける必要があります。
- 最後に認証されたユーザーは、匿名の閲覧イベントに関連付ける必要があります。
4つのセグメント定義を作成します(メモ: セグメント定義の各ペアには、バッチと他のストリーミングを使用して1つのセグメントを評価する必要があります)。
- セグメント定義A: Johnの認証済みイベントや属性にもとづくオーディエンスの選定。
- セグメント定義B: Janeの認証済みイベントや属性にもとづくオーディエンスの選定
- オーディエンスの選定アクティビティ(上記で作成したストリーミングセグメンテーションなど)から始まるジャーニーを作成します。
- 単一イベントから始まるジャーニーを作成します。 この単一イベントは、認証済みイベントである必要があります。
- これらのジャーニーを作成する場合は、再入力を無効にする必要があります。
- JohnとJaneは、共有デバイスのシナリオに関係なく、入力すべき各ジャーニーをトリガーにする必要があります。
- JohnとJaneは、ECIDが自分たちに転送される際に、ジャーニーに再エントリしないでください。
この機能が期待どおりに動作していることを確認するにはどうすればよいですか?
グラフシミュレーションツール を使用して、フィーチャーが個々のグラフレベルで機能していることを検証します。
サンドボックスレベルで機能を検証するには、ID ダッシュボードの「複数の名前空間を含むグラフ数」セクションを参照してください。