データフィードのサブイベントコンポーネント
サブイベントコンポーネントは、XDM スキーマの配列内またはマップ内のフィールドに基づくディメンションと指標です。 これにより、購入時の個々の商品など、イベントレベルよりも詳細なレベルでデータを分析できます。 セグメントでのデータの使用について詳しくは、 サブイベント を参照してください。
次の情報を使用して、配列およびマップフィールドのサブイベントコンポーネントがCustomer Journey Analytics データフィードにどのように表示されるかを理解します。
サブイベントコンポーネントについて
XDM スキーマのサブイベントコンポーネント
XDM スキーマでは、配列の各要素(文字列配列またはオブジェクト配列)はサブイベントです。 マップフィールドの各エントリは、 データフィードのマップフィールド で説明されているように、サブイベントでもあります。 サブイベント内のフィールドに基づくディメンションと指標は、サブイベントコンポーネントです。
Adobe Experience PlatformのXDM スキーマ内のサブイベントを表示するには、Schemasを選択し、サブイベントを含むイベントを展開します。
次の例では、Product list itemsは、様々なサブイベントコンポーネントを含むオブジェクト配列です。
オブジェクト配列とサブイベントコンポーネントを含む
Analysis Workspaceとデータフィードのサブイベントの違い
サブイベントコンポーネントは、Customer Journey AnalyticsのAnalysis Workspaceとデータフィードで異なって表示されます。
Adobe AnalyticsとCustomer Journey Analyticsのサブイベントの違い
サブイベントデータ(1回の購入イベントで複数の商品の詳細など)は、Adobe Analytics データフィードとは異なり、Customer Journey Analytics データフィードに表示されます。 次の表は、各製品がサブイベントデータをどのように表しているかを比較したものです。
製品リストには、複数の製品が1つの文字列でグループ化されています。
Power Tools;Cordless Drill;1;129.99,Power Tools;Drill Battery Pack;2;39.98
製品リストは、XDM スキーマで配列として定義されている階層を維持します。
[{"category":"Power Tools","product":"Cordless Drill","quantity":1,"revenue":129.99},{"category":"Power Tools","product":"Drill Battery Pack","quantity":2,"revenue":39.98}]
サブイベントの例:購入イベント内の製品
顧客は、コードレスドリル 1個とドリルバッテリーパック 2個の2つの製品を1つの注文で購入します。 実装では、両方の製品をproductListItems オブジェクト配列に含む単一の購入イベントを送信します。
{
"eventType": "commerce.purchases",
"timestamp": "2026-09-16T14:32:07.512Z",
"commerce": {
"purchases": { "value": 1 }
},
"productListItems": [
{ "SKU": "CD-2000", "name": "Cordless Drill", "quantity": 1, "priceTotal": 129.99 },
{ "SKU": "BP-2000", "name": "Drill Battery Pack", "quantity": 2, "priceTotal": 39.98 }
]
}
このイベントには、2つのサブイベントが含まれており、productListItems配列内の各オブジェクトに1つずつ含まれます。 次の表は、イベントに属するフィールドと、そのサブイベントに属するフィールドを示しています。
eventType, timestamp, commerce.purchases.value1をカウントします。productListItems オブジェクトのSKU、name、quantity、priceTotalquantityはコードレスドリルの場合は1、ドリルバッテリーパックの場合は2です。productListItemsに製品を含める必要があります。データフィードへのサブイベントコンポーネントの追加
サブイベントコンポーネントをデータフィードに追加すると、同じサブイベントから他のコンポーネントを追加するように求めるダイアログが表示されます。
同じサブイベントのフィールドは、フラットアイテムではなく、折りたたみ可能なネストされたグループとしてキャンバスに表示されます。
このグループは、基礎となるデータ構造を反映しています。
データフィード出力では、これらのコンポーネントはすべて、ネストされた配列として1列に表示されます。 Parquet ファイルは、ネストされた配列をネイティブにサポートします。 詳しくは、 データフィードでのParquet ファイルの操作を参照してください。
サブイベントコンポーネントを含むコンポーネントをデータフィードに追加する方法について詳しくは、 データフィードの作成を参照してください。
データフィード出力のサブイベントデータのクエリ
サブイベントデータ はCustomer Journey Analytics データフィード で異なって表示されるため、Adobe Analytics データフィードで使用するクエリと使用するクエリは異なります。
次の例は、特定の製品を含むイベントを検索する方法を示しています。 この例では、Google BigQuery構文を使用しています。この構文では、UNNESTは配列を行に展開します。 SnowflakeのFLATTENやDatabricksのexplodeなど、独自の配列関数で同じアプローチをサポートするデータウェアハウスもあります。
Customer Journey Analytics データフィードでは、同じ2つの商品がproduct_list_items列のオブジェクトの配列として表示されます。 区切り文字の解析は必要ありません。
| code language-json |
|---|
|
クエリの書き方は、イベントごとに1行にするか、一致する製品ごとに1行にするかによって異なります。
イベントごとに1行を返す
行数を変更せずにイベントをフィルタリングするには、EXISTS サブクエリ内でUNNESTなどの配列関数を使用します。
| code language-sql |
|---|
|
このクエリは、一致するイベントごとに1行を返します。配列の中で一致する製品数に関係なく、完全なproduct_list_items配列はそのまま保持されます。
一致する製品ごとに1行を返します
一致する製品ごとに1行を返すには、配列関数を外部FROM句に移動します。
| code language-sql |
|---|
|
複数の一致する製品を持つイベントが複数の行として表示され、row_idなどのイベントの列が各行で繰り返されます。 この方法は、製品レベルの詳細が必要な場合にのみ使用してください。 結果のイベントをカウントするには、行をカウントする代わりにCOUNT(DISTINCT row_id)を使用します。
このアプローチは、製品だけでなく、XDM スキーマ内のあらゆる配列フィールドに適用されます。
Adobe Analytics データフィードでは、2つの商品が一緒に購入されたイベントが、product_list列に1つの区切り文字列として表示されます。
| code language-text |
|---|
|
コードレスドリルを含むイベントを見つけるには、この文字列を正規表現で解析します。
| code language-sql |
|---|
|
データフィードでのマップフィールドの使用
XDM スキーマストアのフィールドにキーと値のペアをマッピングします。 データフィードは、他の サブイベントデータ と同じように、各マップをオブジェクトの配列として書き出します。 各オブジェクトには、マップキーとその値が個別のフィールドとして含まれます。
出力のフィールド名は、データフィード用に設定したコンポーネント IDに由来し、keyやvalueなどの固定名ではありません。 この節の例では、サンプルコンポーネント IDを使用します。
シンプルなマップ
シンプルなマップは、独自のスキーマで作成できるマップタイプです。 各キーは文字列で、各値は文字列または整数です。
たとえば、調査マップでは、各質問がキーとして、回答が値として格納されます。
{
"_yourtenant": {
"surveyResponses": {
"How did you hear about us?": "Search engine",
"How likely are you to recommend us?": 9
}
}
}
データフィード出力では、survey_questionとsurvey_answerはキーと値のコンポーネント IDです。
{
"survey_responses": [
{ "survey_question": "How did you hear about us?", "survey_answer": "Search engine" },
{ "survey_question": "How likely are you to recommend us?", "survey_answer": 9 }
]
}
ID マップ
identityMap フィールドの各IDは、1つのオブジェクトとして書き出されます。 オブジェクトには、ID名前空間(キー)、識別子、認証状態、プライマリフラグが含まれます。 名前空間は、その名前空間内の各IDに対して繰り返されます。
データビューにディメンションとして存在し、データフィードに追加したID マップ属性のみが書き出されます。
{
"identity_map": [
{ "identity_namespace": "ECID", "identity_id": "83290187457380573620940587193016478103", "authenticated_state": "ambiguous", "is_primary": true },
{ "identity_namespace": "CRMID", "identity_id": "C-1048576", "authenticated_state": "authenticated", "is_primary": false }
]
}
ネストされたマップ
segmentMembershipなどのAdobe定義フィールドの中には、マップのマップです。 データフィードは、これらを単一の配列に統合し、1番目のレベルのキーと2番目のレベルのキーを各オブジェクトの個別のフィールドとして使用します。 第1 レベルのキーは、適用される各オブジェクトで繰り返されるため、データや関係が失われることはありません。
例えば、segment_namespaceとsegment_idは、第1 レベルのキーと第2 レベルのキーのコンポーネント IDです。
{
"segment_membership": [
{ "segment_namespace": "ups", "segment_id": "04a81716-43d6-4e7a-a49c-f1d8b3129ba9", "status": "realized" },
{ "segment_namespace": "ups", "segment_id": "53cba6b2-a23b-454a-8069-fc41308f1c0f", "status": "exited" }
]
}