# Fonctions de génération de données

Vous pouvez générer des données de sortie différentes des données d'entrée.

| Function (Fonction) | Génération aléatoire | Génération cohérente | Génération bijective | Validation de données d'entrée |
| --- | --- | --- | --- | --- |
| Générer à partir d'un modèle | Oui | No (Non) | Non | Non |
| Générer un UUID | Oui | No (Non) | Non | Non |
| Generate sequence | Oui | No (Non) | Non | Non |
| Generate from file/list | Oui | Oui | No (Non) | Non |

## Générer à partir d'un modèle

Cette fonction génère une valeur basée sur un modèle défini par l'utilisateur ou l'utilisatrice. Cette fonction ne s'applique qu'au type String.

| Option | Description |
| --- | --- |
| Paramètres supplémentaires | Cette fonction nécessite un paramètre supplémentaire.<br><br>Le paramètre supplémentaire est un modèle suivant ces règles :<br><br><ul> <li> <span>A</span> est remplacé par une lettre capitale latine aléatoire.</li> <li> <span>a</span> est remplacé par une lettre minuscule latine aléatoire.</li> <li> <span>9</span> est remplacé par un chiffre aléatoire.</li> <li> <span>H</span> est remplacé par un caractère Hiragana aléatoire.</li> <li> <span>K</span> est remplacé par un caractère Katakana pleine chasse aléatoire.</li> <li> <span>k</span> est remplacé par un caractère Katakana demi-chasse aléatoire.</li> <li> <span>C</span> est remplacé par un caractère Kanji aléatoire.</li> <li> <span>G</span> est remplacé par un caractère Hangul aléatoire.</li> </ul><br><br>Tous les autres caractères sont copiés tels quels dans la valeur générée.<br><br>Pour plus d'informations concernant les types de caractères supportés et les intervalles Unicodes associés, consultez [Fonctions de masquage de données dans les composants de masquage](https://help.qlik.com/talend/fr-FR/components/8.0/data-privacy/data-masking-functions-in-masking-components).<br><br>Vous pouvez également utiliser des références arrière numérotées (\\&lt;number&gt;) à l'aide de la syntaxe suivante : &lt;pattern&gt;\\&lt;number&gt;,&lt;group1&gt;,&lt;groupN&gt;.<br><br><ul> <li> <kbd>&lt;pattern&gt;</kbd> correspond au modèle utilisé pour générer la valeur en sortie.</li> <li> <kbd>\\&amp;lt;number&gt;</kbd> est une référence arrière numérotée. <kbd>&amp;lt;number&gt;</kbd> identifie la position du groupe placée après le premier caractère &amp;quot;<kbd>,</kbd>&amp;quot;.</li> <li> <kbd>&lt;group1&gt;,&lt;groupN&gt;</kbd> sont des groupes de caractères séparés par des virgules. Chaque groupe est traité comme une seule sous-chaîne. Si une référence arrière fait référence à un groupe, celui-ci est ajouté tel quel dans la valeur générée.</li> </ul><br><br>Si vous souhaitez copier l'un des caractères utilisés dans les modèles (A, a, 9, H, h, K, k, C, G) tel quel dans la valeur générée, utilisez une référence arrière. |

Cette fonction ne fonctionne pas correctement si une virgule est utilisée dans le modèle.

Dans l'exemple suivant :

* Les caractères a sont remplacés par des lettres aléatoires latines en minuscule.
* Les caractères s ne sont pas masqués dans la sortie générée.
* \\2 fait référence au groupe placé après le deuxième caractère ",", @talend.com.

| Valeur d'entrée | Paramètre supplémentaire | Exemple de valeur masquée |
| --- | --- | --- |
| A26 | "aaaass\\2,@gmail.com,@talend.com" | hjdfss@talend.com |

Dans l'exemple suivant :

* \\3 fait référence au groupe placé après le troisième caractère ",", a.
* Les caractères 9 sont masqués par des chiffres aléatoires.

| Valeur d'entrée | Paramètre supplémentaire | Exemple de valeur masquée |
| --- | --- | --- |
| A26 | "\\39999,D,Z,a" | a4825 |

## Generate UUID

Cette fonction masque la valeur d'entrée par un identifiant unique universel généré aléatoirement (UUID).

Cette fonction utilise la méthode UUID.randomUUID() fournie par Java. Cette méthode Java n'utilise pas de graine. Si vous exécutez ce Job deux fois, la fonction génère ainsi des UUID différents.

Cette fonction n'est appliquée qu'aux types String.

Cette fonction ne nécessite aucun paramètre supplémentaire.

