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.
differenceLists(<parameters>)| 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. |
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
| code language-json |
|---|
|
Renvoie ['a','c'].
| code language-json |
|---|
|
Renvoie ['a','b'].
| code language-json |
|---|
|
Renvoie [].
distinct distinct
Renvoie les valeurs ou objets distincts d’une liste donnée. Les entrées « null » sont ignorées.
distinct(<parameters>)| 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. |
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.
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.
distinctWithNull(<parameters>)| table 0-row-3 1-row-3 | ||
|---|---|---|
| Paramètre | Type | Description |
| listToProcess | listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly | Liste à traiter. |
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.
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.
filter(<parameters>)| 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 |
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.
Voici un exemple dʼune payload transmise dans un événement entrant « myevent » :
| code language-json |
|---|
|
Vous pouvez utiliser lʼexpression suivante :
| code language-json |
|---|
|
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é.
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 | |
|---|---|
| Paramètre | Type |
| list | listString |
| list | listBoolean |
| list | listInteger |
| list | listDecimal |
| list | listDuration |
| list | listDateTime |
| list | listDateTimeOnly |
| list | listDateOnly |
| index | entier |
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.
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.
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 | |
|---|---|
| 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 |
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.
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.
intersect(<parameters>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| Paramètre | Type |
| list 1 | list |
| 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) : listBoolean
Renvoie une liste.
| code language-json |
|---|
|
Renvoie [« sports », « news »]
| code language-json |
|---|
|
Renvoie les éléments communs entre les attributs du profil et la liste de catégories donnée.
| code language-json |
|---|
|
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.
limit(<parameters>)| 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. |
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.
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.
listSize(<parameters>)| 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. |
listSize(<listInteger>)
listSize(<listDecimal>)
listSize(<listString>)
listSize(<listBoolean>)
listSize(<listDateTimeOnly>)
listSize(<listDateTime>)
listSize(<listDateOnly>)
listSize(<listDuration>)
Renvoie un nombre entier.
listSize(<listObject>)
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.
mergeLists(<parameters>)| 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. |
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
| code language-json |
|---|
|
Renvoie ['a','b','c'].
| code language-json |
|---|
|
Renvoie ['a','b','b','c'].
serializeList serializeList
Convertit une liste donnée (tout type sauf listObject) en chaîne.
serializeList(<parameters>)| 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). |
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.
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.
sort(<parameters>)| 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) |
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.
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).
Cette section contient des connaissances structurées destinées à soutenir l’interprétation, la récupération et la réponse aux questions en lien avec ce sujet.
Pour bien comprendre le sujet, consultez également la documentation de cette page. Ces sources sont complémentaires. La page décrit la fonctionnalité, tandis que cette section fournit un contexte supplémentaire qui permet de clarifier la terminologie, les objectifs, le champ d’application et les contraintes.
- TL;DR: Cette page documente toutes les fonctions de liste disponibles dans les expressions de parcours AJO, couvrant la manière de filtrer, trier, dédupliquer, vérifier l’appartenance, limiter, sérialiser, fusionner, soustraire et rechercher les intersections des listes et des tableaux.
Intentions :
- Supprimer les valeurs en double d’une liste à l’aide de
distinct(en ignorant les nulls) oudistinctWithNull(en conservant les nulls) - Filtrez un listObject pour renvoyer uniquement les objets correspondant à des valeurs de clé spécifiques à l’aide de
filter - Récupérer un élément à un index spécifique d’une liste à l’aide de
getListItem - Vérifier si une valeur existe dans une liste à l’aide de
in - Recherche d’éléments communs à deux listes à l’aide de
intersect - Combiner deux listes, avec ou sans déduplication, en utilisant
mergeLists - Soustraire une liste d’une autre (définir la différence) à l’aide de
differenceLists - Renvoyer les N premiers ou derniers éléments d’une liste à l’aide de
limit - Compter le nombre total d’éléments dans une liste à l’aide de
listSize - Convertir une liste en chaîne délimitée à l’aide de
serializeList - Trier une liste par ordre croissant ou décroissant à l’aide de
sort
Glossaire :
- listObject : liste d’objets complexes qui doivent être une référence de champ ; ne peut pas contenir d’objets nuls (spécifiques au produit)
- keyAttributeName : paramètre de chaîne facultatif utilisé avec
distinct,filteretsortpour identifier l’attribut d’objet à utiliser pour la déduplication, le filtrage ou le tri des (spécifique au produit) - intersect : opération set renvoyant uniquement les éléments présents dans les deux listes d’entrée
- mergeLists : une opération set renvoyant l’union (dédupliquée) ou la concaténation (avec doublons) de deux listes, selon le paramètre
deduplicate(spécifique au produit) - DifferenceLists : opération d’ensemble renvoyant les éléments de la première liste qui ne sont pas présents dans la deuxième liste (spécifique au produit)
Mécanismes de sécurisation :
distinctWithNullne prend pas en charge le type de paramètre<listObject>filternécessite que le paramètre listObject soit une référence de champ, et non un littéral intégrélistSizesur un listObject nécessite que la liste soit une référence de champ ; un listObject ne peut pas contenir d’objets nullserializeListne prend pas en charge le type delistObjectmergeListsetdifferenceListsne prennent en charge que les types de listes scalaires (chaîne, entier, décimal, booléen, dateTime, dateTimeOnly, dateOnly, durée) ;listObjectn’est pas pris en charge- Le paramètre
deduplicatedemergeListsdoit être untrue/falselittéral, et non une expression booléenne dynamique differenceListsdéduplique toujours son résultat ; il n’y a pas d’option pour conserver les doublons
Terminologie :
- Nom canonique : Fonctions de liste — Acronyme : none — variantes : fonctions de collection, fonctions de tableau
- Synonymes : « listSize » = « count list elements » ; « serializeList » = « join list to string »
- Ne pas confondre : « distinct » (ignore les nulls) ≠ « distinctWithNull » (conserve la valeur null comme valeur distincte)
- Ne les confondez pas : « limit » avec le troisième paramètre
true(renvoie les N premiers éléments) ≠ « limit » avecfalse(renvoie les N derniers éléments). - Ne pas confondre : « intersect » (éléments communs entre deux listes) ≠ « filter » (éléments correspondant à des valeurs de clé spécifiques)
- Ne pas confondre : « mergeLists » (combine deux listes, union ou concaténation) ≠ « DifferenceLists » (soustrait une liste d’une autre) ≠ « intersect » (éléments communs uniquement)
Questions fréquentes :
- Q : Comment puis-je obtenir les 3 premiers éléments d’une liste ? — Utilisez
limit(myList, 3)oulimit(myList, 3, true); par défaut, les premiers éléments sont renvoyés. - Q : Comment puis-je obtenir les 3 derniers éléments d’une liste ? — Utiliser
limit(myList, 3, false). - Q : Quelle est la différence entre
distinctetdistinctWithNull? —distinctignore les valeurs nulles et les exclut du résultat ;distinctWithNulltraite les valeurs nulles comme une valeur distincte et inclut une entrée nulle si des valeurs nulles sont présentes. - Q : Puis-je filtrer une liste de chaînes avec des
filter? — Non,filterfonctionne uniquement surlistObject; pour les listes scalaires, utilisezinoudistinctpour la déduplication. - Q : Comment puis-je vérifier si une valeur se trouve dans une liste ? — Utilisez
in(value, myList), qui renvoie true si la valeur figure dans la liste. - Q : Puis-je trier un listObject en fonction d’un attribut spécifique ? — Oui, utilisez
sort(@event{...}, "attributeName", true)où le deuxième paramètre est le nom de l’attribut et le troisième est le sens du tri (true = croissant). - Q : Comment combiner deux listes et supprimer les doublons ? — Utiliser
mergeLists(list1, list2, true). - Q : Comment combiner deux listes tout en conservant des valeurs en double ? — Utiliser
mergeLists(list1, list2, false). - Q : Comment puis-je trouver les éléments d’une liste qui ne se trouvent pas dans une autre ? — Utilisez
differenceLists(list1, list2), qui renvoie les éléments delist1non présents danslist2. - Q : Quelle est la différence entre
intersectetdifferenceLists? —intersectrenvoie les éléments communs aux deux listes ;differenceListsrenvoie les éléments de la première liste qui sont absents de la deuxième liste.