Scénario : Récupérer les différents âges et l'âge le plus bas - 6.3

Composants Talend Guide de référence

EnrichVersion
6.3
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
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
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario affiche le nombre d'occurrences des différents âges et l'âge le plus bas d'un groupe de clients. Dans ce scénario, les données client sont saisies manuellement.

Vous allez voir découvrir deux manières de gérer ces données via le tMemorizeRows :

  • au sein du même sous-job (avec un tJavaFlex)

  • hors du sous-job du tMemorizeRows (avec un tJava)

Ce Job utilise les cinq composants suivants :

  • tFixedFlowInput : ce composant contient les lignes de données client, notamment les IDs, noms et âges des clients.

  • tSortRow : ce composant trie les lignes selon les données de l'âge.

  • tMemorizeRows : il mémorise temporairement un nombre spécifique de lignes de données entrantes à un moment donné et indexe les lignes de données mémorisées.

  • tJavaFlex : ce composant compare la valeur des âges dans les données mémorisées par le composant précédent, compte le nombre d'occurrences des différents âges et affiche ces âges dans la vue Run.

  • tJava : il affiche le nombre d'occurrences des différents âges, ainsi que l'âge le plus bas.

Pour reproduire le scénario, procédez comme dans les sections suivantes.

Déposer et relier les composants

  1. Déposez les composants suivants de la Palette dans l'espace de modélisation graphique : tFixedFlowInput, tSortRow, tMemorizeRows, tJavaFlex et tJava en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette.

  2. Reliez le tFixedFlowInput au tSortRow, à l'aide d'un lien Row > Main.

  3. Répétez l'opération pour connecter le tSortRow au tMemorizeRows et le tMemorizeRows au tJavaFlex à l'aide d'un lien Row > Main.

  4. Connectez le tFixedFlowInput au tJava à l'aide d'un lien Trigger > OnSubjobOk.

Configurer les composants

Configurer le composant tFixedFlowInput

  1. Double-cliquez sur le composant tFixedFlowInput afin d'ouvrir sa vue Basic settings.

  2. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir la boîte de dialogue [Schema] et définir la structure des données d'entrée.

  3. Dans cet éditeur, cliquez trois fois sur le bouton [+] pour ajouter trois colonnes, que vous nommerez : id, name et age.

  4. Dans la colonne Type, sélectionnez Integer pour les colonnes id et age.

  5. Cliquez sur OK pour fermer l'éditeur, cliquez sur Yes afin de valider ces modifications et acceptez la propagation proposée par la boîte de dialogue qui s'ouvre.

  6. Sélectionnez Use Inline Content (delimited file) dans la zone Mode.

    Dans le champ Content, saisissez les données clients suivantes :

    1;Judy;27
    2;Lily;45
    3;Peter;59
    4;John;30
    5;Teddy;45

Configurer le composant tSortRow

  1. Double-cliquez sur le tSortRow afin d'ouvrir sa vue Component.

  2. Dans le tableau Criteria, cliquez sur le bouton [+] afin d'ajouter une ligne.

  3. Dans la colonne Schema column, sélectionnez la colonne de données sur laquelle vous souhaitez baser le tri. Dans cet exemple, sélectionnez age, puisque les âges seront comparés et comptés.

  4. Dans la colonne sort num or alpha?, sélectionnez le type de tri à effectuer. Dans cet exemple, comme age contient des données de type integer, sélectionnez num, pour numérique.

  5. Dans la colonne Order asc or desc?, sélectionnez desc pour afficher les données en ordre descendant dans la console.

Configurer le composant tMemorizeRows

  1. Double-cliquez sur le composant tMemorizeRows afin d'ouvrir sa vue Component.

  2. Dans le champ Row count to memorize, saisissez le nombre maximum de lignes à mémoriser à un moment donné. Puisque vous devez comparer les âges de deux clients à chaque fois, saisissez 2. Ce composant mémorise deux lignes au maximum à un moment donné et indexe toujours la nouvelle ligne entrante comme 0 et la ligne précédente comme 1.

  3. Dans la colonne Memorize du tableau Columns to memorize, cochez la (les) case(s) de la (des) colonne(s) à mémoriser. Dans cet exemple, cochez la case correspondant à la colonne age.

Configurer les composants tJavaFlex et tJava

  1. Double-cliquez sur le tJavaFlex afin d'ouvrir sa vue Component.

  2. Dans la zone Start code, saisissez le code Java qui sera appelé durant la phase d'initialisation. Dans cet exemple, saisissez int count=0; afin de déclarer une variable count et de lui assigner la valeur 0.

  3. Dans la zone Main code, saisissez le code Java à appliquer à chaque ligne du flux de données. Dans ce scénario, saisissez :

    if(!age_tMemorizeRows_1[0].equals(age_tMemorizeRows_1[1]))
    {
    count++;
    }
    System.out.println(age_tMemorizeRows_1[0]);
    

    Ce code compare les deux âges mémorisés à chaque fois par le tMemorizeRows et compte un changement à chaque fois que des âges différents sont trouvés. Ce code affiche également les âges indexés comme 0 par le tMemorizeRows. Lorsque le composant tJavaFlex est dans le même flux que le tMemorizeRows, le format de la variable est ColumnName_ComponentName[index].

  4. Dans la zone End code, saisissez le code qui sera appelé durant la phase de fermeture. Dans cet exemple, saisissez globalMap.put("number", count); afin d'initialiser la variable globale number avec la valeur de la variable count.

  5. Double-cliquez sur le tJava afin d'ouvrir sa vue Component.

  6. Dans le champ Code, saisissez le code suivant pour afficher le nombre d'occurrences des différents âges et de l'âge le plus bas, parmi les données clients dans la console :

    System.out.println("Different ages:
    "+globalMap.get("number"));
    
    System.out.println("Lowest age: " + ((Integer[])globalMap.get("tMemorizeRows_1_age"))[0]);

    La méthode globalMap.get() est utilisée par le tJava afin de récupérer les valeurs du tableau. Notez, ici, que le tJava est utilisé en-dehors du sous-job du tMemorizeRows, le format de la variable doit être ComponentName_ColumnName, différent du format de la variable utilisée par un composant placé dans le même flux.

Sauvegarder et exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder votre Job.

  2. Appuyez sur F6 afin d'exécuter le Job, ou cliquez sur le bouton Run de la vue Run.

Dans la console, vous pouvez constater qu'il y a dix âges différents dans le groupe des clients et que l'âge inférieur est 27.