Dans l'exemple suivant, la valeur masquée est un UUID généré aléatoirement.

| Valeur d'entrée | Exemple de valeur masquée |
| --- | --- |
| A26 | 28e92000-aafa-4ec3-bd56-240f192a4a8c |

## Generate sequence

Cette fonction retourne le paramètre supplémentaire et, pour chaque ligne, ce nombre sera augmenté de 1.

Cette fonction peut être appliquée à tous les types de données sauf les Dates (Integer, Long, Strings, etc.).

Note InformationsRemarque : Cette fonction n'est pas compatible avec la version Spark de ce composant.

| Option | Description |
| --- | --- |
| Extra parameter | Cette fonction nécessite un paramètre supplémentaire.<br><br>Le paramètre supplémentaire doit être un nombre.<br><br>Si le paramètre supplémentaire n'est pas un nombre, il est configuré à 0. |

Dans l'exemple suivant, la séquence générée commence par le numéro configuré comme paramètre supplémentaire.

| Valeurs d'entrée | Paramètres supplémentaires | Exemples de valeurs masquées |
| --- | --- | --- |
| 21<br><br>A48 | "0" | 0<br><br>1 |

## Generate from file/list

Cette fonction remplace aléatoirement la valeur d'entrée par une des valeurs définies par l'utilisateur ou l'utilisatrice.

Cette fonction s'applique aux types String ou de données numériques.

| Option | Description |
| --- | --- |
| Method | La méthode Randomly sélectionne aléatoirement une valeur de la liste (ou un fichier). Deux valeurs d'entrée similaires peuvent ainsi être masquées par différentes valeurs de sortie.<br><br>La méthode Consistently s'assure que deux valeurs d'entrée similaires sont masquées par la même valeur de sortie.<br><br>Lorsque vous utilisez l'option Consistently, la probabilité de générer des doublons peut être calculée à l'aide des formules suivantes :<br><br><ul> <li>P = 1 if K &lt; N, or</li> <li>P = 1-K*(K-1)*(K-2)*…*(K-N+1) / K^N</li> </ul><br><br>où P est la probabilité de générer des doublons, N la taille des données d'entrée et K la taille de la liste d'entrée donnée en paramètre.<br><br>Via cette approche, il est possible de calculer la probabilité de trouver une paire partageant la même valeur au sein d'un groupe.<br><br>Par exemple, la probabilité que, dans un groupe de n personnes, deux personnes fêtent leur anniversaire le même jour est de :<br><br><ul> <li>2,7&nbsp;% dans un groupe de cinq personnes,</li> <li>41,1&nbsp;% dans un groupe de 20&nbsp;personnes,</li> <li>100&nbsp;% dans un groupe de 367&nbsp;personnes, puisque 366&nbsp;dates d'anniversaire sont possibles, en comptant le 29&nbsp;février.</li> </ul> |
| Extra parameter | Cette fonction nécessite un paramètre supplémentaire.<br><br>Le paramètre supplémentaire peut être :<br><br><ul> <li>une liste de deux valeurs minimum, séparées par une virgule,</li> <li>ou un chemin d'accès à un fichier contenant les valeurs.</li> </ul><br><br>Les valeurs doivent êtres stockées dans une chaîne de caractères et séparées par des virgules, par exemple "item1, item2, item3, etc.". Cette fonction utilise la méthode hashCode() fournit par Java pour choisir un élément d'une liste.<br><br>Si vous utilisez la version Apache Spark du composant, configurez le chemin d'accès au fichier comme suit :<br><br><ul> <li>En mode local&nbsp;:<ul> <li>Apache Spark 3.1 et versions précédentes&nbsp;: <span>prefix://file path</span> ou <span>file:///file path</span>.</li> <li>Apache Spark 3.2 et supérieures&nbsp;: <span>file:///file path</span>.</li> </ul></li> <li>En modes Standalone et Yarn&nbsp;: <span>prefix://file path</span>.</li> <li>Si l'index se situe dans un cluster&nbsp;: <span>hdfs://hdpnameservice1/file path</span>. </li> </ul><br><br>Les chemins vers les dossiers ne sont pas supportés.<br><br>Si le paramètre supplémentaire n'est pas défini, la fonction retourne une chaine vide ou 0. |

Dans l'exemple suivant, la valeur masquée est l'une des valeurs définie comme paramètres supplémentaires.

| Valeur d'entrée | Method | Paramètres supplémentaires | Exemples de valeurs masquées |
| --- | --- | --- | --- |
| 21 | Randomly | "help,documentation" | help |