データフィードのサブイベントコンポーネント

AVAILABILITY
この記事で説明している機能は、リリースの限定的テスト段階にあり、お使いの環境ではまだ使用できない可能性があります。 機能が一般公開されたら、このメモは削除されます。 Customer Journey Analytics リリースプロセスについて詳しくは、Customer Journey Analytics 機能リリースを参照してください。

サブイベントコンポーネントは、XDM スキーマの配列内またはマップ内のフィールドに基づくディメンションと指標です。 これにより、購入時の個々の商品など、イベントレベルよりも詳細なレベルでデータを分析できます。 セグメントでのデータの使用について詳しくは、​ サブイベント ​を参照してください。

次の情報を使用して、配列およびマップフィールドのサブイベントコンポーネントがCustomer Journey Analytics データフィードにどのように表示されるかを理解します。

サブイベントコンポーネントについて

XDM スキーマのサブイベントコンポーネント

XDM スキーマでは、配列の各要素(文字列配列またはオブジェクト配列)はサブイベントです。 マップフィールドの各エントリは、​ データフィードのマップフィールド ​で説明されているように、サブイベントでもあります。 サブイベント内のフィールドに基づくディメンションと指標は、サブイベントコンポーネントです。

Adobe Experience PlatformのXDM スキーマ内のサブイベントを表示するには、Schemas​を選択し、サブイベントを含むイベントを展開します。

次の例では、Product list itemsは、様々なサブイベントコンポーネントを含むオブジェクト配列です。

オブジェクト配列とサブイベントコンポーネントを含む XDM スキーマ ​

Analysis Workspaceとデータフィードのサブイベントの違い

サブイベントコンポーネントは、Customer Journey AnalyticsのAnalysis Workspaceとデータフィードで異なって表示されます。

場所
サブイベントコンポーネントの表現方法
Analysis Workspace(Customer Journey Analytics内)
表示されている階層とは別に、個々のコンポーネントとして選択できます。
データフィード (Customer Journey Analytics内)
グループとして表され、階層は維持されます。

Adobe AnalyticsとCustomer Journey Analyticsのサブイベントの違い

サブイベントデータ(1回の購入イベントで複数の商品の詳細など)は、Adobe Analytics データフィードとは異なり、Customer Journey Analytics データフィードに表示されます。 次の表は、各製品がサブイベントデータをどのように表しているかを比較したものです。

製品
データフィードでのサブイベントデータの表示方法
例:製品リスト
Adobe Analytics
1列の区切り文字列にフラット化されます。

製品リストには、複数の製品が1つの文字列でグループ化されています。

Power Tools;Cordless Drill;1;129.99,Power Tools;Drill Battery Pack;2;39.98

Customer Journey Analytics
サブイベントコンポーネントは、XDM スキーマで定義された階層を保持します。 同じ列にグループ化されている間、親イベントと兄弟サブイベントに関係する階層が表示されます。

製品リストは、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.value
購入全体です。 各フィールドには、イベントの1つの値があります。 注文数​指標は、このイベントに含まれる製品数に関係なく1をカウントします。
サブイベント
各productListItems オブジェクトのSKU、name、quantity、priceTotal
購入時の個別商品。 各フィールドには、製品ごとに1つの値があります。 例えば、quantityはコードレスドリルの場合は1、ドリルバッテリーパックの場合は2です。
NOTE
サブイベントには、イベントと共に送信されるデータのみが含まれます。 Customer Journey Analyticsでは、買い物かごの追加やチェックアウトなど、以前のイベントから買い物かごの内容を再構築することはありません。 製品を購入イベントのサブイベントとして表示するには、実装でその購入イベントのproductListItemsに製品を含める必要があります。

データフィードへのサブイベントコンポーネントの追加

サブイベントコンポーネントをデータフィードに追加すると、同じサブイベントから他のコンポーネントを追加するように求めるダイアログが表示されます。

関連するサブイベントコンポーネントの追加を求めるダイアログ ​

同じサブイベントのフィールドは、フラットアイテムではなく、折りたたみ可能なネストされたグループとしてキャンバスに表示されます。

​ サブイベントグループ ​

