Fonctions de liste list-functions

Les fonctions de liste vous permettent de manipuler et d’utiliser des collections de valeurs dans vos expressions de parcours. Ces fonctions sont essentielles pour le filtrage, le tri, la transformation et l’analyse des tableaux et des listes dans vos parcours clients.

Utilisez des fonctions de liste lorsque vous devez :

  • filtrer et extraire des éléments spécifiques des collections en fonction de critères (filter, getListItem) ;
  • trier et organiser les éléments de liste par ordre croissant ou décroissant (sort) ;
  • Supprime les doublons et obtenir des valeurs uniques des listes (distinct, distinctWithNull)
  • vérifie si des valeurs existent dans les collections (in) ;
  • limiter le nombre d’éléments renvoyés par une liste (limit) ;
  • Obtenir la taille d’une liste (listSize) ou transformer des listes en différents formats (serializeList)
  • Effectuez des opérations d’ensemble telles que la recherche d’éléments communs entre des listes (intersect), la combinaison de listes (mergeLists) ou la soustraction d’une liste à une autre (DifferenceLists).

Les fonctions de liste fournissent des outils puissants pour travailler avec des structures de données complexes, ce qui permet une manipulation de données sophistiquée et une logique conditionnelle basée sur les contenus de collection.

DifferenceLists differenceLists

Renvoie les éléments de la première liste qui ne sont pas présents dans la seconde liste (définir la différence : list 1 - list 2). Les entrées nulles sont ignorées. Le résultat supprime toujours les valeurs en double et conserve l’ordre d’insertion de la première liste.

Syntaxe
differenceLists(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3
Paramètre Type Description
list 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly ou listDateOnly Liste à soustraire.
list 2 Même type que la liste 1. Liste des éléments à supprimer de la liste 1.
Signatures et types renvoyés

differenceLists(listString,listString) : listString

differenceLists(listInteger,listInteger) : listInteger

differenceLists(listDecimal,listDecimal) : listDecimal

differenceLists(listBoolean,listBoolean) : listBoolean

differenceLists(listDuration,listDuration) : listDuration

differenceLists(listDateTime,listDateTime) : listDateTime

differenceLists(listDateTimeOnly,listDateTimeOnly) : listDateTimeOnly

differenceLists(listDateOnly,listDateOnly) : listDateOnly

Exemples
code language-json
differenceLists(['a','b','c'], ['b'])

Renvoie ['a','c'].

code language-json
differenceLists(['a','a','b'], [])

Renvoie ['a','b'].

code language-json
differenceLists([], ['a'])

Renvoie [].

distinct distinct

Renvoie les valeurs ou objets distincts d’une liste donnée. Les entrées « null » sont ignorées.

Syntaxe
distinct(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3
Paramètre Type Description
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly, or listObject Liste à traiter. Pour listObject, il doit s’agir d’une référence de champ.
keyAttributeName Chaîne Ce paramètre est facultatif et uniquement pour listObject. Si le paramètre n’est pas fourni, un objet est considéré comme dupliqué si tous les attributs ont les mêmes valeurs. Dans le cas contraire, un objet est considéré comme dupliqué si l’attribut donné a la même valeur.
Signatures et types renvoyés

distinct(<listInteger>)

Renvoie une liste de nombres entiers.

distinct(<listDecimal>)

Renvoie une liste de nombres décimaux.

distinct(<listString>)

Renvoie une liste de chaînes.

distinct(<listDateTimeOnly>)

Renvoie une liste de dates et heures sans tenir compte du fuseau horaire.

distinct(<listDateTime>)

Renvoie une liste de dates et heures.

distinct(<listDateOnly>)

Renvoie une liste de dates.

distinct(<listBoolean>)

Renvoie une liste de valeurs booléennes.

distinct(<listDuration>)

Renvoie une liste de durées.

distinct(<listObject>)

distinct(<listObject>,<string>)

Renvoie une liste d’objets.

Exemples

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

Renvoie [10, 2].

distinctWithNull distinctWithNull

Renvoie les valeurs ou objets distincts d’une liste donnée. Si la liste comporte au moins une entrée « null », une entrée « null » est présente dans la liste renvoyée.

Syntaxe
distinctWithNull(<parameters>)
Paramètres
table 0-row-3 1-row-3
Paramètre Type Description
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Liste à traiter.
Signatures et types renvoyés

distinctWithNull(<listInteger>)

Renvoie une liste de nombres entiers.

distinctWithNull(<listDecimal>)

Renvoie une liste de nombres décimaux.

distinctWithNull(<listString>)

Renvoie une liste de chaînes.

distinctWithNull(<listDateTimeOnly>)

Renvoie une liste de dates et heures sans tenir compte du fuseau horaire.

distinctWithNull(<listDateTime>)

Renvoie une liste de dates et heures.

distinctWithNull(<listDateOnly>)

Renvoie une liste de dates.

distinctWithNull(<listBoolean>)

Renvoie une liste de valeurs booléennes.

distinctWithNull(<listDuration>)

Renvoie une liste de durées.

Exemples

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

Renvoie [10, 2, null]

Remarque : le paramètre <listObject> n’est pas pris en charge dans cette fonction.

filter filter

Renvoie une valeur listObject avec les objets dont lʼattribut clé correspond à lʼune des valeurs clés données.

Syntaxe
filter(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3 3-row-3
Paramètre Type Description
listToFilter listObject liste dʼobjects à filtrer. Il doit être une référence de champ.
keyAttributeName Chaîne nom de lʼattribut dans les objets de la liste donnée, utilisé comme clé pour le filtrage
keyValueList list tableau de valeurs clés pour le filtrage
Signatures et types renvoyés

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)

Renvoie une valeur listObject.

Exemples

Voici un exemple dʼune payload transmise dans un événement entrant « 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
}]

