数据馈送中的子事件组件
子事件组件是基于XDM架构中数组或映射内的字段的维度和量度。 您可以使用日期范围在比事件级别更精细的级别分析数据,例如购买中的单个产品。 有关在区段中使用此数据的信息,请参阅子事件。
使用以下信息了解数组和映射字段中的子事件组件如何在您的Customer Journey Analytics数据馈送中显示。
了解子事件组件
XDM架构中的子事件组件
在XDM架构中,数组的每个元素(字符串数组或对象数组)都是子事件。 映射字段中的每个条目也是子事件,如数据馈送🔗中的映射字段中所述。 基于子事件内字段的维度和量度是子事件组件。
要在Adobe Experience Platform中查看XDM架构中的子事件,请选择架构,然后展开包含子事件的事件。
在以下示例中,Product list items是包含各种子事件组件的对象数组。
Analysis Workspace和数据馈送之间的子事件差异
在Customer Journey Analytics中,子事件组件在Analysis Workspace和数据馈送中的表示方式有所不同。
Adobe Analytics和Customer Journey Analytics之间的子事件差异
子事件数据(例如单个购买事件中的多个产品详细信息)在Customer Journey Analytics数据馈送中的显示方式与Adobe Analytics数据馈送中的显示方式不同。 下表比较了每个产品表示子事件数据的方式。
产品列表包含在单个字符串中分组的多个产品:
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}]
子事件示例:购买事件中的产品
一位客户在一次订购中购买了两款产品:一个无绳钻床和两个钻床电池组。 您的实施发送了一个购买事件,该事件包括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 }
]
}
此事件包含两个子事件,productListItems数组中的每个对象一个。 下表显示了哪些字段属于该事件,哪些字段属于其子事件。
eventType, timestamp, commerce.purchases.value1,无论它包含多少产品。productListItems对象中的SKU、name、quantity、priceTotalquantity对于无绳钻孔机为1,对于钻孔电池组为2。productListItems中。将子事件组件添加到数据馈送
向数据馈送添加子事件组件时,会出现一个对话框,提示您从同一子事件添加其他组件。
来自同一子事件的字段在画布上显示为可折叠的嵌套组,而不是平面项。
此组反映底层数据结构。
在数据馈送输出中,所有这些组件都显示为单列中的嵌套数组。 Parquet文件本身支持嵌套数组。 有关详细信息,请参阅处理数据馈送中的Parquet文件。
有关如何将组件(包括子事件组件)添加到数据馈送的信息,请参阅创建数据馈送。
查询数据馈送输出中的子事件数据
由于子事件数据在Customer Journey Analytics数据馈送中的显示方式不同,因此您对其使用的查询与您对Adobe Analytics数据馈送使用的查询不同。
以下示例显示如何查找包含特定产品的事件。 这些示例使用Google BigQuery语法,其中UNNEST将数组展开为行。 其他数据仓库支持对其自己的数组函数使用相同的方法,例如Snowflake中的FLATTEN或Databricks中的explode。
在Customer Journey Analytics数据馈送中,相同的两个产品在product_list_items列中显示为一个对象数组。 无需分隔符解析:
| code language-json |
|---|
|
如何编写查询取决于您是希望每个事件有一行,还是希望每个匹配产品有一行。
每个事件返回一行
要筛选事件而不更改行数,请在EXISTS子查询中使用数组函数,如UNNEST:
| code language-sql |
|---|
|
此查询为每个匹配事件返回一行,完整product_list_items数组保持不变,无论数组中有多少产品匹配。
每个匹配产品返回一行
若要为每个匹配的产品返回一行,请将数组函数移到外部FROM子句中:
| code language-sql |
|---|
|
具有多个匹配产品的事件显示为多行,并且事件的列(如row_id)在每行上重复。 仅在需要产品级详细信息时才使用此方法。 若要对结果中的事件进行计数,请使用COUNT(DISTINCT row_id)而不是对行进行计数。
此方法适用于XDM架构中的任何数组字段,而不仅仅是产品。
在Adobe Analytics数据馈送中,包含一起购买的两个产品的事件在product_list列中会显示为单个分隔字符串:
| code language-text |
|---|
|
要查找包含Cordless Drill的事件,请使用正则表达式解析此字符串:
| 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 }
]
}
标识映射
identityMap字段中的每个标识都导出为一个对象。 对象包含身份命名空间(键),以及标识符、身份验证状态和主标志。 命名空间会为该命名空间中的每个身份重复。
仅导出作为数据视图中的维度存在并且添加到数据馈送中的身份映射属性。
{
"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 }
]
}
嵌套映射
某些Adobe定义的字段,如segmentMembership,是映射的映射。 数据馈送将这些数据拼合为一个数组,其中第一级键和第二级键作为每个对象中的单独字段。 第一级密钥在其应用于的每个对象中重复,因此不会丢失任何数据或关系。
例如,segment_namespace和segment_id是第一级键和第二级键的组件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" }
]
}