Scénario : Mapper des données à l'aide d'une sous-requête - 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

Ce scénario décrit un Job mappant des données des deux tables d'entrée PreferredSubject et CourseScore vers la table de sortie TotalScoreOfPreferredSubject à l'aide d'une sous-requête.

La table PreferredSubject contient les données des matières préférées des étudiants. Pour reproduire ce scénario, vous pouvez charger des données dans la table à partir d'un fichier CSV comme suit. Pour plus d'informations concernant comment charger des données dans une table Teradata, consultez Scénario : Charger des données dans une base de données Teradata.

SeqID;StuName;Subject;Detail
1;Amanda;art;Amanda prefers art.
2;Ford;science;Ford prefers science.
3;Kate;art;Kate prefers art.

La table CourseScore contient les scores des étudiants dans leur matière favorite. Pour reproduire ce scénario, vous pouvez charger des données dans la table à partir d'un fichier CSV comme suit. Pour plus d'informations concernant comment charger des données dans une table Teradata, consultez Scénario : Charger des données dans une base de données Teradata.

SeqID;StuName;Subject;Course;Score;Detail
1;Amanda;science;math;85;science score
2;Amanda;science;physics;75;science score
3;Amanda;science;chemistry;80;science score
4;Amanda;art;chinese;85;art score
5;Amanda;art;history;95;art score
6;Amanda;art;geography;80;art score
7;Ford;science;math;95;science score
8;Ford;science;physics;85;science score
9;Ford;science;chemistry;80;science score
10;Ford;art;chinese;75;art score
11;Ford;art;history;80;art score
12;Ford;art;geography;85;art score
13;Kate;science;math;65;science score
14;Kate;science;physics;75;science score
15;Kate;science;chemistry;80;science score
16;Kate;art;chinese;85;art score
17;Kate;art;history;80;art score
18;Kate;art;geography;95;art score

Avant exécution du Job, il n'y a aucune donnée dans la table de sortie TotalScoreOfPreferredSubject :

SeqID;StuName;PreferredSubject;TotalScore

Déposer et renommer les composants

  1. Créez un nouveau Job et ajoutez les composants suivants en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant à partir de la Palette : deux tELTTeradataInput, deux tELTTeradataMap et un tELTTeradataOutput.

  2. Renommez les tELTTeradataInput en PreferredSubject et CourseScore respectivement, les deux tELTTeradataMap en ELTSubqueryMap et ELTMap et le tELTTeradataOutput en TotalScoreOfPreferredSubject.

Configurer les composants d'entrée

  1. Double-cliquez sur le composant PreferredSubject pour ouvrir sa vue Basic settings.

  2. Dans le champ Default Table Name, saisissez un nom pour la table d'entrée. Dans cet exemple, nommez-la PreferredSubject.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema pour définir le schéma de la table d'entrée dans l'éditeur du schéma.

    Cliquez quatre fois sur le bouton [+] pour ajouter quatre colonnes : SeqID dont le DB Type est INTEGER, StuName, Subject et Detail dont le DB Type est VARCHAR.

    Cliquez sur OK pour valider ces modifications et fermer l'éditeur du schéma.

  4. Connectez le PreferredSubject au ELTMap à l'aide d'un lien Link > PreferredSubject (Table).

  5. Double-cliquez sur le CourseScore pour ouvrir sa vue Basic settings.

  6. Dans le champ Default Table Name, saisissez le nom de la table d'entrée. Dans cet exemple, saisissez CourseScore.

  7. Cliquez sur le bouton [...] à côté du champ Edit schema pour définir le schéma de la table d'entrée dans l'éditeur du schéma.

    Cliquez six fois sur le bouton [+] pour ajouter six colonnes, SeqID et Score dont le DB Type est INTEGER, StuName, Subject, Course et Detail dont le DB Type est VARCHAR.

    Cliquez sur OK pour valider ces modifications et fermer l'éditeur du schéma.

  8. Reliez le CourseScore au ELTSubqueryMap à l'aide d'un lien Link > CourseScore (Table).

Configurer le composant de sortie

  1. Double-cliquez sur le composant TotalScoreOfPreferredSubject pour ouvrir sa vue Basic settings.

  2. Dans le champ Default Table Name, saisissez un nom pour la table de sortie. Dans cet exemple, saisissez TotalScoreOfPreferredSubject.

  3. Cliquez sur le bouton [...] à côté du champ Edit schema afin de définir le schéma de la table de sortie dans l'éditeur du schéma.

    Cliquez quatre fois sur le bouton [+] pour ajouter quatre colonnes, SeqID et TotalScore dont le DB Type est INTEGER, StuName et PreferredSubject dont le DB Type est VARCHAR.

    Cliquez sur OK pour valider ces modifications et fermer l'éditeur du schéma.