このグループは、基礎となるデータ構造を反映しています。

データフィード出力では、これらのコンポーネントはすべて、ネストされた配列として1列に表示されます。 Parquet ファイルは、ネストされた配列をネイティブにサポートします。 詳しくは、​ データフィードでのParquet ファイルの操作を参照してください。

サブイベントコンポーネントを含むコンポーネントをデータフィードに追加する方法について詳しくは、​ データフィードの作成を参照してください。

データフィード出力のサブイベントデータのクエリ

サブイベントデータ はCustomer Journey Analytics データフィード ​で異なって表示されるため、Adobe Analytics データフィードで使用するクエリと使用するクエリは異なります。

次の例は、特定の製品を含むイベントを検索する方法を示しています。 この例では、Google BigQuery構文を使用しています。この構文では、UNNESTは配列を行に展開します。 SnowflakeのFLATTENやDatabricksのexplodeなど、独自の配列関数で同じアプローチをサポートするデータウェアハウスもあります。

Customer Journey Analytics データフィードの商品データのクエリ

Customer Journey Analytics データフィードでは、同じ2つの商品がproduct_list_items列のオブジェクトの配列として表示されます。 区切り文字の解析は必要ありません。

code language-json
{
  "row_id": "01K3F2M9-...-4821",
  "timestamp_utc": "2026-09-16T14:32:07.512000Z",
  "product_list_items": [
    { "category": "Power Tools", "product": "Cordless Drill", "quantity": 1, "revenue": 129.99,
      "events": {"event1": 1}, "merchandising": {"eVar10": "DrillBundle"} },
    { "category": "Power Tools", "product": "Drill Battery Pack", "quantity": 2, "revenue": 39.98,
      "events": {"event1": 1}, "merchandising": {"eVar10": "DrillBundle"} }
  ]
}

クエリの書き方は、イベントごとに1行にするか、一致する製品ごとに1行にするかによって異なります。

イベントごとに1行を返す

行数を変更せずにイベントをフィルタリングするには、EXISTS サブクエリ内でUNNESTなどの配列関数を使用します。

code language-sql
SELECT row_id, timestamp_utc, product_list_items
FROM `project.dataset.cja_data_feed` AS f
WHERE EXISTS (
  SELECT 1
  FROM UNNEST(f.product_list_items) AS item
  WHERE item.product = 'Cordless Drill'
);

このクエリは、一致するイベントごとに1行を返します。配列の中で一致する製品数に関係なく、完全なproduct_list_items配列はそのまま保持されます。

一致する製品ごとに1行を返します

一致する製品ごとに1行を返すには、配列関数を外部FROM句に移動します。

code language-sql
SELECT f.row_id, f.timestamp_utc, item.product, item.quantity, item.revenue
FROM `project.dataset.cja_data_feed` AS f,
     UNNEST(f.product_list_items) AS item
WHERE item.product = 'Cordless Drill';

複数の一致する製品を持つイベントが複数の行として表示され、row_idなどのイベントの列が各行で繰り返されます。 この方法は、製品レベルの詳細が必要な場合にのみ使用してください。 結果のイベントをカウントするには、行をカウントする代わりにCOUNT(DISTINCT row_id)を使用します。

このアプローチは、製品だけでなく、XDM スキーマ内のあらゆる配列フィールドに適用されます。

Adobe Analytics データフィードの商品データのクエリ

Adobe Analytics データフィードでは、2つの商品が一緒に購入されたイベントが、product_list列に1つの区切り文字列として表示されます。

code language-text
Power Tools;Cordless Drill;1;129.99;event1=1;eVar10=DrillBundle,Power Tools;Drill Battery Pack;2;39.98;event1=1;eVar10=DrillBundle

コードレスドリルを含むイベントを見つけるには、この文字列を正規表現で解析します。

code language-sql
SELECT hitid_high, hitid_low, post_evar10
FROM aa_hit_data
WHERE REGEXP_CONTAINS(product_list, r'(^|,)[^;]*;Cordless Drill;')

データフィードでのマップフィールドの使用

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" }
  ]
}
recommendation-more-help
analytics-platform-help-main