创建数据元素
了解如何在Luma演示网站上的内容、商业和身份数据的标记中创建数据元素。 然后在XDM架构中填充字段。
学习目标
在本课程结束时,您能够:
- 了解将数据层映射到XDM的不同方法
- 创建数据元素以捕获数据
- 将数据元素映射到XDM对象
先决条件
您已了解数据层是什么,并完成了本教程中之前的课程:
数据层方法
使用Adobe Experience Platform的标记功能,可通过多种方式将数据从数据层映射到XDM。 以下是三种不同方法的一些优点和缺点。 如果需要,可以合并方法:
- 在数据层中实施XDM
- 在标记中映射到XDM
- 在数据流中映射到XDM
在数据层中实施XDM
在此方法中,Web开发人员实施完全定义的XDM对象作为数据层的结构。 然后,您只需将整个数据层映射到标记中的XDM对象即可。 如果您的实施不使用标签管理器,则此方法可能比较理想,因为您可以使用XDM sendEvent命令直接从应用程序向XDM发送数据。 如果您确实使用标记,则可以创建一个自定义代码数据元素,它将整个数据层作为传递到XDM的JSON对象进行捕获。 然后,将传递JSON映射到发送事件操作中的XDM对象字段。
以下是使用Adobe客户端数据层格式时数据层的外观示例:
| code language-json |
|---|
|
优点
- 无需重新映射到数据层变量到XDM的其他步骤
- 如果您的Web开发团队也拥有数字行为标记,则部署可能会更快
缺点
- 完全依靠开发团队和开发周期来更新要传输到XDM的数据
- XDM从数据层接收确切的有效负载时灵活性有限
- 无法使用内置标记功能(例如刮擦功能、持久性功能和快速部署功能)
- 将数据层用于第三方像素更困难(但您可能希望将这些像素移动到事件转发!)
- 无法转换数据层和XDM之间的数据
在标记中映射到XDM
此方法包括将单独的数据层变量映射到标记中的数据元素,并最终映射到XDM。 这是使用标签管理系统实施的传统方法。
优点
- 最灵活的方法,因为您可以控制单个变量并在数据进入XDM之前转换数据
- 可以使用Adobe标记触发器和刮取功能将数据传递到XDM
- 可以将数据元素映射到客户端的第三方像素
缺点
- 将数据层重构为标记数据元素需要时间
在数据流中映射到XDM
此方法使用名为数据收集的数据准备的数据流配置中内置的功能,并跳过将数据层变量映射到标记中的XDM。
优点
缺点
- 不能将数据层变量用作客户端第三方像素的数据元素,但可以将它们用于事件转发
- 无法在标记中使用刮擦功能
- 如果在标记和数据流中同时映射数据层,则维护复杂性会增加
创建数据元素以捕获数据层
在填充XDM字段之前,请先捕获所需的数据点作为标记数据元素:
-
转到 数据元素 并选择添加数据元素(或者新建数据元素,如果标记属性中没有现有的数据元素)
-
将数据元素命名为
Page Name -
使用JavaScript变量 数据元素类型指向Luma数据层中的值:
adobeDataLayer.0.page.name -
选中 强制小写值 和 清除文本 复选框,以使大小写标准化,并删除无关空格
-
将
None保留为 存储持续时间 设置,因为此值在每个页面上都不相同 -
选择保存
按照以下相同步骤创建这些附加数据元素:
-
User Id映射到adobeDataLayer.0.user.id -
User Logged In映射到adobeDataLayer.0.user.loggedIn -
Ecommerce Product Id映射到adobeDataLayer.0.ecommerce.detail.products.0.id -
Ecommerce Product Name映射到adobeDataLayer.0.ecommerce.detail.products.0.name -
Ecommerce Purchase Id映射到adobeDataLayer.0.ecommerce.purchase.actionField.id -
Ecommerce Product Category使用自定义代码 数据元素类型和以下自定义代码:code language-javascript return adobeDataLayer[0].ecommerce.detail.products[0].category+":"+adobeDataLayer[0].ecommerce.detail.products[0].subcategory; -
Ecommerce Cart Products使用以下自定义代码:code language-javascript const cartProducts = adobeDataLayer .flatMap(evt => Array.isArray(evt?.ecommerce?.cart?.items) ? evt.ecommerce.cart.items : []) .filter(item => item && item.id && item.name && item.brand) .map(({ id, name, brand }) => ({ id, name, brand })); return cartProducts; -
Ecommerce Purchase Products使用以下自定义代码:code language-javascript const purchaseEvent = adobeDataLayer.find(e => e.event === "purchase"); const currencyCode = purchaseEvent?.ecommerce?.currencyCode ?? "USD"; const purchasedProducts = (purchaseEvent?.ecommerce?.purchase?.products || []).map(p => { const unitPrice = parseFloat(String(p.price).replace(/[^0-9.-]/g, "")) || 0; const qty = Number(p.quantity) || 0; return { SKU: p.id, // id -> SKU name: p.name, // name -> name quantity: qty, // quantity -> quantity priceTotal: unitPrice * qty, // price -> priceTotal (unit price × quantity) currencyCode // "USD" -> currencyCode (from ecommerce.currencyCode) }; }); return(purchasedProducts);
adobeDataLayer[0].page.name 将不起作用。为XDM和数据对象创建变量数据元素
您刚刚创建的数据元素将用于构建XDM对象(适用于Platform应用程序)和数据对象(适用于Analytics、Target和Audience Manager)。 这些对象具有自己的特殊数据元素,称为 变量 数据元素,这些数据元素非常易于创建。
要为XDM创建Variable数据元素,请将其绑定到您在配置架构课程中创建的架构:
-
选择添加数据元素
-
命名您的数据元素
XDM Variable。 建议您为特定于XDM的数据元素添加“XDM”前缀,以便更好地组织标记属性 -
选择 Adobe Experience Platform Web SDK 作为扩展
-
选择 变量 作为数据元素类型
-
选择 XDM 作为属性
-
选择您创建架构的沙盒
-
选择适当的架构,在本例中为
Luma Web Event Data -
选择保存
XDM
变量数据元素
接下来,为数据对象创建变量数据元素:
-
选择添加数据元素
-
命名您的数据元素
Data Variable。 -
选择 Adobe Experience Platform Web SDK 作为扩展
-
选择 变量 作为数据元素类型
-
选择 数据 作为属性
-
在本教程中,选择要实施的Experience Cloud解决方案
-
选择保存
在这些步骤结束时,您应该创建以下数据元素:
Ecommerce Cart ProductsData VariableEcommerce Product CategoryXDM VariableEcommerce Product IdEcommerce Product NameEcommerce Purchase IdEcommerce Purchase ProductsPage NameUser IdUser Logged In设置这些数据元素后,您就可以开始使用标记规则将数据发送到Platform Edge Network。 但首先,了解如何使用Web SDK收集身份。