创建数据元素

了解如何在Luma演示网站上的内容、商业和身份数据的标记中创建数据元素。 然后在XDM架构中填充字段。

学习目标

在本课程结束时,您能够:

  • 了解将数据层映射到XDM的不同方法
  • 创建数据元素以捕获数据
  • 将数据元素映射到XDM对象

先决条件

您已了解数据层是什么,并完成了本教程中之前的课程:

IMPORTANT
本课程的数据来自adobeDataLayerLuma网站上的数据层。 要查看数据层,请打开您的开发人员控制台并键入adobeDataLayer,以查看完整可用的数据层。 adobeDataLayer数据层

数据层方法

使用Adobe Experience Platform的标记功能,可通过多种方式将数据从数据层映射到XDM。 以下是三种不同方法的一些优点和缺点。 如果需要,可以合并方法:

  1. 在数据层中实施XDM
  2. 在标记中映射到XDM
  3. 在数据流中映射到XDM
NOTE
本教程中的示例遵循标记中映射到XDM的方法。

在数据层中实施XDM

在此方法中,Web开发人员实施完全定义的XDM对象作为数据层的结构。 然后,您只需将整个数据层映射到标记中的XDM对象即可。 如果您的实施不使用标签管理器,则此方法可能比较理想,因为您可以使用XDM sendEvent命令直接从应用程序向XDM发送数据。 如果您确实使用标记,则可以创建一个自定义代码数据元素,它将整个数据层作为传递到XDM的JSON对象进行捕获。 然后,将传递JSON映射到发送事件操作中的XDM对象字段。

以下是使用Adobe客户端数据层格式时数据层的外观示例:

数据层中的XDM示例
code language-json
window.adobeDataLayer.push({
"eventType": "web.webPageDetails.pageViews",
"web":{
         "webInteraction":{
            "linkClicks":{
               "id":"",
               "value":""
            },
            "URL":"",
            "name":"",
            "region":"",
            "type":""
         },
         "webPageDetails":{
            "pageViews":{
               "id":"",
               "value":"1"
            },
            "URL":"https://luma.enablementadobe.com/",
            "isErrorPage":"",
            "isHomePage":"",
            "name":"luma:home",
            "server":"enablementadobe.com",
            "siteSection":"home",
            "viewName":""
         },
         "webReferrer":{
            "URL":"",
            "type":""
         }
      }
});

优点

  • 无需重新映射到数据层变量到XDM的其他步骤
  • 如果您的Web开发团队也拥有数字行为标记,则部署可能会更快

缺点

  • 完全依靠开发团队和开发周期来更新要传输到XDM的数据
  • XDM从数据层接收确切的有效负载时灵活性有限
  • 无法使用内置标记功能(例如刮擦功能、持久性功能和快速部署功能)
  • 将数据层用于第三方像素更困难(但您可能希望将这些像素移动到事件转发!)
  • 无法转换数据层和XDM之间的数据

在标记中映射到XDM

此方法包括将单独的数据层变量映射到标记中的数据元素,并最终映射到XDM。 这是使用标签管理系统实施的传统方法。

优点

  • 最灵活的方法,因为您可以控制单个变量并在数据进入XDM之前转换数据
  • 可以使用Adobe标记触发器和刮取功能将数据传递到XDM
  • 可以将数据元素映射到客户端的第三方像素

缺点

  • 将数据层重构为标记数据元素需要时间
IMPORTANT
如前所述,本教程中的示例遵循标记中映射到XDM的方法。

在数据流中映射到XDM

此方法使用名为数据收集的数据准备的数据流配置中内置的功能,并跳过将数据层变量映射到标记中的XDM。

优点

缺点

  • 不能将数据层变量用作客户端第三方像素的数据元素,但可以将它们用于事件转发
  • 无法在标记中使用刮擦功能
  • 如果在标记和数据流中同时映射数据层,则维护复杂性会增加
TIP
Google Data Layer
如果贵组织已使用Google Analytics,并且网站上具有传统的Google数据层对象,则可以在标记中使用Google数据层扩展。 这样,您就可以更快地部署Adobe技术,而无需请求IT团队提供支持。 将Google数据层映射到XDM将遵循与上述相同的步骤。

创建数据元素以捕获数据层

在填充XDM字段之前,请先捕获所需的数据点作为标记数据元素:

  1. 转到​ 数据元素 ​并选择​添加数据元素(或者​新建数据元素,如果标记属性中没有现有的数据元素)

    创建数据元素

  2. 将数据元素命名为 Page Name

  3. 使用​JavaScript变量 数据元素类型​指向Luma数据层中的值: adobeDataLayer.0.page.name

  4. 选中​ 强制小写值 ​和​ 清除文本 ​复选框,以使大小写标准化,并删除无关空格

  5. None保留为​ 存储持续时间 ​设置,因为此值在每个页面上都不相同

  6. 选择​保存

    Page Name数据元素

按照以下相同步骤创建这些附加数据元素:

  • 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);
    
CAUTION
JavaScript变量数据元素类型将数组引用视为圆点,而不是括号,因此将用户名数据元素引用为adobeDataLayer[0].page.name 将不起作用

为XDM和数据对象创建变量数据元素

您刚刚创建的数据元素将用于构建XDM对象(适用于Platform应用程序)和数据对象(适用于Analytics、Target和Audience Manager)。 这些对象具有自己的特殊数据元素,称为​ 变量 ​数据元素,这些数据元素非常易于创建。

要为XDM创建Variable数据元素,请将其绑定到您在配置架构课程中创建的架构:

  1. 选择​添加数据元素

  2. 命名您的数据元素XDM Variable。 建议您为特定于XDM的数据元素添加“XDM”前缀,以便更好地组织标记属性

  3. 选择​ Adobe Experience Platform Web SDK ​作为​扩展

  4. 选择​ 变量 ​作为​数据元素类型

  5. 选择​ XDM ​作为​属性

  6. 选择您创建架构的​沙盒

  7. 选择适当的​架构,在本例中为Luma Web Event Data

  8. 选择​保存

    XDM 的 变量数据元素

接下来,为数据对象创建变量数据元素:

  1. 选择​添加数据元素

  2. 命名您的数据元素Data Variable

  3. 选择​ Adobe Experience Platform Web SDK ​作为​扩展

  4. 选择​ 变量 ​作为​数据元素类型

  5. 选择​ 数据 ​作为​属性

  6. 在本教程中,选择要实施的Experience Cloud解决方案

  7. 选择​保存

    数据对象的变量数据元素

在这些步骤结束时,您应该创建以下数据元素:

核心扩展数据元素
Platform Web SDK扩展数据元素
Ecommerce Cart Products
Data Variable
Ecommerce Product Category
XDM Variable
Ecommerce Product Id
Ecommerce Product Name
Ecommerce Purchase Id
Ecommerce Purchase Products
Page Name
User Id
User Logged In

设置这些数据元素后,您就可以开始使用标记规则将数据发送到Platform Edge Network。 但首先,了解如何使用Web SDK收集身份。

NOTE
感谢您投入时间学习Adobe Experience Platform Web SDK。 如果您有疑问、希望分享一般反馈或有关于未来内容的建议,请在此Experience League社区讨论帖子上分享这些内容
recommendation-more-help
8cbc0fd8-ca1d-433b-9c3d-bc3f113347d4