# Valider des données à l'aide de règles de qualité de données et filtrer les données invalides

Note InformationsAvertissement : À partir du Studio Talend 8.0 R2025-06, le composant tDataQualityRules est remplacé par le tDQRules. Ce composant vous permet d'utiliser les règles depuis :

* Qlik Talend Data Integration.
* Talend Cloud Data Inventory.
* Talend Cloud Data Stewardship.
* la version hybride 8.0 R2022-07 ou supérieure de Talend Data Stewardship.

Pour les Jobs Apache Spark, vous pouvez utiliser le tDataQualityRules uniquement avec les applications Talend.

Le Job dans ce scénario utilise :

* Le composant tDataQualityRules, avant la version 8.0 R2025-06 du Studio Talend, afin de valider des données à l'aide d'une [règle de qualité de données](https://help.qlik.com/talend/r/fr-FR/Cloud/data-stewardship-user-guide/tds-dqr) depuis Talend Cloud Data Stewardship.
* Le composant tFilterRow pour filtrer les données non exécutables.

Le Job utilise la règle de qualité de données suivante : ![Configuration de la règle de qualité de données.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-tds-rule.png)

Vous pouvez télécharger et extraire le fichier suivant : [scholarship_programs.zip](https://help.qlik.com/talend/fr-FR/components/8.0/Content/Resources/attachments/scholarship_programs.zip).

## Configurer votre Job

### Procédure

1. Déposez les composants suivants de la **Palette** dans l'espace de modélisation graphique : un tFixedFlowInput, un tDataQualityRules, un tExtractJSONFields, un tFilterRow et trois tLogRow.
2. Reliez les composants suivants à l'aide de liens Main :
   * le tFixedFlowInput au tDataQualityRules,
   * le tDataQualityRules à l'un des tLogRow,
   * le tExtractJSONFields au tFilterRow,
3. Avec un lien Filter, reliez le tFilterRow à un autre tLogRow.
4. Reliez les composants suivants à l'aide de liens Reject :
   * le tDataQualityRules au tExtractJSONFields,
   * le tFilterRow au dernier tLogRow.

   ![Job comprenant sept composants et validant les données à l'aide du composant tDataQualityRules.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdataqualityrules-job.png)

   Note InformationsConseil : Si vous souhaitez récupérer uniquement les données valides, reliez le tDataQualityRules à un seul tLogRow, à l'aide d'un lien Main. Vous n'avez pas besoin des composants tExtractJSONFields et tFilterRow.

## Configurer le composant tFixedFlowInput

### Procédure

1. Double-cliquez sur le tFixedFlowInput pour ouvrir sa vue Basic settings.
2. Sélectionnez Built-In dans la liste Schema et cliquez sur […] près de Edit schema.
3. Pour ajouter des colonnes, cliquez sur l'![icône Add (Ajouter)](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/add.svg), puis sur OK.

   ![Schéma du composant tFixedFlowInput.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-input.png)
4. Sélectionnez l'option Use Inline Content (delimited file).
5. Saisissez vos données. Vous pouvez utiliser les données du jeu de données dans le fichier suivant : [scholarship_programs.zip](https://help.qlik.com/talend/fr-FR/components/8.0/Content/Resources/attachments/scholarship_programs.zip).

   ![Configuration du composant tFixedFlowInput.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-input-final.png)

## Configurer le composant tDataQualityRules

### Avant de commencer

* Vous avez créé au moins une [règle de qualité de données](https://help.qlik.com/talend/r/fr-FR/Cloud/data-stewardship-user-guide/tds-dqr) dans Talend Cloud Data Stewardship.
* Vous avez un jeton d'accès personnel. Pour en générer un, consultez [https://help.talend.com/r/fr-FR/Cloud/management-console-user-guide/cloud-access-token](https://help.qlik.com/talend/r/fr-FR/Cloud/management-console-user-guide/cloud-access-token).

  Note InformationsConseil : Talend Cloud Data Stewardship est utilisé dans cet exemple. Vous pouvez également saisir l'URL de la version hybride de Talend Data Stewardship 8.0 R2022-07 ou une version supérieure et Talend Cloud Data Inventory.

### Pourquoi et quand exécuter cette tâche

Vous avez besoin de l'autorisation Rules - View (Règles - Visualisation) pour récupérer les règles. Pour plus d'informations, consultez les [Rôles utilisateur·trices prédéfinis](https://help.qlik.com/talend/r/fr-FR/Cloud/management-console-user-guide/tmc-predefined-roles) relatifs à l'application que vous utilisez.

### Procédure

1. Sélectionnez Built-In dans la liste Output schema.
2. Cliquez sur le bouton Sync columns afin de récupérer le schéma du composant d'entrée.
3. Dans la liste déroulante Application, sélectionnez Data Stewardship.
4. Saisissez l'URL de Talend Cloud Data Stewardship : "https://tds.us.cloud.talend.com/rulerepository/api/v1".

   L'URL dépend de votre région Cloud : Consultez [Accéder aux applications Talend Cloud](https://help.qlik.com/talend/fr-FR/installation-guide-windows/Cloud/talend-cloud-application-url).
5. Pour saisir votre jeton d'accès personnel, cliquez sur le bouton [...].
6. Pour récupérer les règles de qualité de données, cliquez sur Refresh.

   ![Bouton Refresh (Actualiser) près du champ DQ rule library timestamp (Horodatage de la bibliothèque de règles DQ).](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-timestamp.png)

   Lorsque vous cliquez sur Refresh (Actualiser), un fichier JAR contenant la définition de la règle est créé dans :
   ```
   studio-path\configuration\.m2\repository\org\talend\libraries\rule-number
   ```

   Si vous mettez à jour les règles de qualité de données dans Talend Cloud Data Stewardship, cliquez sur Refresh pour récupérer la dernière version.
7. Cliquez sur le bouton [...] près de Configure DQ rules.
8. Sélectionnez la règle et associez les variables de règles aux colonnes d'entrée.

   ![Fenêtre de configuration pour associer les variables.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-config.png)

   Vous pouvez associer les types de données dans le Studio Talend à certains types de données dans Talend Cloud Data Stewardship. Consultez [Associer des types de données](https://help.qlik.com/talend/fr-FR/components/8.0/validation/tdqrules "Ce composant valide des données à l'aide de règles de qualité de données en connectant le Studio Talend à Qlik Talend Data Integration ou à une application Talend.").

   Si aucune règle ou colonne d'entrée n'est disponible, vérifiez que :
   * Les règles de qualité de données ont été récupérées dans DQ rule library timestamp (Horodatage des bibliothèques de règles DQ).
   * Le schéma d'entrée est correct.
9. Cliquez sur OK pour valider la configuration.

## Configurer le tExtractJSONFields

### Pourquoi et quand exécuter cette tâche

Le tExtractJSONFields vous permet d'obtenir des données plus lisibles, afin de les filtrer plus facilement via un composant tFilterRow.

### Procédure

1. Sélectionnez Built-In dans les listes Property Type et Schema.
2. Cliquez sur le bouton [...] à côté du champ Edit Schema.

   La colonne INVALID\_STATUS a été ajoutée au schéma d'entrée. Vous pouvez renommer la colonne dans le schéma de sortie. ![Exemple de schémas d'entrée et de sortie.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-textract-schema.png)
3. Sélectionnez JsonPath et, dans la liste API version, sélectionnez 2.1.0.
4. Saisissez le caractère de remplacement \* dans le champ Loop Jsonpath query pour sélectionner tous les éléments.
5. Sélectionnez INVALID\_STATUS dans la liste déroulante JSON Field.
6. Définissez la requête JSON dans la table Mapping.

   Les colonnes du schéma sont listées dans le champ Column de la table Mapping.
7. Dans la colonne Json query de la table Mapping, saisissez executionResults[0].status pour Status.

   executionResults[0].status est le chemin d'accès au statut status où [0] représente les détails d'exécution de la première règle. Si vous avez besoin des détails d'exécution de la deuxième règle, utilisez [1], si vous avez besoin des détails de la troisième règle, utilisez [2], etc. Cela simplifie le filtrage des données en utilisant le composant tFilterRow.
   ### Exemple

   Le statut INVALID\_STATUS est : [{"executionResults":[{"ruleName":"ScholarshipProgram\_Else","inputColumn":["EffectiveOn","Code","Program"],"status":"Invalid"}]}].

   Le tExtractJSONFields le transforme en Invalid.

   ![Configuration du composant tExtractJSONFields.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tdqrules-textract.png)

## Configurer le tFilterRow

### Pourquoi et quand exécuter cette tâche

Le composant tFilterRow de ce scénario crée deux catégories :

* NE : La règle ne peut être exécutée sur les données.
* Invalide : Les données sont conformes à la condition mais pas à l'expression de validation.

### Procédure

1. Dans la table Conditions, cliquez sur l'![icône Add (Ajouter)](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/add.svg).
2. Dans InputColumn, sélectionnez Status.
3. Dans Value, saisissez "NE".

   Note InformationsA faire : Si vous ajoutez plusieurs colonnes, définissez l'opérateur logique au-dessus de la table : And/Or. Par défaut, And est sélectionné.

## Configurer les composants tLogRow

### Procédure

1. Double-cliquez sur les composants tLogRow afin d'ouvrir leur vue Basic settings.
2. Dans la liste Schema, sélectionnez Built-in puis cliquez sur Sync columns.
3. Dans la zone Mode, sélectionnez Table (print values in cells of a table).

   ![Configuration des composants tLogRow.](https://help.qlik.com/talend/fr-FR/components/8.0/Resources/images/tLogRow_BasicSettings.png)

## Exécuter le Job

### Procédure

Sauvegardez votre Job et appuyez sur **F6** pour l'exécuter.

### Résultats

Le tLogRow ayant le lien Main retourne les étudiants pour lesquels :

* le code de statut est 2632 et la date est 2021-09-01,

  OU

* le code de statut n'est pas 2632 et le programme se termine par 10AB ou 10AC.

```
.-------+----+-------+-----------+-----------.
|                    main                    |
|=------+----+-------+-----------+----------=|
|ID     |Code|Program|EffectiveOn|Nationality|
|=------+----+-------+-----------+----------=|
|1002145|2632|2310AB |2021-09-01 |Canada     |
|1002146|1132|3610AC |2021-10-01 |US         |
|1002149|2632|3711AB |2021-09-01 |US         |
|1002150|2632|2310AB |2021-09-01 |US         |
|1002151|2632|3711AB |2021-09-01 |US         |
|1002152|2632|2310AB |2021-09-01 |US         |
|1002153|2632|3711AB |2021-09-01 |US         |
|1002155|2675|3610AC |2021-10-01 |US         |
|1002156|2675|2310AB |2021-10-01 |Canada     |
|1002158|2632|2310AB |2021-09-01 |US         |
|1002159|1132|2310AB |2021-10-01 |US         |
|1002162|2675|2310AB |2021-10-01 |US         |
|1002163|2632|3610AC |2021-09-01 |US         |
'-------+----+-------+-----------+-----------'
```

Les données invalides sont filtrées dans deux tables.

```
.-------+----+-------+-----------+-----------+------.
|                        NE                         |
|=------+----+-------+-----------+-----------+-----=|
|ID     |Code|Program|EffectiveOn|Nationality|Status|
|=------+----+-------+-----------+-----------+-----=|
|1002161|abcd|3611AC |2021-09-01 |US         |NE    |
'-------+----+-------+-----------+-----------+------'
```

Le statut NE signifie que la règle ne peut être exécutée sur les données. Dans ce scénario, le code de statut est abcd mais la condition de règle est is equal to 2632.

Les autres données invalides signifient :

* le code de statut est 2632 mais la date n'est pas 2021-09-01,

  ou

* le code de statut n'est pas 2632 et le programme ne se termine pas par 10AB ou 10AC.

  ```
  .-------+----+-------+-----------+-----------+-------+----------------------------------.
  |                                     OtherInvalid                                      |
  |=------+----+-------+-----------+-----------+-------+---------------------------------=|
  |ID     |Code|Program|EffectiveOn|Nationality|Status |errorMessage                      |
  |=------+----+-------+-----------+-----------+-------+---------------------------------=|
  |1002147|2632|3610AC |2022-01-01 |Canada     |Invalid|Status.compareTo("NE") == 0 failed|
  |1002148|2632|2310AB |2022-01-01 |Canada     |Invalid|Status.compareTo("NE") == 0 failed|
  |1002154|2632|3610AC |2022-01-01 |Canada     |Invalid|Status.compareTo("NE") == 0 failed|
  |1002157|2632|3610AC |2022-01-01 |Canada     |Invalid|Status.compareTo("NE") == 0 failed|
  |1002160|2632|2310AB |2022-01-01 |Canada     |Invalid|Status.compareTo("NE") == 0 failed|
  |1002164|2675|3611AC |2021-09-01 |US         |Invalid|Status.compareTo("NE") == 0 failed|
  '-------+----+-------+-----------+-----------+-------+----------------------------------'  
  ```