映射集概述
映射集是一组映射,用于将数据从一个架构转换为另一个架构。 本文档提供有关映射集如何构成的信息,包括输入架构、输出架构和映射。
快速入门
此概述需要您对Adobe Experience Platform的以下组件有一定的了解:
- 数据准备:数据准备允许数据工程师映射、转换和验证与体验数据模型(XDM)之间的数据。
- 数据流:数据流是跨平台移动数据的数据作业的表示形式。 数据流在不同服务之间配置,帮助将数据从源连接器移动到目标数据集、Identity和Profile以及Destinations。
- Adobe Experience Platform Data Ingestion:将数据发送到Experience Platform的方法。
- Experience Data Model (XDM) System: Experience Platform用于组织客户体验数据的标准化框架。
映射集语法
映射集由ID、名称、输入架构、输出架构和关联映射列表组成。
以下JSON是典型映射集的示例:
{
"id": "cbb0da769faa48fcb29e026a924ba29d",
"name": "Demo Mapping Set",
"inputSchema": {
"id": "a167ff2947ff447ebd8bcf7ef6756232",
"version": 0
},
"outputSchema": {
"schemaRef": {
"id": "https://ns.adobe.com/{TENANT_ID}/schemas/6dd1768be928c36d58ad4897219bb52d491671f966084bc0",
"contentType": "application/vnd.adobe.xed-full+json;version=1"
}
},
"mappings": [
{
"sourceType": "ATTRIBUTE",
"source": "Id",
"destination": "_id",
"name": "Id",
"description": "Identifier field"
},
{
"sourceType": "ATTRIBUTE",
"source": "FirstName",
"destination": "person.name.firstName"
},
{
"sourceType": "ATTRIBUTE",
"source": "LastName",
"destination": "person.name.lastName"
}
]
}
id
name
inputSchema
outputSchema
mappings
sourceType
对于每个列出的映射,其sourceType
属性指示要映射的源类型。 可以是ATTRIBUTE
、STATIC
或EXPRESSION
之一:
ATTRIBUTE
用于源路径中找到的任何值。STATIC
用于插入到目标路径中的值。 该值保持不变,不受源架构的影响。EXPRESSION
用于将在运行时解析的表达式。 可以在映射函数指南中找到可用表达式的列表。
source
source
属性表示要映射的字段。 有关如何配置源的详细信息,请参阅源概述。destination
mappings.name
mappings.description
配置映射源
在映射中,source
可以是字段、表达式或静态值。 根据给定的源类型,可以通过多种方式提取该值。
列数据中的字段
在列数据(如CSV文件)中映射字段时,请使用ATTRIBUTE
源类型。 如果该字段的名称中包含.
,请使用\
对该值进行转义。 此映射的示例如下所示:
示例CSV文件:
Full.Name, Email
John Smith, js@example.com
示例映射
{
"source": "Full.Name",
"destination": "pi.name",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": {
"name": "John Smith"
}
}
嵌套数据中的字段
在嵌套数据(如JSON文件)中映射字段时,请使用ATTRIBUTE
源类型。 如果该字段的名称中包含.
,请使用\
对该值进行转义。 此映射的示例如下所示:
示例JSON文件
{
"customerInfo": {
"name": "John Smith",
"email": "js@example.com"
}
}
示例映射
{
"source": "customerInfo.name",
"destination": "pi.name",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": {
"name": "John Smith"
}
}
数组中的字段
在数组中映射字段时,可以使用索引检索特定值。 为此,请使用ATTRIBUTE
源类型和要映射的值的索引。 此映射的示例如下所示:
示例JSON文件
{
"customerInfo": {
"emails": [
{
"name": "John Smith",
"email": "js@example.com"
},
{
"name": "Jane Smith",
"email": "jane@example.com"
}
]
}
}
示例映射
{
"source": "customerInfo.emails[0].email",
"destination": "pi.email",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": {
"email": "js@example.com"
}
}
数组到数组或对象到对象
使用ATTRIBUTE
源类型,您还可以直接将数组映射到数组,或将对象映射到对象。 此映射的示例如下所示:
示例JSON文件
{
"customerInfo": {
"emails": [
{
"name": "John Smith",
"email": "js@example.com"
},
{
"name": "Jane Smith",
"email": "jane@example.com"
}
]
}
}
示例映射
{
"source": "customerInfo.emails",
"destination": "pi.emailList",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": {
"emailList": [
{
"name": "John Smith",
"email": "js@example.com"
},
{
"name": "Jane Smith",
"email": "jane@example.com"
}
]
}
}
阵列上的迭代运算
使用ATTRIBUTE
源类型,您可以使用通配符索引([*]
)反复循环遍历数组并将它们映射到目标架构。 此映射的示例如下所示:
示例JSON文件
{
"customerInfo": {
"emails": [
{
"name": "John Smith",
"email": "js@example.com"
},
{
"name": "Jane Smith",
"email": "jane@example.com"
}
]
}
}
示例映射
{
"source": "customerInfo.emails[*].name",
"destination": "pi[*].names",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": [
{
"names": {
"name": "John Smith"
}
},
{
"names": {
"name": "Jane Smith"
}
}
]
}
常量值
如果要映射常量或静态值,请使用STATIC
源类型。 使用STATIC
源类型时,source
表示要分配给destination
的硬编码值。 此映射的示例如下所示:
示例JSON文件
{
"name": "John Smith",
"email": "js@example.com"
}
示例映射
{
"source": "CUSTOMER",
"destination": "userType",
"sourceType": "STATIC"
}
转换的数据
{
"userType:": "CUSTOMER"
}
表达式
如果要映射表达式,请使用EXPRESSION
源类型。 可以在映射函数指南中找到接受的函数列表。 使用EXPRESSION
源类型时,source
表示要解析的函数。 此映射的示例如下所示:
示例JSON文件
{
"firstName": "John",
"lastName": "Smith",
"email": "js@example.com"
}
示例映射
{
"source": "concat(upper(lastName), upper(firstName), now())",
"destination": "pi.created",
"sourceType": "EXPRESSION"
}
转换的数据
{
"pi": {
"created": "SMITHJOHNFri Sep 25 15:17:31 PDT 2020"
}
}
配置映射目标
在映射中,destination
是将从source
中提取的值插入到的位置。
根级别的字段
如果要将source
值映射到转换后数据的根级别,请遵循以下示例:
示例JSON文件
{
"customerInfo": {
"name": "John Smith",
"email": "js@example.com"
}
}
示例映射
{
"source": "customerInfo.name",
"destination": "name",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"name": "John Smith"
}
嵌套字段
当您要将source
值映射到转换后的数据中的嵌套字段时,请遵循以下示例:
示例JSON文件
{
"name": "John Smith",
"email": "js@example.com"
}
示例映射
{
"source": "name",
"destination": "pi.name",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": {
"name": "John Smith"
}
}
特定数组索引处的字段
如果要将source
值映射到转换数据数组中的特定索引,请遵循以下示例:
示例JSON文件
{
"customerInfo": {
"name": "John Smith",
"email": "js@example.com"
}
}
示例映射
{
"source": "customerInfo.name",
"destination": "piList[0]",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"piList": ["John Smith"]
}
迭代阵列运算
如果要循环遍历数组并将值映射到目标,可以使用通配符索引([*]
)。 下面显示了这方面的示例:
{
"customerInfo": {
"emails": [
{
"name": "John Smith",
"email": "js@example.com"
},
{
"name": "Jane Smith",
"email": "jane@example.com"
}
]
}
}
示例映射
{
"source": "customerInfo.emails[*].name",
"destination": "pi[*].names",
"sourceType": "ATTRIBUTE"
}
转换的数据
{
"pi": [
{
"names": {
"name": "John Smith"
}
},
{
"names": {
"name": "Jane Smith"
}
}
]
}
后续步骤
通过阅读本文档,您现在应该了解如何构建映射集,包括如何在映射集中配置各个映射。 有关其他数据准备功能的详细信息,请阅读数据准备概述。 要了解如何在数据准备API中使用映射集,请阅读数据准备开发人员指南。