列表函数 list-functions

列表函数允许您处理和处理历程表达式中的值集合。 这些功能对于过滤、排序、转换和分析客户历程中的阵列和列表至关重要。

当您需要执行以下操作时,请使用列表函数:

  • 根据条件(筛选器getListItem)从收藏集中筛选和提取特定项
  • 按升序或降序对列表元素进行排序和组织(排序
  • 删除重复项,并从列表(distinctdistinctWithNull)中获取唯一值
  • 检查集合(in)中是否存在值
  • 限制从列表返回的项目数(limit)
  • 获取列表的大小(listSize)或将列表转换为不同的格式(serializeList)
  • 执行集合操作,如查找列表之间的公共元素(相交

列表函数提供了用于处理复杂数据结构的强大工具,支持基于收集内容的复杂数据操作和条件逻辑。

distinct distinct

返回给定列表的不同值或对象。 Null条目将被忽略。

句法
distinct(<parameters>)
参数
table 0-row-3 1-row-3 2-row-3
参数 类型 描述
listToProcess listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly或listObject 要处理的列表。 对于listObject,它必须是字段引用。
keyAttributeName 字符串 此参数是可选的,并且仅适用于listObject。 如果未提供参数,则当所有属性都具有相同的值时,会将对象视为重复。 否则,如果给定的属性具有相同的值,则将对象视为重复。
签名和返回的类型

distinct(<listInteger>)

返回整数列表。

distinct(<listDecimal>)

返回小数位数列表。

distinct(<listString>)

返回字符串列表。

distinct(<listDateTimeOnly>)

返回不考虑时区的日期时间列表。

distinct(<listDateTime>)

返回日期时间列表。

distinct(<listDateOnly>)

返回日期列表。

distinct(<listBoolean>)

返回布尔值列表。

distinct(<listDuration>)

返回持续时间列表。

distinct(<listObject>)

distinct(<listObject>,<string>)

返回对象列表。

示例

distinct([10,2,10,null])

返回[10, 2]

distinctWithNull distinctWithNull

返回给定列表的不同值或对象。 如果列表至少有一个null条目,则返回的列表中将显示一个null条目。

句法
distinctWithNull(<parameters>)
参数
table 0-row-3 1-row-3
参数 类型 描述
listToProcess listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly 要处理的列表。
签名和返回的类型

distinctWithNull(<listInteger>)

返回整数列表。

distinctWithNull(<listDecimal>)

返回小数位数列表。

distinctWithNull(<listString>)

返回字符串列表。

distinctWithNull(<listDateTimeOnly>)

返回不考虑时区的日期时间列表。

distinctWithNull(<listDateTime>)

返回日期时间列表。

distinctWithNull(<listDateOnly>)

返回日期列表。

distinctWithNull(<listBoolean>)

返回布尔值列表。

distinctWithNull(<listDuration>)

返回持续时间列表。

示例

distinctWithNull([10,2,10,null])

返回[10, 2, null]

注意:​此函数不支持参数<listObject>

filter filter

返回一个listObject,其中的对象具有匹配给定键值之一的键属性。

句法
filter(<parameters>)
参数
table 0-row-3 1-row-3 2-row-3 3-row-3
参数 类型 描述
listToFilter listObject 要过滤的对象列表。 它必须是字段引用。
keyAttributeName 字符串 给定列表对象中的属性名称,用作筛选键
keyValueList list 用于过滤的键值数组
签名和返回的类型

filter(listObject, string, listString)

filter(listObject, string, listInteger)

filter(listObject, string, listDecimal)

filter(listObject, string, listDateTime)

filter(listObject, string, listDateTimeOnly)

filter(listObject, string, listDateOnly)

filter(listObject, string, listDuration)

filter(listObject, string, listBoolean)

返回listObject。

示例

以下是在传入事件“myevent”中传递的有效负载示例:

code language-json
"productListItems": [{
   "id": "product1",
   "name": "the product 1",
   "price": 20
},{
   "id": "product2",
   "name": "the product 2",
   "price": 30
},{
   "id": "product3",
   "name": "the product 3",
   "price": 50
}]

您可以使用以下表达式:

code language-json
filter(
 @event{myevent.productListItems},
 "id",
 ["product2", "product3", "product4"]
)

返回包含两个对象的listObject,其中“product2”和“product3”作为ID。

getListItem getListItem

返回给定索引处的列表项。

句法
getListItem(<parameters>)
参数
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2
参数 类型
list listString
list listBoolean
list listInteger
list listDecimal
list listDuration
list listDateTime
list listDateTimeOnly
list listDateOnly
index 整数
签名和返回的类型

getListItem(<listInteger>,<index>)

返回整数。

getListItem(<listDecimal>,<index>)

返回小数。

getListItem(<listString>,<index>)

返回字符串。

getListItem(<listDateTimeOnly>,<index>)

返回不考虑时区的日期时间。

getListItem(<listDateTime>,<index>)

返回日期时间。

getListItem(<listDateOnly>,<index>)

返回日期列表。

getListItem(<listBoolean>,<index>)

返回布尔值。

getListItem(<listDuration>,<index>)

返回持续时间。

示例

getListItem([10, 2, 3], 1)

返回“2”

getListItem(["A", "B", "C"], 2)

返回“C”

具有事件字段"event.appVersion"且值为"20.45.2.3434"的示例

split(@event{event.appVersion}, "\\.")

返回["20", "45", "2", "3434"]

getListItem(split(@event{event.appVersion}, "\\."), 0)

返回“20”

in in

检查第一个参数值是否在列表中。 检查通过对每个参数值执行Equal。 如果找到参数值,则返回true;否则,返回false。

<expression>的类型必须与列表项匹配。 作为提醒,列表的项目类型必须匹配。

句法
in(<parameters>)
参数
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2
参数 类型
字符串 字符串
布尔值 布尔值
整数 整数
小数 小数
持续时间 持续时间
日期时间 日期时间
DateTimeOnly DateTimeOnly
列表 listString
列表 listBoolean
列表 listInteger
列表 listDecimal
列表 listDuration
列表 listDateTime
列表 listDateTimeOnly
列表 listDateOnly
签名和返回的类型

in(<integer>,<listInteger>)

in(<decimal>,<listDecimal>)

in(<string>,<listString>)

in(<boolean>,<listBoolean>)

in(<dateTimeOnly>,<listDateTimeOnly>)

in(<dateTime>,<listDateTime>)

in(<dateOnly>,<listDateOnly>)

in(<duration>,<listDuration>)

返回布尔值。

示例

in(4,[4,5,3,4])

返回真。

in(8,[4,5,3,4])

返回假。

in(#{ExperiencePlatform.ProfileFieldGroup.profile.person.gender}, ["male"])

intersect intersect

返回两个输入列表中的公用值。 如果两个列表之一为null,则返回空列表。

句法
intersect(<parameters>)
参数
table 0-row-2 1-row-2 2-row-2
参数 类型
列表1 list
列表2 list
签名和返回的类型

intersect(listString,listString):列表字符串

intersect(listDecimal,listDecimal): listDecimal

intersect(listInteger,listInteger): listInteger

intersect(listDateTime,listDateTime): listDateTime

intersect(listDateTimeOnly,listDateTimeOnly): listDateTimeOnly

intersect(listDateOnly,listDateOnly): listDateOnly

intersect(listDuration,listDuration): listDuration

intersect(listBoolean,listBoolean):列表布尔值

返回列表。

示例
code language-json
intersect(
    ["sports", "news", "documentary"],
    ["sports", "movies", "documentary"]
)

返回[“sports”,“news”]

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
    ["sports", "documentary"]
)

返回配置文件属性和给定类别列表之间的通用项目。

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
        @event{myEvent.sport_interests}
)

返回用户档案属性和给定事件字段之间的公用项。

limit limit

返回列表的第一个或最后的N个元素。

句法
limit(<parameters>)
参数
table 0-row-3 1-row-3 2-row-3 3-row-3
参数 类型 描述
listToProcess listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly或listObject 要考虑的列表。 对于listObject,它必须是字段引用。
项目数 整数 要从给定列表中返回的项目数。
firstOrLastItems 布尔 此参数是可选的(默认为true)。 true返回第一项。 false返回最后一个项目。
签名和返回的类型

limit(<listString>,<integer>)

limit(<listString>,<integer>,<boolean>)

返回字符串列表。

limit(<listInteger>,<integer>)

limit(<listInteger>,<integer>,<boolean>)

返回整数列表。

limit(<listDecimal>,<integer>)

limit(<listDecimal>,<integer>,<boolean>)

返回小数位数列表。

limit(<listBoolean>,<integer>)

limit(<listBoolean>,<integer>,<boolean>)

返回布尔值列表。

limit(<listDateOnly>,<integer>)

limit(<listDateOnly>,<integer>,<boolean>)

返回日期列表。

limit(<listDateTimeOnly>,<integer>)

limit(<listDateTimeOnly>,<integer>,<boolean>)

返回不考虑时区的日期时间列表。

limit(<listDateTime>,integer>)

limit(<listDateTime>,<integer>,<boolean>)

返回日期时间列表。

limit(<listDuration>,<integer>)

limit(<listDuration>,<integer>,<boolean>)

返回持续时间列表。

limit(<listObject>,<integer>)

limit(<listObject>,<integer>,<boolean>)

返回对象列表。

示例

limit(["A", "B", "C", "D", "E"], 3)

返回["A","B","C"]

limit(["A", "B", "C", "D", "E"], 3, false)

返回["C","D","E"]

listSize listSize

计算列表中的元素数。

句法
listSize(<parameters>)
参数
table 0-row-3 1-row-3
参数 类型 描述
listToProcess listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly或listObject 要处理的列表。 对于listObject,它必须是字段引用。 listObject不能包含null对象。
签名和返回的类型

listSize(<listInteger>)

listSize(<listDecimal>)

listSize(<listString>)

listSize(<listBoolean>)

listSize(<listDateTimeOnly>)

listSize(<listDateTime>)

listSize(<listDateOnly>)

listSize(<listDuration>)

返回整数。

listSize(<listObject>)

示例

listSize([10,2,3])

返回3。

listSize(@event{my_event.productListItems})

返回给定对象数组(listObject类型)中的对象数。

serializeList serializeList

将给定列表(除listObject之外的任何类型)转换为字符串。

句法
serializeList(<parameters>)
参数
table 0-row-3 1-row-3 2-row-3 3-row-3
参数 类型 描述
listToProcess listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly 要转换为字符串的列表。
分隔符 字符串 输出字符串中每个列表元素之间的分隔符。
addQuotes 布尔 此参数指示输出字符串中的每个元素是否应包含引号(true)或(false)。
签名和返回的类型

serializeList(<listInteger>,<string>,<boolean>)

serializeList(<listDecimal>,<string>,<boolean>)

serializeList(<listString>,<string>,<boolean>)

serializeList(<listBoolean>,<string>,<boolean>)

serializeList(<listDateTimeOnly>,<string>,<boolean>)

serializeList(<listDateTime>,<string>,<boolean>)

serializeList(<listDateOnly>,<string>,<boolean>)

serializeList(<listDuration>,<string>,<boolean>)

返回字符串。

示例

serializeList(["Hello","World"], " ", false)

返回“Hello World”。

serializeList(["Hello", "World"], ",", true)

返回“Hello”、“World”。

sort sort

以自然顺序对值列表或对象进行排序。

句法
sort(<parameters>)
参数
table 0-row-3 1-row-3 2-row-3 3-row-3
参数 类型 描述
listToSort listString、listBoolean、listInteger、listDecimal、listDuration、listDateTime、listDateTimeOnly、listDateOnly或listObject 要排序的列表。 对于listObject,它必须是字段引用。
keyAttributeName 字符串 此参数仅适用于listObject。 给定列表中的对象中的属性名称用作排序的键。
sortingOrder 布尔 升序(true)或降序(false)
签名和返回的类型

sort(<listInteger>,<boolean>)

返回整数列表。

sort(<listDecimal>,<boolean>)

返回小数位数列表。

sort(<listString>,<boolean>)

返回字符串列表。

sort(<listDateTimeOnly>,<boolean>)

返回不考虑时区的日期时间列表。

sort(<listDateTime>,<boolean>)

返回日期时间列表。

sort(<listDateOnly>,<boolean>)

返回日期列表。

sort(<listBoolean>,<boolean>)

返回布尔值列表。

sort(<listObject>,<string>,<boolean>)

返回对象列表。

示例

sort(["A", "C", "B"], true)

返回["A","B","C"]

sort([1, 3, 2], false)

返回[3, 2, 1]

sort(@event{my_event.productListItems}, "SKU", true)

返回按SKU属性排序的listObject(升序)

AI知识参考

本节包含结构化知识,用于支持与本主题相关的解释、检索和问答。

要全面了解相关信息,应将此信息与本页上的文档相结合。 这两个源都不是独立的;页面描述了功能,而本节提供了其他上下文来帮助消除术语、意图、适用性和约束条件的歧义。

  • TL;DR:​本页记录了AJO历程表达式中可用的所有列表函数,包括如何过滤、排序、去重、检查成员资格、限制、序列化和查找列表与数组的交集。

意图:

  • 使用distinct (忽略null)或distinctWithNull (保留null)从列表中删除重复的值
  • 筛选listObject以仅返回使用filter匹配特定键值的对象
  • 使用getListItem从列表中检索特定索引处的元素
  • 使用in检查列表中是否存在值
  • 使用intersect查找两个列表之间的通用元素
  • 使用limit返回列表的第一或最后的N个元素
  • 使用listSize计算列表中的元素总数
  • 使用serializeList将列表转换为分隔字符串
  • 使用sort按升序或降序对列表排序

术语表:

  • listObject:必须是字段引用的复杂对象列表;不能包含null对象​(产品特定)
  • keyAttributeName:与distinctfiltersort一起使用的可选字符串参数,用于标识要用于重复数据删除、筛选或排序​ (产品特定) ​的对象属性
  • intersect: set操作仅返回两个输入列表中存在的元素

护栏:

  • distinctWithNull不支持<listObject>参数类型
  • filter要求listObject参数是字段引用,而不是内联文本
  • listObject上的listSize要求列表是字段引用;listObject不能包含null对象
  • serializeList不支持listObject类型

术语:

  • 规范名称:列表函数 — 首字母缩略词:none — 变体:集合函数,数组函数
  • 同义词: “listSize” = “count list elements”; “serializeList” = “join list to string”
  • 请勿混淆:“distinct”(忽略null)≠“distinctWithNull”(保留null作为非重复值)
  • 请勿混淆:“limit”与第三个参数true(返回前N项)≠“limit”与false(返回后N项)
  • 请勿混淆:“相交”(两个列表之间的通用元素)≠“筛选”(匹配特定键值的元素)

常见问题解答:

  • 问:如何获取列表的前3项? — 使用limit(myList, 3)limit(myList, 3, true);默认返回第一个项目。
  • 问:如何获取列表的最后3项? — 使用limit(myList, 3, false)
  • 问:distinctdistinctWithNull之间有何区别?distinct忽略null值并从结果中将其排除;distinctWithNull将null视为不同的值,如果存在null,则包含一个null条目。
  • 问:我是否可以使用filter筛选字符串列表? — 否,filter仅适用于listObject;对于标量列表,使用indistinct删除重复项。
  • 问:如何检查值是否在列表中? — 使用in(value, myList),如果在列表中找到值则返回true。
  • 问:我是否可以根据特定属性对listObject进行排序? — 是,使用sort(@event{...}, "attributeName", true),其中第二个参数是属性名称,第三个参数是排序方向(true =升序)。
recommendation-more-help
journey-optimizer-help