清單函式 list-functions
清單函式可讓您操控和處理歷程運算式中的值集合。 這些功能對於篩選、排序、轉換和分析客戶歷程中的陣列和清單至關重要。
當您有以下需要時,請使用清單函式:
- 根據條件(篩選,getListItem)從集合中篩選及擷取特定專案
- 以遞增或遞減順序排序及組織清單專案(排序)
- 移除重複專案,並從清單(distinct, distinctWithNull)取得唯一值
- 檢查集合中是否存在值(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
傳回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 |
|---|
|
您可以使用下列運算式:
| code language-json |
|---|
|
傳回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 |
| 索引 | 整數 |
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
檢查第一個引數值是否在清單中。 檢查會透過每個引數值上的「等於」來執行。 如果找到引數值,則傳回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])
傳回true。
in(8,[4,5,3,4])
傳回false。
in(#{ExperiencePlatform.ProfileFieldGroup.profile.person.gender}, ["male"])
相交 intersect
傳回兩個輸入清單中的通用值。 如果兩個清單之一為空,則會傳回空白清單。
intersect(<parameters>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| 參數 | 類型 |
| 清單1 | list |
| 清單2 | list |
intersect(listString,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 |
|---|
|
傳回[“sports”,“news”]
| code language-json |
|---|
|
傳回設定檔屬性和指定類別清單之間的通用專案。
| code language-json |
|---|
|
傳回設定檔屬性和指定事件欄位之間的通用專案。
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,它必須是欄位參考。 |
| numberofItems | 整數 | 要從指定清單傳回的專案數。 |
| 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)。 |
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 (遞增順序)
本節包含結構化知識,用於支援與本主題相關的解譯、擷取和問答。
如需完整瞭解,此資訊應結合本頁的檔案。 兩者皆非獨立來源;頁面說明功能,本節提供額外內容,以協助去除術語、意圖、適用性和限制條件的歧義。
- TL;DR:此頁面記錄了AJO歷程運算式中可用的所有清單功能,包括如何篩選、排序、去除重複專案、檢查成員資格、限制、序列化和尋找清單與陣列的交集。
意圖:
- 使用
distinct(略過null)或distinctWithNull(保留null)從清單中移除重複值 - 篩選listObject以使用
filter只傳回符合特定索引鍵值的物件 - 使用
getListItem從清單中擷取特定索引處的專案 - 使用
in檢查清單中是否存在值 - 使用
intersect尋找兩個清單之間的共同元素 - 使用
limit傳回清單的第一個或最後的N個元素 - 使用
listSize計算清單中的元素總數 - 使用
serializeList將清單轉換為分隔字串 - 使用
sort以遞增或遞減順序排序清單
字彙表:
- listObject:必須是欄位參考的複雜物件清單;不能包含Null物件(產品特定)
- keyAttributeName:與
distinct、filter和sort搭配使用的選擇性字串引數,用來識別要用於重複資料刪除、篩選或排序 (產品特定) 的物件屬性 - 相交: 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)。 - 問:
distinct與distinctWithNull之間有何差異? —distinct會忽略null值,並將它們從結果中排除;distinctWithNull會將null視為不同的值,並在出現任何null時包含一個null專案。 - 問:我可以使用
filter篩選字串清單嗎? — 否,filter僅適用於listObject;對於純量清單,請使用in或distinct進行重複資料刪除。 - 問:如何檢查清單中是否有值? — 使用
in(value, myList),如果值在清單中找到,則傳回true。 - 問:我是否可依特定屬性排序listObject? — 是,使用
sort(@event{...}, "attributeName", true),其中第二個引數是屬性名稱,第三個是排序方向(true =升序)。