字段引用 field-references
字段引用可以附加到事件或字段组。 唯一有意义的信息是字段的名称及其路径。
如果您在字段中使用特殊字符,则需要使用双引号或简单引号。 以下是需要引用时的情况:
- 该字段以数字字符开头
- 字段以“ — ”字符开头
- 该字段包含a-z、A-Z、0-9、、-_以外的任何内容
例如,如果您的字段是3h: #{OpenWeather.weatherData.rain.‘3h’} > 0
// event field
@event{<event name>.<XDM path to the field>}
@event{LobbyBeacon.endUserIDs._experience.emailid.id}
// field group
#{<data source name>.<field group name>.<path to the field>}
#{ExperiencePlatform.ProfileFieldGroup.profile.personalEmail.address}
在表达式中,事件字段通过“@”引用,数据源字段通过“#”引用。
语法颜色用于直观地区分事件字段(绿色)和字段组(蓝色)。
字段引用的默认值 default-value
默认值可以与字段名称关联。 语法如下:
// event field
@event{<event name>.<XDM path to the field>, defaultValue: <default value expression>}
@event{LobbyBeacon.endUserIDs._experience.emailid.id, defaultValue: "example@adobe.com"}
// field group
#{<data source name>.<field group name>.<path to the field>, defaultValue: <default value expression>}
#{ExperiencePlatform.ProfileFieldGroup.profile.personalEmail.address, defaultValue: "example@adobe.com"}
@event{LobbyBeacon.endUserIDs._experience.emailid.id, defaultValue : 2}无效,因为默认值为整数,而预期值应为字符串。示例:
// for an event 'OrderEvent' having the following payload:
{
"orderId": "12345"
}
expression example:
- @event{OrderEvent.orderId} -> "12345"
- @event{OrderEvent.productId, defaultValue : "not specified" } -> "not specified" // default value, productId is not a field present in the payload
- @event{OrderEvent.productId} -> null
// for an entity 'Profile' on datasource 'ACP' having fields person/lastName, with fetched data such as:
{
"person": {
"lastName":"Snow"
},
"emails": [
{ "email":"john.snow@winterfell.westeros" },
{ "email":"snow@thewall.westeros" }
]
}
expression examples:
- #{ACP.Profile.person.lastName} -> "Snow"
- #{ACP.Profile.emails.at(1).email} -> "snow@thewall.westeros"
- #{ACP.Profile.person.age, defaultValue : -1} -> -1 // default value, age is not a field present in the payload
- #{ACP.Profile.person.age} -> null
您可以添加任何类型的表达式作为默认值。 唯一的限制是表达式必须返回预期的数据类型。 使用函数时,需要使用()封装函数。
#{ExperiencePlatform.Subscriptions.profile.consents.marketing.any.time, defaultValue : (now())}
== date("2022-02-10T00:00:00Z")
对收藏集中字段的引用
集合中定义的元素使用特定函数all、first和last引用。 有关详细信息,请参见此页面。
示例:
@event{LobbyBeacon._experience.campaign.message.profile.pushNotificationTokens.all()
对映射中定义的字段的引用
entry函数
为了检索映射中的元素,我们使用带有给定键的入口函数。 例如,在根据选定的命名空间定义事件的键时使用该变量。 有关详细信息,请参阅此页面。
@event{MyEvent.identityMap.entry('Email').first().id}
在此表达式中,我们将获得事件的“IdentityMap”字段的“Email”键的条目。 “Email”条目是一个集合,我们从其中使用“first()”获取第一个元素中的“id”。 有关详细信息,请参阅此页面。
firstEntryKey函数
要检索映射的第一个条目键,请使用firstEntryKey函数。
此示例说明如何检索特定列表订阅者的第一个电子邮件地址:
#{ExperiencePlatform.Subscriptions.profile.consents.marketing.email.subscriptions.entry('daily-email').subscribers.firstEntryKey()}
在此示例中,订阅列表名为daily-email。 电子邮件地址在subscribers映射中定义为键,该映射链接到订阅列表映射。
keys函数
要检索到映射的所有键,请使用keys函数。
此示例说明如何为特定用户档案检索与特定列表订阅者关联的所有电子邮件地址:
#{ExperiencePlatform.Subscriptions.profile.consents.marketing.email.subscriptions.entry('daily-mail').subscribers.keys()
数据源的参数值(数据源动态值)
如果您从外部数据源中选择字段,则需要调用一个参数,则右侧会显示一个新选项卡,允许您指定此参数。 请参阅此页。
对于更复杂的用例,如果要在主表达式中包含数据源的参数,可以使用关键字 params 定义其值。 参数可以是任何有效的表达式,即使来自还包含另一个参数的另一个数据源也是如此。
使用以下语法:
#{<datasource>.<field group>.fieldName, params: {<params-1-name>: <params-1-value>, <params-2-name>: <params-2-value>}}
<params-1-name>:数据源中第一个参数的确切名称。<params-1-value>:第一个参数的值。 它可以是任何有效的表达式。
示例:
#{Weather.main.temperature, params: {localisation: @event{Profile.address.localisation}}}
#{Weather.main.temperature, params: {localisation: #{GPSLocalisation.main.coordinates, params: {city: @event{Profile.address.city}}}}}
本节包含结构化知识,用于支持与本主题相关的解释、检索和问答。
要全面了解相关信息,应将此信息与本页上的文档相结合。 这两个源都不是独立的;页面描述了功能,而本节提供了其他上下文来帮助消除术语、意图、适用性和约束条件的歧义。
- TL;DR:本页说明如何在历程表达式中引用事件字段和数据源字段组,包括默认值语法、映射访问函数(
entry、firstEntryKey、keys)以及使用params关键字传递的内联数据源参数。
意图:
- 使用
@event{eventName.fieldPath}语法引用表达式中的事件字段 - 使用
#{dataSourceName.fieldGroupName.fieldPath}语法引用数据源字段组 - 将回退默认值分配给字段引用,以便表达式不返回null
- 使用
entry()函数从标识映射或订阅映射中检索特定条目 - 使用
keys()函数从映射字段中检索所有键 - 使用
params关键字将参数值传递到内联的外部数据源
术语表:
- 字段引用:一种表达式语法,指向事件有效负载或数据源字段组 (产品特定的) 中的命名字段
- defaultValue:附加到字段引用的可选回退表达式,当字段不存在或为null (产品特定)时返回该表达式
- entry(key):映射函数,用于检索与给定键 (产品特定) 关联的集合条目
- firstEntryKey():返回映射字段 (产品特定) 的第一个键的映射函数
- keys():返回映射字段 (产品特定) 的所有键的映射函数
- params关键字:在主表达式 (产品特定) 中为外部数据源字段指定参数值的内联语法
护栏:
- 包含特殊字符的字段名称(以数字开头,包含
-或a-z A-Z 0-9 _之外的字符)必须用单引号或双引号括起来 - 默认值表达式必须返回与字段相同的数据类型 — 不匹配的类型无效
- 当使用
params关键字定义内联参数值时,编辑器右侧的单独参数选项卡消失 - 用作默认值的函数必须封装在括号中
术语:
- 规范名称:字段引用 — 缩写:无 — 变体:字段路径,字段表达式
- 同义词:
@event{...}= “event field reference”;#{...}= “data source field reference” - 请勿混淆:事件字段(带有前缀
@)≠数据源字段(带有前缀#)
常见问题解答:
- 问:如何引用名称以数字开头的字段? — 用单引号或双引号括起字段名称,如
#{OpenWeather.weatherData.rain.'3h'}。 - 问:如果事件有效负载中缺少引用的字段且未设置默认值,会发生什么情况? — 表达式返回
null。 - 问:如何使用函数设置动态默认值? — 将函数调用括在括号中,如
defaultValue: (now())。 - 问:如何检索作为订阅者映射中第一个密钥存储的电子邮件地址? — 在订阅者映射字段上使用
firstEntryKey()函数。 - 问:如何在不使用右侧选项卡的情况下将参数传递到外部数据源? — 使用
params关键字内联:#{DataSource.group.field, params: {paramName: value}}。