tFilterRow - 6.1

Composants Talend Open Studio Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le composant tFilterRow filtre des lignes d'entrée en définissant une ou plusieurs condition(s) sur les colonnes sélectionnées.

Objectif

Le composant tFilterRow aide à paramétrer les filtres sur les données source.

Propriétés du tFilterRow

Famille du composant

Processing

 

Basic settings

Schema et Edit Schema

Un schéma est une description de lignes, il définit le nombre de champs (colonnes) qui sont traités et passés au composant suivant. Le schéma est soit local (Built-In), soit distant dans le Repository.

Le schéma de ce composant est en Built-in seule.

 

Logical operator used to combine conditions

Sélectionnez un opérateur logique afin de combiner des conditions simples et de combiner les résultats de filtre des deux modes si des conditions avancées ont été définies.

And : retourne la valeur booléenne true si toutes les conditions sont vraies. Sinon, retourne false. Pour chacune des deux conditions combinées à l'aide de l'opérateur logique AND, la seconde condition est évaluée uniquement si la première est true.

Or : retourne la valeur booléenne true si une condition est vraie. Sinon, retourne la valeur false. Pour les deux conditions combinées à l'aide de l'opérateur logique OR, la seconde condition est évaluée uniquement si la première est false.

 

Conditions

Cliquez sur le bouton [+] pour ajouter autant de conditions simples que nécessaire. Selon l'opérateur logique sélectionné, les conditions sont évaluées les unes après les autres en ordre séquentiel pour chaque ligne. Lorsqu'elles sont évaluées, les conditions retournent la valeur booléenne true ou false.

Input column : Sélectionnez la colonne du schéma sur laquelle exécuter la fonction.

Function : Sélectionnez une fonction dans la liste.

Operator : Sélectionnez l'opérateur permettant de relier la colonne d'entrée et la valeur.

Value : Renseignez la valeur filtrée, entre guillemets si besoin est.

 

Use advanced mode

Cochez cette case lorsque les opérations à effectuer ne peuvent aboutir via les fonctions standard proposées, par exemple différentes opérations logiques dans le même composant. Dans le champ texte, saisissez l'expression régulière comme demandé.

Si plusieurs conditions avancées sont définies, utilisez un opérateur logique entre deux conditions :

&& (opérateur logique AND) : retourne la valeur booléenne true si les deux conditions sont vraies, sinon retourne false. La seconde condition est évaluée uniquement si la première condition est true.

|| (opérateur logique OR) : retourne la valeur booléenne true si l'une des conditions est vraie, sinon, retourne false. La seconde condition est évaluée uniquement si la première est false.

Advanced settings

tStatCatcher Statistics

Cochez cette case pour collecter les données de log au niveau du composant.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

NB_LINE : nombre de lignes lues par un composant d'entrée ou passées à un composant de sortie. Cette variable est une variable After et retourne un entier.

NB_LINE_OK : nombre de lignes correspondant au filtre. Cette variable est une variable After et retourne un entier.

NB_LINE_REJECTED : nombre de lignes rejetées. Cette variable est une variable After et retourne un entier.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Ce composant n'est pas un composant de début (fond vert) et il nécessite un composant de sortie.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Scénario 1 : Filtrer une liste de noms à l'aide de conditions simples

Le scénario suivant décrit un Job qui utilise des conditions simples pour filtrer une liste d'enregistrements. Le Job écrit deux tables de sortie : la première liste toutes les personnes de sexe masculin dont le nom de famille contient moins de neuf caractères et âgées de 10 à 80 ans. La seconde liste tous les enregistrements rejetés. Un message d'erreur s'affichera dans la table pour chaque enregistrement rejeté, afin d'expliquer pourquoi l'enregistrement a été rejeté.

Construire le Job

  1. A partir de la Palette, cliquez-déposez les composants suivants dans l'éditeur graphique : un tFixedFlowInput, un tFilterRow et un tLogRow.

  2. Connectez le tFixedFlowInput au tFilterRow à l'aide d'un lien Row > Main. Ensuite, connectez le tFilterRow au tLogRow, à l'aide d'un lien Row > Filter.

  3. Déposez de la Palette dans l'espace de modélisation graphique un nouveau tLogRow et renommez-le reject. Reliez le tFilterRow à ce tLogRow à l'aide d'un lien Row > Reject.

  4. Renommez les autres composants afin de mieux identifier leur rôle au sein du Job.