Vous pouvez utiliser lʼexpression suivante :

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

Renvoie une valeur listObject contenant les deux objets avec « product2 » et « product3 » comme id.

getListItem getListItem

Renvoie l’élément de la liste à l’index donné.

Syntaxe
getListItem(<parameters>)
Paramètres
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
Paramètre Type
list listString
list listBoolean
list listInteger
list listDecimal
list listDuration
list listDateTime
list listDateTimeOnly
list listDateOnly
index entier
Signatures et type renvoyé

getListItem(<listInteger>,<index>)

Renvoie un entier.

getListItem(<listDecimal>,<index>)

Renvoie une valeur décimale.

getListItem(<listString>,<index>)

Renvoie une chaîne.

getListItem(<listDateTimeOnly>,<index>)

Renvoie une date et une heure sans prendre en compte le fuseau horaire.

getListItem(<listDateTime>,<index>)

Renvoie une date et une heure.

getListItem(<listDateOnly>,<index>)

Renvoie une liste de dates.

getListItem(<listBoolean>,<index>)

Renvoie une valeur booléenne.

getListItem(<listDuration>,<index>)

Renvoie une durée.

Exemples

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

Renvoie « 2 »

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

Renvoie « C »

Exemples avec un champ d’événement ‘event.appVersion’ avec la valeur : « 20.45.2.3434 »

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

Renvoie ["20", "45", "2", "3434"]

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

Renvoie « 20 »

in in

Vérifie si la valeur du premier argument figure dans la liste. La vérification est effectuée par l’intermédiaire d’un opérateur Equal sur chaque valeur d’argument. Elle renvoie true si la valeur de l’argument est trouvée, false dans le cas contraire.

Le type de l’<expression> doit correspondre aux éléments de la liste. Pour mémoire, les types d’éléments de la liste doivent correspondre les uns aux autres.

