# Fonctions de transformation prises en charge - Nettoyage des données

Dans la formule de saisie, vous pouvez écrire une expression basique ou complexe pour transformer les données.\
\
Les expressions sont composées soit d'une valeur, d'une fonction, d'une opération, soit d'une autre expression entre parenthèses. Voir ci-dessous la description de chacune d'elles.

{% hint style="info" %}
Les fonctions peuvent être imbriquées, ex : `SHA256(LOWER(user.email))`
{% endhint %}

## Fonctions disponibles

| NOM DE LA FONCTION                                                           | CE QU'ELLE FAIT                                                                                                                                                                                                                                                                     | Exemple                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EXTRACT(text, delimiter, position)                                           | Extrait du texte donné la sous-chaîne à la position indiquée, après séparation par le délimiteur donné.                                                                                                                                                                             | <p><code>EXTRACT("a-b-c", "-", 1)</code><br><em>renvoie <code>"b"</code></em></p><p><em><code>EXTRACT("a-b-c", "-", 0)</code></em><br><em>renvoie <code>"a"</code></em></p>                                                                                                                                                                 |
| SUBSTITUTE(text, search\_text,substitute\_text)                              | Substitue new\_text à la place de old\_text dans une chaîne de texte. Utilisez SUBSTITUTE lorsque vous souhaitez remplacer un texte spécifique dans une chaîne de texte.                                                                                                            | `SUBSTITUTE("The-Clone-Wars", "-", ".")`renvoie `"The.Clone.Wars"`                                                                                                                                                                                                                                                                          |
| REPLACE(sourceStr, pattern, replaceStr)                                      | Remplace chaque correspondance de pattern (une expression regex) dans sourceStr.                                                                                                                                                                                                    | <p><code>REPLACE("The Clone Wars", "\s", ".")</code><br>renvoie <code>"The.Clone.Wars"</code><br></p><p><code>REPLACE('0123456789', '(\[0-9]{2})', '$1-')</code><br>renvoie</p><p><code>01-23-45-67-89</code></p>                                                                                                                           |
| SHA256(stringToHash)                                                         | Renvoie un hash SHA256 de la chaîne donnée                                                                                                                                                                                                                                          | <p><code>SHA256("test")</code><br>renvoie <code>"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"</code></p>                                                                                                                                                                                                               |
| MD5(stringToHash)                                                            | Renvoie un hash MD5 de la chaîne donnée                                                                                                                                                                                                                                             | <p><code>MD5("test")</code><br>renvoie<br><code>"098f6bcd4621d373cade4e832627b4f6"</code></p>                                                                                                                                                                                                                                               |
| COALESCE(value1, value2, ...)                                                | Renvoie la première valeur de la liste qui n’est pas vide                                                                                                                                                                                                                           | <p><code>COALESCE("123", "hello")</code><br>renvoie<br><code>"123"</code></p>                                                                                                                                                                                                                                                               |
| CONCAT(string1, string2, ...)                                                | <p>Concatène plusieurs valeurs en une seule propriété. Des séparateurs peuvent être spécifiés :<br>CONCAT(prop1, "</p>                                                                                                                                                              | ", prop2, "                                                                                                                                                                                                                                                                                                                                 |
| TRIM(text)                                                                   | Supprime tous les espaces, retours à la ligne et tabulations au début et à la fin d'un texte.                                                                                                                                                                                       | <p><code>TRIM(" \Hello World \n")</code><br>renvoie<br><code>"Hello World"</code></p>                                                                                                                                                                                                                                                       |
| SELECT(sourceStr, pattern, \<position>)                                      | <p>Renvoie la première correspondance du pattern (une expression regex) dans sourceStr.<br>Si le troisième paramètre est défini, il renverra le groupe correspondant à l'intérieur de la correspondance.</p>                                                                        | <p><code>SELECT("From A to Z alphabet", 'A(.\*?)Z")</code><br>renvoie<br><code>"A to Z"</code></p>                                                                                                                                                                                                                                          |
| LOWER(text)                                                                  | Convertit toutes les lettres majuscules d'une chaîne de texte en minuscules                                                                                                                                                                                                         | <p><code>LOWER("ABC")</code><br>renvoie<br><code>"abc"</code></p>                                                                                                                                                                                                                                                                           |
| UPPER(text)                                                                  | Convertit toutes les lettres minuscules d'une chaîne de texte en majuscules                                                                                                                                                                                                         | <p><code>UPPER("abc")</code><br>renvoie<br><code>"ABC"</code></p>                                                                                                                                                                                                                                                                           |
| NUMBER(value1)                                                               | Convertit une chaîne en nombre                                                                                                                                                                                                                                                      | <p><code>NUMBER("123.456")</code> renvoie<br><code>123.456</code></p><p><code>NUMBER("not a number")</code><br>renvoie<br><code>null</code></p>                                                                                                                                                                                             |
| STRING(value)                                                                | Convertit un nombre ou n'importe quelle valeur en chaîne                                                                                                                                                                                                                            | <p><code>STRING(123.456)</code> renvoie<br><code>"123.456"</code></p><p><code>STRING(true)</code><br>renvoie<br><code>"true"</code></p><p><code>STRING(null)</code><br>renvoie<br><code>""</code></p>                                                                                                                                       |
| ENCODE\_BASE64(value1)                                                       | Encode une chaîne en base64                                                                                                                                                                                                                                                         | <p><code>ENCODE\_BASE64("hello")</code><br>renvoie<br><code>"aGVsbG8="</code></p>                                                                                                                                                                                                                                                           |
| DECODE\_BASE64(value1)                                                       | Décode une chaîne depuis base64                                                                                                                                                                                                                                                     | <p><code>DECODE\_BASE64("aGVsbG8=")</code><br>renvoie<br><code>"hello"</code></p>                                                                                                                                                                                                                                                           |
| TIMESTAMP()                                                                  | Renvoie le timestamp de la date actuelle                                                                                                                                                                                                                                            | `TIMESTAMP ()` renvoie une valeur comme `1674832519845` (change avec l'heure actuelle)                                                                                                                                                                                                                                                      |
| LEFT(text, length)                                                           | Renvoie le nombre demandé de caractères depuis le début d'une chaîne ou d'un nombre.                                                                                                                                                                                                | <p><code>LEFT("Hello world", 3)</code><br>renvoie<br><code>"Hel"</code></p>                                                                                                                                                                                                                                                                 |
| RIGHT(text, length)                                                          | Renvoie le nombre demandé de caractères depuis la fin d'une chaîne ou d'un nombre.                                                                                                                                                                                                  | <p><code>RIGHT("Hello world", 2)</code><br>renvoie<br><code>"ld"</code></p>                                                                                                                                                                                                                                                                 |
| CHAR(text, position)\*                                                       | Renvoie le caractère à la position spécifiée (début à 0).                                                                                                                                                                                                                           | <p><code>CHAR("Hello world", 5)</code><br>renvoie<br><code>"o"</code></p>                                                                                                                                                                                                                                                                   |
| IF(condition,resultIfTrue,resultIfFalse)                                     | Renvoie le deuxième argument si le premier argument est vrai, sinon le troisième argument                                                                                                                                                                                           | `IF(city="Paris", ListA, ListB)`                                                                                                                                                                                                                                                                                                            |
| SWITCH(expression, value1, result1, \[value2, result2], ..., \[default])     | Évalue l'expression par rapport à une liste de valeurs et renvoie le résultat correspondant à la première correspondance. Si aucune correspondance n'est trouvée, renvoie la valeur par défaut facultative, ou null si aucune valeur par défaut n'est fournie.                      | <p><code>SWITCH(country, "FR", "France", "US", "United States", "Unknown")</code><br>renvoie <code>"France"</code> si country est <code>"FR"</code>, <code>"Unknown"</code> si aucune correspondance</p><p><code>SWITCH(LOWER(status), "active", 1, "inactive", 0)</code><br>renvoie <code>1</code> si status est <code>"Active"</code></p> |
| ISEMPTY(value)                                                               | Indique si la valeur est vide ou non                                                                                                                                                                                                                                                | <p>ISEMPTY("abc")<br>renvoie<br>false</p>                                                                                                                                                                                                                                                                                                   |
| SIZE(array or object)                                                        | Renvoie le nombre d'éléments dans la liste                                                                                                                                                                                                                                          | <p><code>SIZE(items)</code><br>renvoie le nombre d'éléments</p>                                                                                                                                                                                                                                                                             |
| LENGTH(string)                                                               | Renvoie le nombre de caractères dans la chaîne                                                                                                                                                                                                                                      | <p><code>LENGTH("abc")</code><br>renvoie<br><code>3</code></p>                                                                                                                                                                                                                                                                              |
| SUBSTRING(text, pos1, pos2)                                                  | Renvoie une nouvelle chaîne composée des caractères entre les deux positions définies par pos1 et pos2. Les positions commencent à 0. Si un nombre négatif est donné, les positions commencent à partir de la fin de la chaîne. Si pos2 est omis, la fin de la chaîne est utilisée. | <p><code>SUBSTRING("hello beautiful world", 6, 14)</code><br>renvoie<br><code>"beautiful"</code></p>                                                                                                                                                                                                                                        |
| JSON\_PARSE(string)                                                          | <p>Analyse une chaîne JSON (fonctionne pour les objets et les tableaux).<br>Utile pour créer une propriété d'objet ou de tableau qui contiendra toutes les propriétés ou éléments présents dans un JSON sérialisé que vous pourriez avoir dans une autre propriété d'événement</p>  | <p><code>JSON\_PARSE('{"optin":1,"message":"ok"}')</code><br>renvoie un objet avec une <code>optin</code> clé égale à <code>1</code> et <code>message</code> clé égale à <code>"ok"</code></p><p><code>JSON\_PARSE('\["morgan","justine"]')</code><br>renvoie un tableau contenant <code>"morgan"</code> et <code>"justine"</code></p>      |
| JSON\_STRINGIFY(value, defaultValue)                                         | <p>Convertit une valeur en JSON.<br>(Optionnel) Vous pouvez spécifier une <code>defaultValue</code> en cas de <code>value</code> est <code>undefined</code></p>                                                                                                                     | <p><code>JSON\_STRINGIFY({"message":"ok"})</code><br>renvoie une chaîne égale à <code>'{"message":"ok"}'</code></p>                                                                                                                                                                                                                         |
| VALUE\_FROM\_JSON(string, path)                                              | Extrait une valeur d'une chaîne de données au format JSON                                                                                                                                                                                                                           | <p><code>VALUE\_FROM\_JSON('{"info":{"code":42},"message":"ok"}', 'info.code')</code></p><p>renvoie</p><p><code>42</code></p>                                                                                                                                                                                                               |
| GET(property name)                                                           | <p>GET(name) renvoie la valeur de la propriété d'événement donnée.<br>Utile pour les noms de propriété qui contiennent un caractère spécial comme "-"</p>                                                                                                                           | <p><code>GET("droid-type")</code></p><p>renvoie</p><p><code>"r2d2"</code><br><br><code>GET("invalidProperty")</code><br>renvoie<br><code>null</code></p>                                                                                                                                                                                    |
| GETHEADER(name)                                                              | GETHEADER(name) renvoie la valeur de l'en-tête http donné                                                                                                                                                                                                                           | <p><code>GETHEADER("Accept-Language")</code></p><p>renvoie</p><p><code>"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"</code></p>                                                                                                                                                                                                                     |
| GETCOOKIE(name)                                                              | GETCOOKIE(name) renvoie la valeur du cookie http donné                                                                                                                                                                                                                              | <p><code>GETCOOKIE("cart")</code></p><p>renvoie</p><p><code>"empty"</code></p>                                                                                                                                                                                                                                                              |
| DATEPARSE(str, format)                                                       | Prend une date dans un format spécifique et la convertit en une date correcte                                                                                                                                                                                                       | <p><code>DATEPARSE('2023-05-23', 'yyyy-MM-dd')</code> renvoie<br><code>2023-05-23T00:00:00.000+01:00</code><br><a href="/pages/11fe8b1fe6f320e3b134171a1ed813dfb3b2e657">voir plus d'informations sur le format</a></p>                                                                                                                     |
| DATEFORMAT(date, format)                                                     | Prend une date au format ISO-8601 ou timestamp et la convertit au format spécifié                                                                                                                                                                                                   | <p><code>DATEFORMAT('2023-01-31T23:59:00.000+01:00', 'yyyy-MM-dd HH:mm')</code> renvoie<br><code>2023-01-31 23:59</code><br><a href="/pages/11fe8b1fe6f320e3b134171a1ed813dfb3b2e657">voir plus d'informations sur le format</a></p>                                                                                                        |
| DATEADD(date, interval, unit)                                                | Ajoute l'intervalle en tant qu'unité (années, mois, semaines, jours, heures, minutes, secondes)                                                                                                                                                                                     | <p><code>DATEADD('2023-01-23T00:05:00.000+01:00', 3, 'days')</code><br>renvoie<br><code>2023-01-26T00:05:00.000+01:00</code></p>                                                                                                                                                                                                            |
| DATESUB(date, interval, unit)                                                | Soustrait l'intervalle en tant qu'unité (années, mois, semaines, jours, heures, minutes, secondes)                                                                                                                                                                                  | <p><code>DATESUB('2023-01-23T00:05:00.000+01:00', 3, 'days')</code><br>renvoie<br><code>2023-01-20T00:05:00.000+01:00</code></p>                                                                                                                                                                                                            |
| DATEDIFF(date1, date2, unit)                                                 | Renvoie l'intervalle entre deux dates dans l'unité spécifiée                                                                                                                                                                                                                        | <p><code>DATEDIFF('2023-01-20T00:05:00.000+01:00', '2023-01-23T00:05:00.000+01:00', 'days')</code><br>renvoie<br><code>0</code></p>                                                                                                                                                                                                         |
| AGE(date, unit)                                                              | Renvoie le temps écoulé depuis la date donnée dans l'unité spécifiée (si l'unité n'est pas précisée, les années sont utilisées par défaut)                                                                                                                                          | <p><code>AGE('2022-01-20T00:05:00.000+01:00')</code><br>renvoie<br><code>1</code> en 2023</p>                                                                                                                                                                                                                                               |
| YEAR(date), MONTH(date), DAY(date), HOUR(date), MINUTES(date), SECONDS(date) | Renvoie l'unité de date spécifiée                                                                                                                                                                                                                                                   | <p><code>YEAR('2023-01-20T00:05:00.000+01:00')</code><br>renvoie<br><code>2023</code>, <code>MONTH</code> pour la même date renvoie <code>1</code>, etc</p>                                                                                                                                                                                 |
| TIMEZONE(date)                                                               | Renvoie le fuseau horaire en UTC                                                                                                                                                                                                                                                    | <p><code>TIMEZONE('2023-01-20T00:05:00.000+01:00')</code><br>renvoie<br><code>UTC+1</code></p>                                                                                                                                                                                                                                              |
| TODAY()                                                                      | Renvoie la date actuelle au format ISO-8601                                                                                                                                                                                                                                         | `TODAY()` peut renvoyer `2023-01-20T00:05:00.000+01:00`, en supposant que la date actuelle est le 20 janvier 2023                                                                                                                                                                                                                           |

## Opérateurs

| **Opérateur**                           | **Description**                                                                                                                                                                                                                                         | **Exemple**                   |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| =, ==                                   | <p>Renvoie true si la partie gauche est égale à la partie droite.<br>Si l'une des parties est un tableau, vérifie si certaines valeurs sont égales entre les deux parties.</p>                                                                          | `gender = "F"`                |
| !=, <>                                  | Inverse de ce qui précède                                                                                                                                                                                                                               | `gender != "F"`               |
| AND ou &&                               | Effectue un AND booléen entre les deux parties                                                                                                                                                                                                          | `age >18 AND gender = "M"`    |
| OR ou \|\|                              | Effectue un OR booléen entre les deux parties                                                                                                                                                                                                           | `age >18 OR gender = "M"`     |
| NOT(expression)                         | Effectue un NOT booléen sur l'expression                                                                                                                                                                                                                | `NOT(age>18)`                 |
| IN()                                    | Renvoie true si la partie gauche est égale à au moins une valeur de la partie droite.                                                                                                                                                                   | `currency IN("€", "$", "£")`  |
| !IN                                     | Renvoie true si aucune des valeurs de la partie droite n'est égale à la valeur de la partie gauche.                                                                                                                                                     | `currency !IN("€", "$", "£")` |
| <, >, <=, ou >=                         | <p>Compare deux valeurs<br>Si l'une des valeurs est un tableau, vérifie qu'au moins une des valeurs correspond.</p>                                                                                                                                     | `age > 18`                    |
| BETWEEN()                               | Vérifie si la valeur de gauche est comprise entre les deux valeurs passées en arguments. Si la valeur de gauche est un tableau, vérifie qu'au moins une des valeurs correspond.                                                                         | `age BETWEEN(7, 80)`          |
| EXISTS()                                | Vérifie si la propriété existe                                                                                                                                                                                                                          | `EXISTS(my_property)`         |
| \~ ou !\~                               | <p>Vérifie si la valeur de gauche correspond à la regex dans la valeur de droite (ou ne correspond pas si !\~). Le langage regex est celui de JavaScript.<br>Si la valeur de gauche est un tableau, vérifie qu'au moins une des valeurs correspond.</p> | `email ~ "@example.com"`      |
| STARTSWITH(), ENDSWITH(), or CONTAINS() | <p>Vérifie si la valeur de gauche commence par, se termine par, ou contient la valeur de droite.<br>Si la valeur de gauche est un tableau, vérifie qu'au moins une des valeurs correspond.</p>                                                          | `lastname STARTSWITH("DE")`   |
| \* ou /                                 | Multiplication ou division                                                                                                                                                                                                                              | `3*5`                         |
| + ou -                                  | Addition / concaténation ou soustraction                                                                                                                                                                                                                | `1+2`                         |

## Agrégations

| NOM DE LA FONCTION         | CE QU'ELLE FAIT                                                                                                             | Exemple                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AVERAGE(array, expression) | Calcule la moyenne des valeurs dans un tableau ou à partir d'une expression. Le paramètre expression est facultatif.        | <p><code>AVERAGE(\[0, null, 10])</code><br>Renvoie 5 (les valeurs null sont ignorées)</p><p><code>AVERAGE(items, price)</code><br>Renvoie la moyenne du prix de chaque élément (les valeurs null sont ignorées)</p><p><code>AVERAGE(items, EXTRACT(price, "€", 0))</code><br>Extrait la valeur numérique avant € et calcule la moyenne</p><p><code>AVERAGE(items, IF(returned\_quantity = 0, NUMBER(EXTRACT(product.price, "€",0)), 0))</code><br>Prix moyen uniquement pour les éléments non retournés</p> |
| MIN(array, expression)     | Renvoie la valeur minimale d'un tableau ou d'une expression. Le paramètre expression est facultatif.                        | <p><code>MIN(\[null, 15, 8])</code><br>Renvoie 8 (ignore null)</p><p><code>MIN(orders, DATEPARSE(order\_date, "yyyy-MM-dd"))</code><br>Trouver la date de commande la plus ancienne</p><p><code>MIN(items, IF(status = "active", price, 999999))</code><br>Prix minimum parmi les éléments actifs uniquement</p>                                                                                                                                                                                            |
| MAX(array, expression)     | Renvoie la valeur maximale d'un tableau ou d'une expression. Le paramètre expression est facultatif.                        | <p><code>MAX(\[null, 15, 8])</code><br>Renvoie 15 (ignore null)</p><p><code>MAX(users, AGE(birth\_date))</code><br>Trouver l'âge de l'utilisateur le plus âgé</p><p><code>MAX(transactions, IF(type = "purchase", amount, 0))</code><br>Montant d'achat maximum</p>                                                                                                                                                                                                                                         |
| SUM(array, expression)     | Calcule la somme des valeurs dans un tableau ou à partir d'une expression. Le paramètre expression est facultatif.          | <p><code>SUM(items, quantity \* NUMBER(EXTRACT(unit\_price, "$", 0)))</code><br>Calculer la valeur totale de tous les éléments</p><p><code>SUM(\[5, null, 15])</code><br>Renvoie 20 (ignore null)</p><p><code>SUM(items, IF(returned\_quantity = 0, NUMBER(EXTRACT(product.price, "€",0)), 0))</code><br>Additionne les prix uniquement pour les éléments avec quantité non retournée</p>                                                                                                                   |
| COUNT(array, expression)   | Compte le nombre de valeurs non vides dans un tableau ou à partir d'une expression. Le paramètre expression est facultatif. | <p><code>COUNT(users, IF(ISEMPTY(email), null, email))</code><br>Compte les clients avec un email non vide</p><p><code>COUNT(items, IF(status = "completed" AND amount > 100, 1, null))</code><br>Compter les éléments complétés au-dessus de 100</p>                                                                                                                                                                                                                                                       |

## Exemples

1. Scénario : créer un Flag qui montre si l'adresse principale des consommateurs se trouve en Californie\
   `IF(EXTRACT(city_state, '-', 1) == " CA", "TRUE", "FALSE")`
2. Scénario : définir une valeur avec plusieurs conditions. La valeur est égale à "12345" pour le pays FR et l'environnement prod, sinon elle est égale à 98888 pour le pays DE et l'environnement dev : \\

{% code overflow="wrap" %}

````
```xquery
IF(country = "FR" AND environment_work = "prod", "12345", IF(country = "DE" AND environment_work = "dev", "98888")
```
````

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.commandersact.com/fr/fonctionnalites/data-quality/data-cleansing/supported-transformation-functions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