Configurer les composants

  1. Dans l'espace graphique, cliquez sur le composant tFixedFlowInput afin d'afficher sa vue Basic settings et définir ses propriétés.

  2. Cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma des données d'entrée. Dans cet exemple, le schéma se composant des quatre colonnes suivantes : LastName (type String), Gender (type String), Age (type Integer) et City (type String).

    Cela fait, cliquez sur OK afin de valider les paramètres du schéma et fermer la boîte de dialogue. Une nouvelle boîte de dialogue s'ouvre et vous propose de propager le schéma. Cliquez sur Yes.

  3. Dans les champs Row separator et Field separator, saisissez respectivement le séparateur de lignes et le séparateur de champs, si nécessaire. Dans cet exemple, utilisez les paramètres par défaut pour les deux champs, respectivement un retour chariot et un point-virgule.

  4. Sélectionnez l'option Use Inline Content(delimited file) dans la zone Mode et saisissez les données d'entrée dans le champ Content.

    Les données d'entrée utilisées dans cet exemple sont les suivantes :

    Van Buren;M;73;Chicago
    Adams;M;40;Albany
    Jefferson;F;66;New York
    Adams;M;9;Albany
    Jefferson;M;30;Chicago
    Carter;F;26;Chicago
    Harrison;M;40;New York
    Roosevelt;F;15;Chicago
    Monroe;M;8;Boston
    Arthur;M;20;Albany
    Pierce;M;18;New York
    Quincy;F;83;Albany
    McKinley;M;70;Boston
    Coolidge;M;4;Chicago
    Monroe;M;60;Chicago
  5. Double-cliquez sur le composant tFilterRow pour afficher sa vue Basic settings et définir ses propriétés.

  6. Dans le tableau Conditions, ajoutez quatre conditions et renseignez les paramètres de filtre.

    • Pour la première ligne, dans la colonne InputColumn, dans la première ligne, sélectionnez LastName. Dans la colonne Function, sélectionnez Length. Dans la colonne Operator, sélectionnez Lower than et, dans la colonne Value, saisissez 9 afin de limiter la longueur les noms de famille à 9 caractères.

    • Pour la deuxième ligne, dans la colonne InputColumn, sélectionnez Gender. Dans la colonne Operator, sélectionnez Equals et, dans la colonne Value, saisissez M entre guillemets doubles afin de filtrer les enregistrement des personnes de sexe masculin.

      Avertissement

      Dans la colonne Value, vous devez saisir vos valeurs entre guillemets doubles pour tous les types de valeurs, sauf pour les valeurs de type Integer, qui ne nécessitent pas de guillemet.

    • Dans la troisième ligne, dans la colonne InputColumn, sélectionnez Age. Dans la colonne Operator, sélectionnez Greater than et, dans la colonne Value, saisissez 10 afin de configurer l'âge minimum à 10 ans.

    • Dans la dernière ligne, dans la colonne InputColumn, sélectionnez Age. Dans la colonne Operator, sélectionnez Lower than et, dans la colonne Value saisissez 80 pour configurer l'âge maximum à 80 ans.

  7. Pour combiner les deux conditions, sélectionnez l'opérateur logique And dans la liste Logical operator used to combine conditions, pour accepter uniquement les enregistrement répondant aux deux conditions.

  8. Dans la vue Basic settings des composants tLogRow, sélectionnez l'option Table (print values in cells of a table) dans la zone Mode.

Exécuter le Job

  • Sauvegardez votre Job puis appuyez sur F6 pour l'exécuter.

La première table liste les enregistrements des personnes de sexe masculin, âgées de 10 à 80 ans, dont le nom de famille comprend moins de 9 caractères. La seconde affiche tous les enregistrements ne correspondant pas aux conditions de filtre. A chaque enregistrement rejeté correspond un message d'erreur expliquant la raison du rejet.

Scénario 2 : Filtrer une liste de noms via différentes opérations logiques

Ce scénario se base sur le scénario précédent et filtre les données d'entrée afin que seuls les enregistrements des personnes de New York et Chicago soient acceptées. Sans modifier les paramètres de filtre du précédent scénario, des conditions avancées sont ajoutées pour permettre les opérations logiques OR et AND dans le même composant tFilterRow.

  1. Double-cliquez sur le composant tFilterRow pour afficher sa vue Basic settings.

  2. Cochez la case Use advanced mode et saisissez l'expression suivante dans le champ Advanced :

    input_row.City.equals("Chicago") || input_row.City.equals("New York")

    Cette expression définit deux conditions sur la colonne City des données d'entrée afin de filtrer les enregistrements contenant les villes de Chicago et New York, et utilise l'opérateur logique OR pour accepter les enregistrements satisfaisant l'une des deux conditions.

  3. Appuyez sur les touches Ctrl+S afin de sauvegarder le Job et appuyez sur la touche F6 pour l'exécuter.

    La liste des résultats du scénario précédent a été plus filtrée. Seuls les enregistrements contenant les villes de New York et Chicago sont acceptés.