Syntaxe
in(<parameters>)
Paramètres
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
Paramètre Type
Chaîne Chaîne
Booléen Booléen
Nombre entier Nombre entier
Décimal Décimal
Durée Durée
DateTime DateTime
DateTimeOnly DateTimeOnly
Liste listString
Liste listBoolean
Liste listInteger
Liste listDecimal
Liste listDuration
Liste listDateTime
Liste listDateTimeOnly
Liste listDateOnly
Signature et type renvoyé

in(<integer>,<listInteger>)

in(<decimal>,<listDecimal>)

in(<string>,<listString>)

in(<boolean>,<listBoolean>)

in(<dateTimeOnly>,<listDateTimeOnly>)

in(<dateTime>,<listDateTime>)

in(<dateOnly>,<listDateOnly>)

in(<duration>,<listDuration>)

Renvoie une valeur booléenne.

Exemples

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

Renvoie true.

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

Renvoie false.

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

intersect intersect

Renvoie les valeurs communes dans les deux listes dʼentrée. Si lʼune des deux listes est nulle, elle renvoie une liste vide.

Syntaxe
intersect(<parameters>)
Paramètres
table 0-row-2 1-row-2 2-row-2
Paramètre Type
list 1 list
list 2 list
Signatures et types renvoyés

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) : listBoolean

Renvoie une liste.

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

Renvoie [« sports », « news »]

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

Renvoie les éléments communs entre les attributs du profil et la liste de catégories donnée.

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

Renvoie les éléments communs entre les attributs du profil et le champ dʼévénement donné.

limit limit

Renvoie les N premiers ou derniers éléments d’une liste.

