辅助函数

使用个性化编辑器中的帮助程序功能,通过操作数据、执行计算和格式化内容,准确高效地定义个性化内容体验。 探索并尝试使用这些功能、操作员和助手,了解他们如何协同工作,帮助您打造量身定制的数据驱动历程。

AVAILABILITY
辅助函数可用于在Journey Optimizer B2B Edition简化架构上配置的环境。

聚合函数

使用聚合函数将多个值分组以形成单个汇总值。 您还可以使用数组和列表函数更轻松地定义与数组、列表和字符串的交互。

平均 average

使用average函数返回数组中所有选定值的算术平均值。

句法
code language-sql
{%= average(array) %}

示例

以下操作将返回所有订单的平均价格。

code language-sql
{%=average(orders.order.price)%}

count count

使用count函数返回给定数组中的元素数。

句法
code language-sql
{%= count(array) %}

示例

以下操作返回数组中的订单数。

code language-sql
{%= count(orders) %}

max max

使用max函数返回数组中所有选定值中的最大值。

句法
code language-sql
{%= max(array) %}

示例

以下操作将返回所有订单的最高价格。

code language-sql
{%=max(orders.order.price)%}

min min

使用min函数返回数组中所有选定值中的最小值。

句法
code language-sql
{%= min(array) %}

示例

以下工序返回所有订单的最低价格。

code language-sql
{%=min(orders.order.price) %}

sum sum

使用sum函数返回数组中所有选定值的总和。

句法
code language-sql
{%= sum(array) %}

示例

以下操作返回所有订单价格的总和。

code language-sql
 {%=sum(orders.order.price)%}

算术函数 maths

使用算术函数对值执行基本计算。

添加 add

使用+(相加)函数查找两个参数表达式的总和。

句法
code language-sql
{%= double + double %}

示例

以下操作对两个不同产品的价格求和。

code language-sql
{%= product1.price + product2.price %}

multiply

使用*(乘法)函数查找两个参数表达式的乘积。

句法
code language-sql
{%= double * double %}

示例

以下操作将查找库存的产品和产品价格,以查找产品的总值。

code language-sql
{%= product.inventory * product.price %}

substract

使用-(减法)函数查找两个参数表达式的差异。

句法
code language-sql
{%= double - double %}

示例

以下操作找出两个不同产品之间的价格差异。

code language-sql
{%= product1.price - product2.price %}

divide

使用/ (除)函数查找两个参数表达式的商。

句法
code language-sql
{%= double / double %}

示例

以下操作将查找已售产品总数与已挣金额总数之间的商数,以查看每个项目的平均成本。

code language-sql
{%= totalProduct.price / totalProduct.sold %}

余数 remainder

使用%(余数)函数在除以两个参数表达式后查找余数。

句法
code language-sql
{%= double % double %}

示例

以下操作检查人员的年龄是否可被5岁整除。

code language-sql
{%= person.age % 5 = 0 %}

数组和列表函数 arrays

使用这些函数可以更轻松地与数组、列表和字符串进行交互。

countOnlyNull count-only-null

使用countOnlyNull函数计算列表中空值的数量。

句法
code language-sql
{%= countOnlyNull(array) %}

示例

code language-sql
{%= countOnlyNull([4,0,1,6,0,0]) %}

返回3。

countWithNull count-with-null

使用countWithNull函数对列表的所有元素(包括null值)进行计数。

句法
code language-sql
{%= countWithNull(array) %}

示例

code language-sql
{%= countOnlyNull([4,0,1,6,0,0]) %}

返回6。

distinct distinct

使用distinct函数从已删除重复值的数组或列表中获取值。

句法
code language-sql
{%= distinct(array) %}

示例

以下操作指定在多个商店下订单的人员。

code language-sql
{%= distinct(person.orders.storeId).count() > 1 %}

distinctCountWithNull distinct-count-with-null

使用distinctCountWithNull函数计算列表中包括null值的不同值的数量。

句法
code language-sql
{%= distinctCountWithNull(array) %}

示例

code language-sql
{%= distinctCountWithNull([10,2,10,null]) %}

返回3。

head head

使用head函数返回数组或列表中的第一个项。

句法
code language-sql
{%= head(array) %}

示例

以下操作将返回价格最高的前五个订单中的第一个。 有关topN函数的更多信息,请参见数组n中的第一个

code language-sql
{%= head(topN(orders,price, 5)) %}

topN first-n

topN函数根据给定的数值表达式以降序排序数组,并返回前N项。 如果数组大小小于N,则返回整个排序的数组。