Configurer le mapping des données afin de générer une sous-requête

  1. Double-cliquez sur le ELTSubqueryMap pour ouvrir sa vue Basic settings.

    Vous n'avez pas besoin de spécifier les informations de connexion à la base de données Teradata dans le composant ELTSubqueryMap. Les informations de connexion sont spécifiées dans le composant ELTMap.

  2. Cliquez sur le bouton [...] du champ ELT Teradata Map Editor pour ouvrir son éditeur.

  3. Ajoutez la table d'entrée CourseScore en cliquant sur le bouton [+] dans le coin supérieur gauche de l'éditeur de mapping et sélectionnez le nom de la table dans la liste déroulante de la boîte de dialogue qui s'ouvre.

  4. Ajoutez une table de sortie en cliquant sur le bouton [+] dans le coin supérieur droit de l'éditeur et en saisissant le nom de la table TotalScore dans le champ correspondant de la boîte de dialogue.

  5. Cliquez sur les colonnes StuName, Subject et Score dans la table d'entrée et déposez-les dans la table de sortie.

  6. Cliquez sur le bouton Add filter row dans le coin supérieur droit de la table de sortie et sélectionnez Add an other(GROUP...) clause dans le menu contextuel. Dans le champ Additional other clauses (GROUP/ORDER BY...), saisissez la clause GROUP BY CourseScore.StuName, CourseScore.Subject.

    Ajoutez la fonction d'agrégation SUM pour la colonne Score de la table de sortie en modifiant l'expression de cette colonne en SUM(CourseScore.Score).

  7. Cliquez sur l'onglet Generated SQL Select query for "table1" output au bas de l'éditeur de mapping pour afficher l'instruction SQL correspondante générée.

    Cette requête SQL apparaît comme sous-requête SQL générée par le composant ELTMap.

  8. Cliquez sur OK pour valider les modifications et fermer l'éditeur de mapping.

  9. Reliez le ELTSubqueryMap au ELTMap à l'aide d'un lien Link > TotalScore (table1). Notez que le lien est automatiquement renommé en TotalScore (Table_ref) car la table de sortie TotalScore est une table de référence.

Mapper les schémas d'entrée et de sortie

  1. Cliquez-droit sur le composant ELTMap, sélectionnez Link > *New Output* (Table) dans le menu contextuel et cliquez sur TotalScoreOfPreferredSubject. Dans la boîte de dialogue qui s'ouvre, cliquez sur Yes pour récupérer le schéma du composant cible.

  2. Cliquez sur le ELTMap pour ouvrir sa vue Basic settings.

    Dans les champs Host, Database, Username et Password, saisissez vos informations de connexion à la base de données Teradata.

  3. Cliquez sur le bouton [...] à côté du champ ELT Teradata Map Editor pour ouvrir son éditeur.

  4. Ajoutez la table d'entrée PreferredSubject en cliquant sur le bouton [+] dans le coin supérieur gauche de l'éditeur et sélectionnez le nom de la table souhaitée dans la liste de la boîte de dialogue.

    Répétez l'opération pour ajouter une autre table d'entrée, TotalScore.

  5. Cliquez sur la colonne StuName de la table d'entrée PreferredSubject et déposez-la dans la colonne correspondante de la table d'entrée TotalScore. Cochez la case Explicit join de la colonne StuName dans la table TotalScore.

    Répétez l'opération avec la colonne Subject.

  6. Cliquez sur la colonne SeqID de la table d'entrée PreferredSubject et déposez-la dans la colonne correspondante de la table de sortie.

    Répétez l'opération avec les colonnes StuName et Subject de la table d'entrée PreferredSubject et la colonne Score de la table d'entrée TotalScore.

  7. Cliquez sur l'onglet Generated SQL Select query for "table2" output au bas de l'éditeur de mapping pour afficher l'instruction SQL correspondante générée.

    La requête SQL générée dans le composant ELTSubqueryMap apparaît comme sous-requête dans la requête QSL générée par ce composant. L'alias est automatiquement ajouté pour les colonnes sélectionnées dans la sous-requête

  8. Cliquez sur OK pour valider les modifications et fermer l'éditeur de mapping.

Exécuter le Job

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

  2. Appuyez sur F6 pour l'exécuter.

    L'instruction sélectionnée est générée et les données de mapping sont écrites dans la table de sortie.