Syntaxe
limit(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3 3-row-3
Paramètre Type Description
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly, or listObject Liste à prendre en compte. Pour listObject, il doit s’agir d’une référence de champ.
numberOfItems Entier Nombre d’éléments à renvoyer à partir de la liste donnée.
firstOrLastItems Booléen Ce paramètre est facultatif (true par défaut). true renvoie les premiers éléments. false renvoie les derniers éléments.
Signature et type renvoyé

limit(<listString>,<integer>)

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

Renvoie une liste de chaînes.

limit(<listInteger>,<integer>)

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

Renvoie une liste de nombres entiers.

limit(<listDecimal>,<integer>)

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

Renvoie une liste de nombres décimaux.

limit(<listBoolean>,<integer>)

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

Renvoie une liste de valeurs booléennes.

limit(<listDateOnly>,<integer>)

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

Renvoie une liste de dates.

limit(<listDateTimeOnly>,<integer>)

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

Renvoie une liste de dates et heures sans tenir compte du fuseau horaire.

limit(<listDateTime>,integer>)

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

Renvoie une liste de dates et heures.

limit(<listDuration>,<integer>)

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

Renvoie une liste de durées.

limit(<listObject>,<integer>)

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

Renvoie une liste d’objets.

Exemples

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

Renvoie ["A","B","C"].

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

Renvoie ["C","D","E"].

listSize listSize

Compte le nombre d’éléments dans la liste.

Syntaxe
listSize(<parameters>)
Paramètres
table 0-row-3 1-row-3
Paramètre Type Description
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly, or listObject Liste à traiter. Pour listObject, il doit s’agir d’une référence de champ. Un listObject ne peut pas contenir d’objet null.
Signatures et type renvoyé

listSize(<listInteger>)

listSize(<listDecimal>)

listSize(<listString>)

listSize(<listBoolean>)

listSize(<listDateTimeOnly>)

listSize(<listDateTime>)

listSize(<listDateOnly>)

listSize(<listDuration>)

Renvoie un nombre entier.

listSize(<listObject>)

Exemples

listSize([10,2,3])

Renvoie 3.

listSize(@event{my_event.productListItems})

Renvoie le nombre d’objets dans le tableau d’objets donné (type listObject).

mergeLists mergeLists

Combine deux listes. Lorsque deduplicate est true, renvoie l’union des deux listes avec les valeurs en double supprimées. Lorsque deduplicate est false, renvoie la concaténation des deux listes (éléments de la liste 1 suivis des éléments de la liste 2), en conservant les doublons. Les entrées nulles sont ignorées.

Remarque : le paramètre deduplicate doit être un true ou un false littéral, et non une expression booléenne dynamique.

Syntaxe
mergeLists(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3 3-row-3
Paramètre Type Description
list 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly ou listDateOnly Première liste. Ses éléments sont ajoutés en premier au résultat.
list 2 Même type que la liste 1. Deuxième liste. Ses éléments sont ajoutés après les éléments de la liste 1.
dédupliquer littéral booléen true renvoie l’union des deux listes avec les doublons supprimés. false renvoie la concaténation des deux listes, en conservant les doublons. Doit être un true ou un false littéral.
Signatures et types renvoyés

mergeLists(listString,listString,boolean) : listString

mergeLists(listInteger,listInteger,boolean) : listInteger

mergeLists(listDecimal,listDecimal,boolean) : listDecimal

mergeLists(listBoolean,listBoolean,boolean) : listBoolean

mergeLists(listDuration,listDuration,boolean) : listDuration

mergeLists(listDateTime,listDateTime,boolean) : listDateTime

mergeLists(listDateTimeOnly,listDateTimeOnly,boolean) : listDateTimeOnly

mergeLists(listDateOnly,listDateOnly,boolean) : listDateOnly

Exemples
code language-json
mergeLists(['a','b'], ['b','c'], true)

Renvoie ['a','b','c'].

code language-json
mergeLists(['a','b'], ['b','c'], false)

Renvoie ['a','b','b','c'].

serializeList serializeList

Convertit une liste donnée (tout type sauf listObject) en chaîne.

Syntaxe
serializeList(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3 3-row-3
Paramètre Type Description
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Liste à convertir en chaîne.
séparateur chaîne Séparateur entre chaque élément de liste dans la chaîne de sortie.
addQuotes booléen Ce paramètre indique si chaque élément de la chaîne de sortie doit inclure des guillemets (true) ou non (false).
Signature et type renvoyé

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>)

Renvoie une chaîne.

Exemples

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

Renvoie « Hello World ».

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

Renvoie « Hello », « World ».

sort sort

Trie une liste de valeurs ou d’objets dans l’ordre naturel.

Syntaxe
sort(<parameters>)
Paramètres
table 0-row-3 1-row-3 2-row-3 3-row-3
Paramètre Type Description
listToSort listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly, or listObject Liste à trier. Pour listObject, il doit s’agir d’une référence de champ.
keyAttributeName Chaîne Ce paramètre est uniquement destiné à listObject. Le nom de lʼattribut dans les objets de la liste donnée, utilisé comme clé pour le tri.
sortingOrder Booléen ascendant (true) ou descendant (false)
Signature et type renvoyé

sort(<listInteger>,<boolean>)

Renvoie une liste de nombres entiers.

sort(<listDecimal>,<boolean>)

Renvoie une liste de nombres décimaux.

sort(<listString>,<boolean>)

Renvoie une liste de chaînes.

sort(<listDateTimeOnly>,<boolean>)

Renvoie une liste de dates et heures sans tenir compte du fuseau horaire.

sort(<listDateTime>,<boolean>)

Renvoie une liste de dates et heures.

sort(<listDateOnly>,<boolean>)

Renvoie une liste de dates.

sort(<listBoolean>,<boolean>)

Renvoie une liste de valeurs booléennes.

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

Renvoie une liste d’objets.

Exemples

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

Renvoie ["A","B","C"].

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

Renvoie [3, 2, 1].

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

Renvoie une valeur listObject classée par attribut SKU (ordre ascendant).

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page documents all list functions available in AJO journey expressions, covering how to filter, sort, deduplicate, check membership, limit, serialize, merge, subtract, and find intersections of lists and arrays.

Intents:

  • Remove duplicate values from a list using distinct (ignoring nulls) or distinctWithNull (preserving nulls)
  • Filter a listObject to return only objects matching specific key values using filter
  • Retrieve an element at a specific index from a list using getListItem
  • Check whether a value exists in a list using in
  • Find common elements between two lists using intersect
  • Combine two lists, with or without deduplication, using mergeLists
  • Subtract one list from another (set difference) using differenceLists
  • Return the first or last N elements of a list using limit
  • Count the total number of elements in a list using listSize
  • Convert a list to a delimited string using serializeList
  • Sort a list in ascending or descending order using sort

Glossary:

  • listObject: A list of complex objects that must be a field reference; cannot contain null objects (product-specific)
  • keyAttributeName: An optional string parameter used with distinct, filter, and sort to identify which object attribute to use for deduplication, filtering, or sorting (product-specific)
  • intersect: A set operation returning only the elements present in both input lists
  • mergeLists: A set operation returning the union (deduplicated) or concatenation (with duplicates) of two lists, depending on the deduplicate parameter (product-specific)
  • differenceLists: A set operation returning the items of the first list that are not present in the second list (product-specific)

Guardrails:

  • distinctWithNull does not support the <listObject> parameter type
  • filter requires the listObject parameter to be a field reference, not an inline literal
  • listSize on a listObject requires the list to be a field reference; a listObject cannot contain null objects
  • serializeList does not support the listObject type
  • mergeLists and differenceLists only support scalar list types (string, integer, decimal, boolean, dateTime, dateTimeOnly, dateOnly, duration); listObject is not supported
  • mergeLists’s deduplicate parameter must be a literal true/false, not a dynamic boolean expression
  • differenceLists always deduplicates its result; there is no option to keep duplicates

Terminology:

  • Canonical name: List functions — Acronym: none — variants: collection functions, array functions
  • Synonyms: “listSize” = “count list elements”; “serializeList” = “join list to string”
  • Do not confuse: “distinct” (ignores nulls) ≠ “distinctWithNull” (preserves null as a distinct value)
  • Do not confuse: “limit” with third parameter true (returns first N items) ≠ “limit” with false (returns last N items)
  • Do not confuse: “intersect” (common elements between two lists) ≠ “filter” (elements matching specific key values)
  • Do not confuse: “mergeLists” (combines two lists, union or concatenation) ≠ “differenceLists” (subtracts one list from another) ≠ “intersect” (common elements only)

FAQ:

  • Q: How do I get the first 3 items of a list? — Use limit(myList, 3) or limit(myList, 3, true); the default is to return the first items.
  • Q: How do I get the last 3 items of a list? — Use limit(myList, 3, false).
  • Q: What is the difference between distinct and distinctWithNull?distinct ignores null values and excludes them from the result; distinctWithNull treats null as a distinct value and includes one null entry if any nulls are present.
  • Q: Can I filter a list of strings with filter? — No, filter only works on listObject; for scalar lists use in or distinct for deduplication.
  • Q: How do I check if a value is in a list? — Use in(value, myList), which returns true if the value is found in the list.
  • Q: Can I sort a listObject by a specific attribute? — Yes, use sort(@event{...}, "attributeName", true) where the second parameter is the attribute name and the third is the sort direction (true = ascending).
  • Q: How do I combine two lists and remove duplicates? — Use mergeLists(list1, list2, true).
  • Q: How do I combine two lists but keep duplicate values? — Use mergeLists(list1, list2, false).
  • Q: How do I find the items in one list that are not in another? — Use differenceLists(list1, list2), which returns the items of list1 not present in list2.
  • Q: What is the difference between intersect and differenceLists?intersect returns items common to both lists; differenceLists returns items in the first list that are absent from the second list.
recommendation-more-help
journey-optimizer-help