句法
code language-sql
{%= topN(array, value, amount) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{ARRAY} 要排序的数组或列表。
{VALUE} 用于对数组或列表进行排序的属性。
{AMOUNT} 要返回的项目数。

示例

以下操作将返回价格最低的前五个订单。

code language-sql
{%= topN(orders,price, 5) %}

in in

使用in函数确定项是数组还是列表的成员。

句法
code language-sql
{%= in(value, array) %}

示例

以下操作定义3月、6月或9月拥有生日的人员。

code language-sql
{%= in (person.birthMonth, [3, 6, 9]) %}

包含 includes

使用includes函数确定数组或列表是否包含给定项。

句法
code language-sql
{%= includes(array,item) %}

示例

以下操作定义其最喜爱的颜色包括红色的人员。

code language-sql
{%= includes(person.favoriteColors,"red") %}

相交 intersects

intersects函数用于确定两个数组或列表是否至少有一个公共成员。

句法
code language-sql
{%= intersects(array1, array2) %}

示例

以下操作定义其最喜爱的颜色至少包括红色、蓝色或绿色中的一种的人员。

code language-sql
{%= intersects(person.favoriteColors,["red", "blue", "green"]) %}

bottomN last-n

bottomN函数根据给定的数值表达式对数组进行升序排序,并返回前N项。 如果数组大小小于N,则返回整个排序的数组。

句法
code language-sql
{%= bottomN(array, value, amount) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{ARRAY} 要排序的数组或列表。
{VALUE} 用于对数组或列表进行排序的属性。
{AMOUNT} 要返回的项目数。

示例

以下操作将返回具有最高价格的最后5个订单。

code language-sql
{%= bottomN(orders,price, 5) %}

notIn notin

使用notIn函数来确定项是否不是数组或列表的成员。

NOTE
notIn函数​ ​确保这两个值都不等于null。 因此,结果不是in函数的完全否定。
句法
code language-sql
{%= notIn(value, array) %}

示例

以下操作定义非三月、六月或九月的生日人员。

code language-sql
{%= notIn(person.birthMonth ,[3, 6, 9]) %}

subsetOf subset

使用subsetOf函数确定特定数组(数组A)是否是另一个数组(数组B)的子集。 换句话说,数组A中的所有元素都是数组B的元素。

句法
code language-sql
{%= subsetOf(array1, array2) %}

示例

以下操作定义访问过他们喜欢的所有城市的人。

code language-sql
{%= subsetOf(person.favoriteCities,person.visitedCities) %}

超集 superset

使用supersetOf函数确定特定数组(数组A)是否是另一个数组(数组B)的超集。 换句话说,该数组A包含数组B中的所有元素。

句法
code language-sql
{%= supersetOf(array1, array2) %}

示例

以下操作定义至少吃过一次寿司和比萨的人。

code language-sql
{%= supersetOf(person.eatenFoods,["sushi", "pizza"]) %}

日期和时间函数 date-time

使用日期和时间函数对值执行日期和时间操作。

addDays add-days

addDays函数按指定的天数调整给定日期,使用正值递增和负值递减。

句法
code language-sql
{%= addDays(date, number) %}

示例

  • 输入: {%= addDays(stringToDate("2024-11-01T17:19:51Z"),10) %}
  • 输出: 2024-11-11T17:19:51Z

addHours add-hours

addHours函数按指定的小时数调整给定日期,使用正值递增,使用负值递减。

句法
code language-sql
{%= addHours(date, number) %}

示例

  • 输入: {%= addHours(stringToDate("2024-11-01T17:19:51Z"),1) %}
  • 输出: 2024-11-01T18:19:51Z

addMinutes add-minutes

addMinutes函数按指定的分钟数调整给定日期,使用正值递增,使用负值递减。

句法
code language-sql
{%= addMinutes(date, number) %}

示例

  • 输入: {%= addMinutes(stringToDate("2024-11-01T17:59:51Z"),10) %}
  • 输出: 2024-11-01T18:09:51Z

addMonths add-months

addMonths函数按指定的月数调整给定日期,使用正值递增,使用负值递减。

句法
code language-sql
{%= addMonths(date, number) %}

示例

  • 输入: {%= addMonths(stringToDate("2024-11-01T17:19:51Z"),2) %}
  • 输出: 2025-01-01T17:19:51Z

addSeconds add-seconds

addSeconds函数使用正值递增和负值递减来按指定的秒数调整给定日期。

句法
code language-sql
{%= addSeconds(date, number) %}

示例

  • 输入: {%= addSeconds(stringToDate("2024-11-01T17:19:51Z"),10) %}
  • 输出: 2024-11-01T17:20:01Z

addYears add-years

addYears函数按指定的年数调整给定日期,使用正值递增,使用负值递减。

句法
code language-sql
{%= addYears(date, number) %}

示例

  • 输入: {%= addYears(stringToDate("2024-11-01T17:19:51Z"),2) %}
  • 输出: 2026-11-01T17:19:51Z

年龄 age

使用age函数从给定日期检索年龄。

句法
code language-sql
 {%= age(datetime) %}

ageInDays age-days

ageInDays函数计算给定日期与当前日期之间经过的天数。 它对未来日期使用负值,对过去日期使用正值。

句法
code language-sql
{%= ageInDays(date) %}

示例

currentDate = 2025-01-07T12:17:10.720122+05:30 (亚洲/加尔各答)

  • 输入: {%= ageInDays(stringToDate("2025-01-01T17:19:51Z"))%}
  • 输出: 5

ageInMonths age-months

ageInMonths函数计算从给定日期到当前日期之间经过的月数。 它对未来日期使用负值,对过去日期使用正值。

句法
code language-sql
{%= ageInMonths(date) %}

示例

currentDate = 2025-01-07T12:22:46.993748+05:30(亚洲/加尔各答)

  • 输入: {%=ageInMonths(stringToDate("2024-01-01T00:00:00Z"))%}
  • 输出: 12

compareDates compare-dates

compareDates函数将第一个输入日期与另一个输入日期进行比较。 如果date1等于date2,则返回0;如果date1在date2之前,则返回–1;如果date1在date2之后,则返回1。

句法
code language-sql
{%= compareDates(date1, date2) %}

示例

  • 输入: {%=compareDates(stringToDate("2024-12-02T00:00:00Z"), stringToDate("2024-12-03T00:00:00Z"))%}
  • 输出: -1

convertZonedDateTime convert-zoned-date-time

convertZonedDateTime函数将日期时间转换为给定时区。

句法
code language-sql
{%= convertZonedDateTime(dateTime, timezone) %}

示例

  • 输入: {%=convertZonedDateTime(stringToDate("2019-02-19T08:09:00Z"), "Asia/Tehran")%}
  • 输出: 2019-02-19T11:39+03:30[Asia/Tehran]

currentTimeInMillis current-time

使用currentTimeInMillis函数检索当前时间(以纪元毫秒为单位)。

句法
code language-sql
{%= currentTimeInMillis() %}

dateDiff date-diff

使用dateDiff函数检索两个日期之间的天数差。

句法
code language-sql
{%= dateDiff(datetime,datetime) %}

dayOfMonth day-month

dayOfMonth返回表示月份日期的数字。

句法
code language-sql
{%= dayOfMonth(datetime) %}

示例

  • 输入: {%= dayOfMonth(stringToDate("2024-11-05T17:19:51Z")) %}
  • 输出: 5

DayofWeek day-week

使用dayOfWeek函数检索星期几。

句法
code language-sql
{%= dayOfWeek(datetime) %}

dayOfYear day-year

使用dayOfYear函数检索一年中的第几天。

句法
code language-sql
{%= dayOfYear(datetime) %}

diffInSeconds diff-seconds

diffInSeconds函数返回两个日期之间的差值(以秒为单位)。

句法
code language-sql
{%= diffInSeconds(endDate, startDate) %}

示例

  • 输入: {%=diffInSeconds(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T17:19:01Z"))%}
  • 输出: 50

extractHours extract-hours

extractHours函数从给定时间戳中提取小时组件。

句法
code language-sql
{%= extractHours(date) %}

示例

  • 输入: {%= extractHours(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 17

extractMinutes extract-minutes

extractMinutes函数从给定时间戳中提取分钟组件。

句法
code language-sql
{%= extractMinutes(date) %}

示例

  • 输入: {%= extractMinutes(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 19

extractMonths extract-months

extractMonth函数从给定时间戳中提取月份组件。

句法
code language-sql
{%= extractMonths(date) %}

示例

  • 输入: {%=extractMonth(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 11

extractSeconds extract-seconds

extractSeconds函数从给定时间戳中提取第二个组件。

句法
code language-sql
{%= extractSeconds(date) %}

示例

  • 输入: {%=extractSeconds(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 51

formatdate format-date

使用formatDate函数设置日期时间值的格式。 格式应为有效的Java DateTimeFormat模式。

句法
code language-sql
{%= formatDate(datetime, format) %}

其中第一个字符串是日期属性,第二个值是您希望如何转换和显示日期。

note note
NOTE
如果日期模式无效,日期将恢复为ISO标准格式。
您可以使用Oracle文档中概述的Java日期格式函数

示例

以下操作将返回以下格式的日期:MM/DD/YY。

code language-sql
{%= formatDate(profile.timeSeriesEvents._mobile.hotelBookingDetails.bookingDate, "MM/dd/YY") %}

图案字符 pattern-characters

某些样式字母可能看起来类似,但表示不同的概念。

模式
含义
示例(针对2023-12-31T10:15:30Z
y
日历年(标准年)
2023
Y
基于周的年份(ISO 8601)。 年度边界可能不同。
2024 (2023年12月31日为2024年的第一周)
M
月份(1-12或文本,如JanJanuary
12Dec
m
小时制的分钟(0-59)
15
d
日期(1-31)
31
D
每年的某一日(1-366)
365

支持区域设置的日期格式 format-date-locale

您可以使用formatDate函数将日期时间值格式化为相应的区分语言的表示形式,如所需的区域设置。 格式应为有效的Java DateTimeFormat模式。

句法
code language-sql
{%= formatDate(datetime, format, locale) %}

其中第一个字符串是日期属性,第二个值是您希望如何转换和显示日期,第三个值以字符串格式表示区域设置。

note note
NOTE
如果日期模式无效,日期将恢复为ISO标准格式。
您可以使用Oracle文档中概述的Java日期格式函数。
您可以使用Oracle文档支持的区域设置中概述的格式设置和有效区域设置。

示例

以下操作返回以下格式的日期:MM/dd/YY和区域设置FRANCE。

code language-sql
{%= formatDate(profile.timeSeriesEvents._mobile.hotelBookingDetails.bookingDate, "MM/dd/YY", "fr_FR") %}

getCurrentZonedDateTime get-current-zoned-date-time

getCurrentZonedDateTime函数返回包含时区信息的当前日期和时间。

句法
code language-sql
{%= getCurrentZonedDateTime() %}

示例

  • 输入: {%= getCurrentZonedDateTime() %}
  • 输出: 2024-12-06T17:22:02.281067+05:30[Asia/Kolkata]

diffinHours hours-difference

diffInHours函数返回两个日期之间的小时数差。

句法
code language-sql
{%= diffInHours(endDate, startDate) %}

示例

  • 输入: {%= diffInHours(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T07:19:51Z"))%}
  • 输出: 10

diffinMinutes diff-minutes

diffInMinutes函数返回两个日期之间的分钟数差。

句法
code language-sql
{%= diffInMinutes(endDate, startDate) %}

示例

  • 输入: {%= diffInMinutes(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-11-01T16:19:51Z"))%}
  • 输出: 60

diffinMonths months-difference

diffInMonths函数返回两个日期之间的月数差。

句法
code language-sql
{%= diffInMonths(endDate, startDate) %}

示例

  • 输入: {%=diffInMonths(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2024-08-01T17:19:51Z"))%}
  • 输出: 3

setDays set-days

使用setDays函数为给定的日期时间设置月中日(该月中的第几天)。

句法
code language-sql
{%= setDays(datetime, day) %}

setHours set-hours

使用setHours函数设置日期时间的小时。

句法
code language-sql
{%= setHours(datetime, hour) %}

toDateTime string-to-date-time

toDateTime函数将字符串转换为日期。 对于无效的输入,它返回纪元日期作为输出。

句法
code language-sql
{%= toDateTime(string, string) %}

示例

  • 输入: {%=toDateTime("2024-11-01T17:19:51Z")%}
  • 输出: 2024-11-01T17:19:51Z

toUTC to-utc

使用toUTC函数将日期时间转换为UTC。

句法
code language-sql
{%= toUTC(datetime) %}

truncateToStartOfDay truncate-day

使用truncateToStartOfDay函数,通过将给定日期时间设置为time为00:00的该天开始来修改该日期。

句法
code language-sql
{%= truncateToStartOfDay(date) %}

示例

  • 输入: {%= truncateToStartOfDay(stringToDate("2024-11-01T17:19:51Z")) %}
  • 输出: 2024-11-01T00:00Z

truncatetostartofQuarter truncate-quarter

使用truncateToStartOfQuarter函数将日期时间截断为其季度的第一天(如1月1日、4月1日、7月1日、10月1日),时间为00:00。

句法
code language-sql
{%= truncateToStartOfQuarter(dateTime) %}

示例

  • 输入: {%=truncateToStartOfQuarter(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 2024-10-01T00:00Z

truncateToStartOfWeek truncate-week

truncateToStartOfWeek函数通过将给定日期时间设置为一周的开始(星期一为00:00)来修改该日期。

句法
code language-sql
{%= truncateToStartOfWeek(dateTime) %}

示例

  • 输入: {%= truncateToStartOfWeek(stringToDate("2024-11-19T17:19:51Z"))%} // tuesday
  • 输出: 2024-11-18T00:00Z // monday

truncateToStartOfYear truncate-year

使用truncateToStartOfYear函数修改给定的日期时间,方法是:在00:00处将其截断为一年的第一天(1月1日)。

句法
code language-sql
{%= truncateToStartOfYear(dateTime) %}

示例

  • 输入: {%=truncateToStartOfYear(stringToDate("2024-11-01T17:19:51Z"))%}
  • 输出: 2024-01-01T00:00Z

weekOfYear week-of-year

使用weekOfYear函数检索年中哪一周。

句法
code language-sql
{%= weekOfYear(datetime) %}

diffInYear diff-years

使用diffInYears函数返回两个日期之间的年数差。

句法
code language-sql
{%= diffInYears(endDate, startDate) %}: int

示例

  • 输入: {%=diffInYears(stringToDate("2024-11-01T17:19:51Z"), stringToDate("2019-10-01T17:19:51Z"))%}
  • 输出: 5

运算符函数 operators

使用布尔和比较函数执行逻辑评估。

and

and函数用于创建逻辑连接。

句法
code language-sql
{%= query1 and query2 %}

示例

以下操作将返回所有在本国(法国)和出生年(1985年)居住的人。

code language-sql
{%= profile.homeAddress.country = "France" and profile.person.birthYear = 1985 %}

or

or函数用于创建逻辑分离。

句法
code language-sql
{%= query1 or query2 %}

示例

以下操作将返回所有在本国(法国)或出生年(1985年)居住的人。

code language-sql
{%= profile.homeAddress.country = "France" or profile.person.birthYear = 1985 %}

等于 operator-equals

= (等于)函数检查一个值或表达式是否等于另一个值或表达式。

句法
code language-sql
{%= expression = value %}

示例

以下操作检查家庭地址国家/地区是否为法国。

code language-sql
{%= profile.homeAddress.country = "France" %}

不等于 notequal

!= (不等于)函数检查一个值或表达式是​ 不是 ​等于另一个值或表达式。

句法
code language-sql
{%= expression != value %}

示例

以下操作检查家庭地址国家/地区是否不是法国。

code language-sql
{%= profile.homeAddress.country != "France" %}

大于 greaterthan

使用> (大于)函数检查第一个值是否大于第二个值。

句法
code language-sql
{%= expression1 > expression2 %}

示例

以下操作严格定义了1970年后出生的人。

code language-sql
{%= profile.person.birthYear > 1970 %}

大于或等于 greaterthanorequal

使用>= (大于或等于)函数检查第一个值是否大于或等于第二个值。

句法
code language-sql
{%= expression1 >= expression2 %}

示例

以下操作定义了1970年或之后出生的人。

code language-sql
{%= profile.person.birthYear >= 1970 %}

小于 lessthan

使用< (小于)比较函数检查第一个值是否小于第二个值。

句法
code language-sql
{%= expression1 < expression2 %}

示例

以下操作定义了2000年之前出生的人。

code language-sql
{%= profile.person.birthYear < 2000 %}

小于或等于 lessthanorequal

使用<= (小于或等于)比较函数检查第一个值是否小于或等于第二个值。

句法
code language-sql
{%= expression1 <= expression2 %}

示例

以下操作定义了2000年或之前出生的人。

code language-sql
{%= profile.person.birthYear <= 2000 %}

动态函数 dynamic-helpers

使用动态帮助程序函数为动态个性化使用条件评估、迭代和变量分配。

默认回退值 default-value

如果属性为空或null,则使用Default Fallback Value帮助程序返回默认回退值。 此机制适用于配置文件属性和历程事件。

句法
code language-sql
Hello {%=profile.personalEmail.name.firstName ?: "there" %}!

在此示例中,如果此配置文件的there属性为空或null,则显示值firstName

if(条件) if-function

if帮助程序用于定义条件块。
如果表达式求值返回true,则会呈现块,否则将跳过该块。

句法
code language-sql
{%#if contains(account.accountOrganization.primaryEmailDomain, ".edu")%}
<a href="https://www.adobe.com/academia">Check out this link</a>

if帮助程序之后,您可以输入else语句以指定要执行的代码块(如果相同条件为false)。
elseif语句指定了一个新条件以测试第一个语句是否返回false。

格式

code language-sql
{
    {
        {%#if condition1%} element_1
        {%else if condition2%} element_2
        {%else%} default_element
        {%/if%}
    }
}

Unless unless

使用unless帮助程序定义条件块。 通过对if帮助程序的反对,如果表达式求值返回false,则呈现块。

句法
code language-sql
{%#unless unlessCondition%} element_1 {%else%} default_element {%/unless%}

示例

根据电子邮件地址扩展呈现某些内容:

code language-sql
{%#unless endsWith(account.accountOrganization.primaryEmailDomain}, ".edu")%}
Some Normal Content
{%else%}
Some edu specific content
{%/unless%}

每个 each

使用each辅助函数对数组进行迭代。

辅助函数结构为{{#each ArrayName}}您的内容{{/each}}

您可以在块中使用关键字this来引用单个数组项。 使用{{@index}}渲染数组元素的索引。

句法
code language-sql
{{#each profile.productsInCart}}
    <li>{{this.name}}</li>
{{/each}}

示例

code language-sql
{{#each profile.homeAddress.city}}
  {{@index}} : {{this}}<br>
{{/each}}

示例

呈现此用户在其购物车中拥有的产品列表:

code language-sql
{{#each profile.products as |product|}}
    <li>{{product.productName}} {{product.productRating}}</li>
{{/each}}

替换为 with

使用with帮助程序更改模板部分的评估令牌。

句法
code language-sql
{{#with profile.person.name}}
{{this.firstName}} {{this.lastName}}
{{/with}}

with辅助函数也可用于定义快捷键变量。

示例

使用with将长变量名称别名为短变量名称:

code language-sql
{{#with profile.person.name as |name|}}
 Hi {{name.firstName}} {{name.lastName}}!
 Checkout our trending products for today!
{{/with}}

let let

let函数允许将表达式存储为变量,以便稍后在查询中使用。

句法
code language-sql
{% let variable = expression %} {{variable}}

示例

以下示例允许您计算购物车中价格在100和1000之间的产品的总价。

code language-sql
{% let sum = 0%}
    {{#each profile.productsInCart as |p|}}
        {%#if p.price>100 and p.price<1000%}
            {%let sum = sum + p.price %}
        {%/if%}
    {{/each}}
{{sum}}

执行元数据 execution-metadata

AVAILABILITY
此功能处于有限可用状态。 请联系 Adobe 代表以获取访问权限。

使用executionMetadata动态捕获自定义键值对并将其存储到消息执行上下文中。

利用此功能,您可以将上下文信息附加到营销活动或历程中的任何本机操作。 使用它可将实时投放上下文数据导出到外部系统,以实现各种目的,例如跟踪、分析、个性化和下游处理。

NOTE
自定义操作不支持executionMetadata函数。

例如,您可以使用executionMetadata帮助程序将特定ID附加到发送给每个用户档案的每个投放。 此信息在运行时生成,随后可导出扩充的执行元数据以用于与外部报告平台的下游协调。

句法
code language-none
{{executionMetadata key="your_key" value="your_value"}}

在此语法中,key引用元数据名称,value是要保留的元数据。

工作原理

从营销活动或历程中的渠道内容中选择任何元素,并使用个性化编辑器将executionMetadata帮助程序添加到此元素。

note note
NOTE
显示内容本身时,executionMetadata函数不可见。

在运行时,元数据值被添加到现有​ 消息反馈事件数据集 ​中,并添加了以下架构:

code language-none
"_experience": {
  "customerJourneyManagement": {
    "messageExecution": {
      "metadata": {
        "your_key": "your_value"
      }
    }
  }
}
note important
IMPORTANT
每个操作的键值对的上限为2kb。 如果超过2Kb限制,则仍会投放消息,但可以截断任何键值对。

示例

code language-none
{{executionMetadata key="firstName" value=profile.person.name.firstName}}

在此示例中,假设profile.person.name.firstName = "Alex",则生成的实体为:

code language-none
{
  "key": "firstName",
  "value": "Alex"
}

映射函数 maps

在个性化中使用映射函数可简化与映射的交互。

get get

使用get函数检索给定键的映射值。

句法
code language-sql
{%= get(map, string) %}

示例

以下操作获取键example@example.com的标识映射值。

code language-sql
{%= get(identityMap,"example@example.com") %}

keys

使用keys函数检索给定映射的所有键。

句法
code language-sql
{%= keys(map) %}

示例

以下操作检索映射identityMap的所有键。

code language-sql
{%= keys(identityMap) %}

values

values函数用于检索给定映射的所有值。

句法
code language-sql
{%= values(map) %}

示例

以下操作检索映射identityMap的所有值。

code language-sql
{%= values(identityMap) %}

数学函数 math

了解如何在个性化编辑器中使用数学函数。

绝对 absolute

使用absolute函数将一个数字转换为其绝对值。

句法
code language-sql
{%= absolute(int) %}: int

格式数字 format-number

使用formatNumber函数将任意数字格式化为其区分语言的表示形式。

它接受一个数字和一个表示区域设置的字符串,并返回所需区域设置中数字的格式化字符串。

句法
code language-sql
{%= formatNumber(number/double,string) %}: string

您可以使用Oracle文档支持的区域设置中概述的格式设置和有效区域设置

示例

此查询返回一个阿拉伯文格式字符串(对应于123456.789)作为输入数字。

code language-sql
{%= formatNumber(123456.789, "ar_EG") %}

random random

使用random函数返回0到1之间的随机值。

句法
code language-sql
{%= random() %}: double

roundDown round-down

使用roundDown函数向下舍入数字。

句法
code language-sql
{%= roundDown(double) %}: double

汇总 round-up

使用roundUp函数对数字进行向上四舍五入。

句法
code language-sql
{%= roundUp(double) %}: double

toHexString to-hex-string

toHexString函数将任意数字转换为十六进制字符串。

句法
code language-sql
{%= toHexString(number) %}: string

示例

此查询返回十六进制值158为9e。

code language-sql
{%= toHexString(158) %}

toInt to-int

使用toInt函数将类型(数字、双精度、整数、长整数、浮点数、短整数、字节、布尔值、字符串)转换为整数。

句法
code language-sql
{%= toInt(<valueToConvert>) %}: integer

示例

此查询返回42.6的整数值作为42。

code language-sql
{%= toInt(42.6) %}: integer

toPercentage to-percentage

使用toPercentage函数将数字转换为百分比。

句法
code language-sql
{%= toPercentage(double) %}: string

toPrecision to-precision

使用toPrecision函数将数字转换为所需的精度。

句法
code language-sql
{%= toPrecision(double,int) %}: string

toString to-string

toString函数将任意数字转换为字符串表示形式。

句法
code language-sql
{%= toString(string) %}: string

示例

此查询返回"12"

code language-sql
{%= toString(12) %}

目标函数 objects

用于查询对象属性或属性的对象函数。

isNull isNull

isNull函数确定对象引用是否不存在。

句法
code language-sql
{%= isNull(object) %}

示例

以下操作检查人员的家庭地址是否不存在。

code language-sql
{%= isNull(person.homeAddress) %}

isNotNull isNotNull

isNotNull函数确定是否存在对象引用。

句法
code language-sql
{%= isNotNull(object) %}

示例

以下操作检查人员的家庭地址是否存在。

code language-sql
{%= isNotNull(person.homeAddress) %}

字符串函数 string-functions

了解如何在个性化编辑器中使用字符串函数。

camelCase camelCase

camelCase函数将字符串中每个单词的第一个字母变为大写。

句法
code language-sql
{%= camelCase(string)%}

示例

以下函数将用户档案的街道地址中单词的第一个字母转换为大写。

code language-sql
{%= camelCase(profile.homeAddress.street) %}

charCodeAt char-code-at

charCodeAt函数返回字符的ASCII值,如JavaScript中的charCodeAt函数。 它采用字符串和整数(定义字符的位置)作为输入参数,并返回其对应的ASCII值。

句法
code language-sql
{%= charCodeAt(string,int) %}: int

示例

以下函数返回o (111)的ASCII值。

code language-sql
{%= charCodeAt("some", 1)%}

concat concate

concat函数将两个字符串合并为一个。

句法
code language-sql
{%= concat(string,string) %}

示例

以下函数将用户档案城市和国家/地区组合在一个字符串中。

code language-sql
{%= concat(profile.homeAddress.city,profile.homeAddress.country) %}

包含 contains

使用contains函数确定一个字符串是否包含指定的子字符串。

句法
code language-sql
{%= contains(STRING_1, STRING_2, CASE_SENSITIVE) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
STRING_1 要检查的字符串。
STRING_2 要在第一个字符串中搜索的字符串。
CASE_SENSITIVE 用于确定检查是否区分大小写,的可选参数。 可能的值: true (默认) / false。

示例

  • 以下函数检查用户档案名字是否包含字母A(大写或小写)。 如果配置文件包含,则返回true。 如果不是,则返回false

    code language-sql
    {%= contains(profile.person.name.firstName, "A", false) %}
    
  • 以下查询将区分大小写确定人员的电子邮件地址是否包含字符串2010@gm

    code language-sql
    {%= contains(profile.person.emailAddress,"2010@gm") %}
    

doesNotContain doesNotContain

使用doesNotContain函数确定一个字符串是否不包含指定的子字符串。

句法
code language-sql
{%= doesNotContain(STRING_1, STRING_2, CASE_SENSITIVE)%}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
STRING_1 要检查的字符串。
STRING_2 要在第一个字符串中搜索的字符串。
CASE_SENSITIVE 用于确定检查是否区分大小写,的可选参数。 可能的值: true (默认) / false。

示例

以下查询区分大小写确定人员的电子邮件地址是否不包含字符串2010@gm

code language-sql
{%= doesNotContain(profile.person.emailAddress,"2010@gm")%}

doesNotEndWith doesNotEndWith

使用doesNotEndWith函数可确定字符串是否不以指定的子字符串结尾。

句法
code language-sql
{%= doesNotEndWith(STRING_1, STRING_2, CASE_SENSITIVE)%}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个字符串中搜索的字符串。
{CASE_SENSITIVE} 用于确定检查是否区分大小写,的可选参数。 可能的值: true (默认) / false。

示例

以下查询将区分大小写确定此人的电子邮件地址是否不以.com结尾。

code language-sql
doesNotEndWith(person.emailAddress,".com")

doesNotStartWith doesNotStartWith

使用doesNotStartWith函数确定字符串是否不以指定的子字符串开头。

句法
code language-sql
{%= doesNotStartWith(STRING_1, STRING_2, CASE_SENSITIVE)%}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个字符串中搜索的字符串。
{CASE_SENSITIVE} 用于确定检查是否区分大小写,的可选参数。 可能的值: true (默认) / false。

示例

以下查询区分大小写确定人员的姓名是否不以Joe开头。

code language-sql
{%= doesNotStartWith(person.name,"Joe")%}

encode64 encode64

使用encode64函数对字符串进行编码,以保留个人信息(PI),例如包含在URL中。

句法
code language-sql
{%= encode64(string) %}

endsWith endsWith

使用endsWith函数确定字符串是否以指定的子字符串结尾。

句法
code language-sql
{%= endsWith(STRING_1, STRING_2, CASE_SENSITIVE) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个字符串中搜索的字符串。
{CASE_SENSITIVE} 用于确定检查是否区分大小写,的可选参数。 可能的值: true (默认) / false。

示例

以下查询将区分大小写确定此人的电子邮件地址是否以.com结尾。

code language-sql
{%= endsWith(person.emailAddress,".com") %}

等于 equals

使用equals函数可确定字符串是否等于指定的字符串(区分大小写)。

句法
code language-sql
{%= equals(STRING_1, STRING_2) %}
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要与第一个字符串进行比较的字符串。

示例

以下查询将区分大小写确定人员的姓名是否为John

code language-sql
{%=equals(profile.person.name,"John") %}

equalsIgnoreCase equalsIgnoreCase

使用equalsIgnoreCase函数确定一个字符串是否等于指定的字符串,不区分大小写。

句法
code language-sql
{%= equalsIgnoreCase(STRING_1, STRING_2) %}
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要与第一个字符串进行比较的字符串。

示例

以下查询在不区分大小写的情况下确定人员姓名是否为John

code language-sql
{%= equalsIgnoreCase(profile.person.name,"John") %}

extractEmailDomain extractEmailDomain

使用extractEmailDomain函数提取电子邮件地址的域。

句法
code language-sql
{%= extractEmailDomain(string) %}

示例

以下查询提取个人电子邮件地址的电子邮件域。

code language-sql
{%= extractEmailDomain(profile.personalEmail.address) %}

formatCurrency format-currency

使用formatCurrency函数根据第二个参数中作为字符串传递的区域设置,将任意数字转换为相应的区分语言的货币表示形式。

句法
code language-sql
{%= formatCurrency(number/double,string) %}: string

示例

此查询返回56.00英镑

code language-sql
{%= formatCurrency(56L,"en_GB") %}

getUrlHost get-url-host

使用getUrlHost函数检索URL的主机名。

句法
code language-sql
{%= getUrlHost(string) %}: string

示例

code language-sql
{%= getUrlHost("https://www.myurl.com/contact") %}

返回“www.myurl.com”

getUrlPath get-url-path

使用getUrlPath函数在URL的域名后检索路径。

句法
code language-sql
{%= getUrlPath(string) %}: string

示例

code language-sql
{%= getUrlPath("https://www.myurl.com/contact.html") %}

返回“/contact.html”

getUrlProtocol get-url-protocol

使用getUrlProtocol函数检索URL的协议。

句法
code language-sql
{%= getUrlProtocol(string) %}: string

示例

code language-sql
{%= getUrlProtocol("https://www.myurl.com/contact.html") %}

返回“http”

indexOf index-of

使用indexOf函数返回第二个参数在第一个参数中第一次出现的位置。 如果没有匹配项,则返回–1。

句法
code language-sql
{%= indexOf(STRING_1, STRING_2) %}: integer
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个参数中搜索的字符串

示例

code language-sql
{%= indexOf("hello world","world" ) %}

返回6。

isEmpty isEmpty

使用isEmpty函数确定字符串是否为空。

句法
code language-sql
{%= isEmpty(string) %}

示例

如果个人资料的手机号码为空,则以下函数返回“true”。 否则,它将返回false

code language-sql
{%= isEmpty(profile.mobilePhone.number) %}

isNotEmpty is-not-empty

使用isNotEmpty函数确定字符串是否不为空。

句法
code language-sql
{= isNotEmpty(string) %}: boolean

示例

如果个人资料的手机号码不为空,则以下函数返回“true”。 否则,它将返回false

code language-sql
{%= isNotEmpty(profile.mobilePhone.number) %}

lastIndexOf last-index-of

使用lastIndexOf函数返回第二个参数在第一个参数中最后一次出现的位置。 如果没有匹配项,则返回–1。

句法
code language-sql
{= lastIndexOf(STRING_1, STRING_2) %}: integer
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个参数中搜索的字符串

示例

code language-sql
{%= lastIndexOf("hello world","o" ) %}

返回7。

leftTrim leftTrim

使用leftTrim函数从字符串的开头删除空格。

句法
code language-sql
{%= leftTrim(string) %}

length length

使用length函数获取字符串或表达式中的字符数。

句法
code language-sql
{%= length(string) %}

示例

以下函数返回用户档案的城市名称的长度。

code language-sql
{%= length(profile.homeAddress.city) %}

点赞 like

使用like函数确定字符串是否与指定的模式匹配。

句法
code language-sql
{%= like(STRING_1, STRING_2) %}
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2}

要与第一个字符串匹配的表达式。 创建表达式时支持使用两个特殊字符: %_

  • %用于表示零个或更多字符。
  • _只用于表示一个字符。

示例

以下查询将检索用户档案所在的所有城市,这些城市包含模式es

code language-sql
{%= like(profile.homeAddress.city, "%es%")%}

lowerCase lower

使用lowerCase函数将字符串转换为小写字母。

句法
code language-sql
{%= lowerCase(string) %}

示例

此函数将用户档案的名字转换为小写字母。

code language-sql
{%= lowerCase(profile.person.name.firstName) %}

matches matches

使用matches函数确定字符串是否与特定的正则表达式匹配。 有关正则表达式中匹配模式的详细信息,请参阅Oracle文档

句法
code language-sql
{%= matches(STRING_1, STRING_2) %}

示例

以下查询在不区分大小写的情况下确定人员的名称是否以John开头。

code language-sql
{%= matches(person.name.,"(?i)^John") %}

蒙版 mask

使用mask函数将字符串的一部分替换为“X”字符。

句法
code language-sql
{%= mask(string,integer,integer) %}

示例

以下查询将“123456789”字符串替换为“X”字符,但前两个字符和后两个字符除外。

code language-sql
{%= mask("123456789",1,2) %}

查询返回1XXXXXX89

md5 md5

使用md5函数计算并返回字符串的md5哈希。

句法
code language-sql
{%= md5(string) %}: string

示例

code language-sql
{%= md5("hello world") %}

返回“5eb63bbe01eeed093cb22bb8f5acdc3”

notEqualto notEqualTo

使用notEqualTo函数来确定一个字符串是否不等于指定的字符串。

句法
code language-sql
{%= notEqualTo(STRING_1, STRING_2) %}
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要与第一个字符串进行比较的字符串。

示例

以下查询将区分大小写确定人员的姓名是否为John

code language-sql
{%= notEqualTo(profile.person.name,"John") %}

notEqualWithIgnoreCase not-equal-with-ignore-case

使用notEqualWithIgnoreCase函数比较两个字符串(忽略大小写)。

句法
code language-sql
{= notEqualWithIgnoreCase(STRING_1,STRING_2) %}: boolean
table 0-row-2 1-row-2 2-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要与第一个字符串进行比较的字符串。

示例

以下查询确定人员姓名是否为john,不区分大小写。

code language-sql
{%= notEqualTo(profile.person.name,"john") %}

正则表达式组 regexGroup

使用regexGroup函数根据提供的正则表达式提取特定信息。

句法
code language-sql
{%= regexGroup(STRING, EXPRESSION, GROUP) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING} 要检查的字符串。
{EXPRESSION} 要与第一个字符串匹配的正则表达式。
{GROUP} 要匹配的表达式组。

示例

以下查询从电子邮件地址中提取域名。

code language-sql
{%= regexGroup(emailAddress,"@(\\w+)", 1) %}

replace replace

使用replace函数将字符串中的给定子字符串替换为另一个子字符串。

句法
code language-sql
{%= replace(STRING_1,STRING_2,STRING_3) %}:string
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING_1} 必须替换子字符串的字符串。
{STRING_2} 要替换的子字符串。
{STRING_3} 替换子字符串。

示例

code language-sql
{%= replace("Hello John, here is your monthly newsletter!","John","Mark") %}

返回Hello Mark, here is your monthly newsletter!

replaceAll replaceAll

使用replaceAll函数将匹配正则表达式的所有文本子字符串替换为指定的文本替换字符串。 正则表达式对\+具有特殊处理,并且所有正则表达式都遵循PQL转义策略。 替换过程从字符串的开头到结尾进行,例如,将字符串aa中的b替换为aaa将导致ba而不是ab

句法
code language-sql
{%= replaceAll(string,string,string) %}
note note
NOTE
当用作第二个参数的表达式是特殊正则表达式时,请使用双反斜杠(//)。 特殊正则表达式字符包括:[., +, *, ?, ^, $, (, ), [,], {, }, |, .]
请参阅Oracle文档以了解详情。

rightTrim rightTrim

rightTrim函数删除字符串末尾的空格。

句法
code language-sql
{%= rightTrim(string) %}

sha256 sha256

sha256函数计算并返回字符串的sha256哈希。

句法
code language-sql
{%= sha256(string) %} : string

示例

code language-sql
{%= sha256("Eliechxh")%}

返回0b0b207880b999adaad6231026abf87caa30760b6f326b21727b61139332257d

split split

使用split函数按给定字符拆分字符串。

句法
code language-sql
{%= split(string,string) %}

startsWith startsWith

使用startsWith函数确定字符串是否以指定的子字符串开头。

句法
code language-sql
{%= startsWith(STRING_1, STRING_2, CASE_SENSITIVE) %}
table 0-row-2 1-row-2 2-row-2 3-row-2
参数 描述
{STRING_1} 要检查的字符串。
{STRING_2} 要在第一个字符串中搜索的字符串。
{CASE_SENSITIVE} 用于确定检查是否区分大小写,的可选参数。 默认情况下,设置为true。

示例

以下查询区分大小写确定人员的名称是否以Joe开头。

code language-sql
{%= startsWith(person.name,"Joe") %}

stringToDate string-to-date

stringToDate函数将一个字符串值转换为日期时间值。 它采用两个参数:日期时间的字符串表示和格式化器的字符串表示。

句法
code language-sql
{= stringToDate("date-time value","formatter" %}

示例

code language-sql
{= stringToDate("2023-01-10 23:13:26", "yyyy-MM-dd HH:mm:ss") %}

string_to_integer string-to-integer

使用string_to_integer函数将字符串值转换为整数值。

句法
code language-sql
{= string_to_integer(string) %}: int

stringToNumber string-to-number

使用stringToNumber函数将字符串转换为数字。 对于无效的输入,它返回相同的字符串作为输出。

句法
code language-sql
{%= stringToNumber(string) %}: double

substr sub-string

使用substr函数返回字符串表达式在开始索引和结束索引之间的子字符串。

句法
code language-sql
{= substr(string, integer, integer) %}: string

titleCase titleCase

使用titleCase函数将字符串中每个单词的首字母大写。

句法
code language-sql
{%= titleCase(string) %}

示例

如果该人员住在华盛顿商业街,则此函数返回Washington High Street

code language-sql
{%= titleCase(profile.person.location.Street) %}

toBool to-bool

使用toBool函数将参数值转换为布尔值,具体取决于其类型。

句法
code language-sql
{= toBool(string) %}: boolean

toDateTime to-date-time

使用toDateTime函数将字符串转换为日期。 对于无效的输入,它返回纪元日期作为输出。

句法
code language-sql
{%= toDateTime(string, string) %}: date-time

toDateTimeOnly to-date-time-only

使用toDateTimeOnly函数将参数值转换为仅日期时间值。 对于无效的输入,它返回纪元日期作为输出。 此函数接受字符串、日期、长字段和整数字段类型。

句法
code language-sql
{%= toDateTimeOnly(string/date/long/int) %}: date-time

trim trim

trim函数删除字符串开始和结束位置的所有空格。

句法
code language-sql
{%= trim(string) %}

大写 upper

upperCase函数将字符串转换为大写字母。

句法
code language-sql
{%= upperCase(string) %}

示例

此函数将用户档案的姓氏转换为大写字母。

code language-sql
{%= upperCase(profile.person.name.lastName) %}

urlDecode url-decode

使用urlDecode函数对url编码的字符串进行解码。

句法
code language-sql
{%= urlDecode(string) %}: string

urlEncode url-encode

使用urlEncode函数将字符串编码为URL。

句法
code language-sql
{%= urlEncode(string) %}: string
recommendation-more-help
6ef00091-a233-4243-8773-0da8461f7ef0