Scénario 1 : Correspondance d'entrées utilisant les algorithmes Q-grams et Levenshtein - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
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 décrit un Job à six composants ayant pour but de :

  • faire correspondre les entrées de la colonne name à celles du fichier d'entrée de référence en divisant les chaînes de caractères en blocs de longueur q, où q est de trois, afin de créer un certain nombre de q-grammes. Le résultat de correspondance est donné comme le nombre de correspondances entre les q-grammes d'entrée et de référence, divisé par le nombre de q-grammes possibles,

  • faire correspondre la distance d'édition entre les entrées de la colonne email du fichier d'entrée et celles du fichier d'entrée de référence.

Les sorties de ces deux types de correspondances sont écrites dans trois fichiers de sortie : le premier pour les valeurs de correspondance, le deuxième pour les valeurs de correspondance possible, et le troisième pour les valeurs n'ayant aucune correspondance dans le fichier de référence.

Dans ce scénario, vous avez déjà stocké les schémas principaux et de référence dans le Repository. Pour plus d'informations concernant le stockage des métadonnées de schémas dans le Repository, consultez le Guide utilisateur du Studio Talend.

La table d'entrée principale contient sept colonnes : code, name, address, zipcode, city, email et col7. Vous allez effectuer une correspondance floue sur deux colonnes : name et email.

Construire le Job

  1. Dans la vue Repository, développez les nœuds Metadata - DB Connections où vous avez stocké les schémas principaux d'entrée, et glissez le fichier correspondant dans l'espace de modélisation graphique.

    La boîte de dialogue [Components] s'ouvre.

  2. Sélectionnez le tMysqlInput et cliquez sur OK afin de déposer un composant tMysqlInput dans l'espace de modélisation graphique.

    La table d'entrée utilisée dans ce scénario est appelée person. Elle contient plusieurs colonnes, y compris les deux colonnes name et email sur lesquelles effectuer la correspondance floue. La capture d'écran suivante montre les propriétés simples du composant principal d'entrée, récupérées du Repository.

  3. Répétez l'opération pour la seconde table d'entrée que vous souhaitez utiliser comme référence, customer dans ce scénario.

    La capture d'écran suivante montre les propriétés simples du composant de référence.

  4. Déposez un composant tRecordMatching de la Palette dans l'espace de modélisation graphique, ainsi que trois tLogRow.

  5. Connectez les composants d'entrée principal et de référence au tRecordMatching à l'aide de liens Main. Le lien entre la table d'entrée de référence et le tRecordMatching s'affiche comme Lookup dans l'espace de modélisation graphique.

  6. Connectez le tRecordMatching aux trois composants tLogRow à l'aide des liens Matches, Possible Matches et Non Matches.

Configurer les composants

  1. Double-cliquez sur le tRecordMatching afin d'afficher sa vue Component et définir ses propriétés.

  2. Cliquez sur le bouton Edit schema afin d'ouvrir une boîte de dialogue. Vous pouvez définir les données que vous souhaitez passer aux composants de sortie.

    Dans cet exemple, l'objectif est de passer au composant tRecordMatching les colonnes name et email du premier composant tMysqlInput, ainsi que les colonnes ref_name et ref_email du second composant tMysqlInput.

    Les colonnes MATCHING_DISTANCE et MATCHING_WEIGHT du schéma de sortie sont définies par défaut.

    La valeur de la colonne MATCHING_WEIGHT est toujours comprise entre 0 et 1. C'est une distance globale entre les ensembles de colonnes (définis pour correspondre par les colonnes).

    La colonne MATCHING_DISTANCE affichera une distance pour chaque colonne sur laquelle a été utilisé un algorithme. Les résultats seront séparés pas une barre verticale.

    Cliquez sur OK afin de fermer la boîte de dialogue et procéder à l'étape suivante.

  3. Dans le tableau Key Definition de la vue Basic settings du composant tRecordMatching, cliquez sur le bouton [+] afin d'ajouter deux colonnes à la liste.

  4. Sélectionnez les colonnes d'entrée et de sortie sur lesquelles vous voulez effectuer la correspondance floue, à partir des colonnes Input key attribute et Lookup key attribute respectivement.

    Dans cet exemple, sélectionnez les colonnes name et email comme attributs d'entrée, et les colonnes ref-name et ref_email comme attributs de référence.

    Note

    Lorsque vous sélectionnez une colonne de dates sur laquelle appliquer un algorithme ou un algorithme de mise en correspondance, vous pouvez choisir ce que vous souhaitez comparer dans le format de date.

    Par exemple, si vous souhaitez comparer uniquement l'année, attribuez le type Date à la colonne concernée dans le schéma du composant puis saisissez "yyyy" dans le champ Date Pattern. Le composant convertit le format de date en une chaîne de caractères, selon le modèle défini dans le schéma, avant de comparer les chaînes de caractères.

  5. Cliquez sur la colonne Matching type et sélectionnez q-gram dans la liste, la méthode devant être utilisée sur la première colonne, afin de vérifier les données d'entrée, par rapport aux données de référence.

  6. Définissez le type de correspondance de la seconde colonne, Levenshtein dans cet exemple.

    Les valeurs minimale et maximale de correspondance possible sont définies dans la vue Advanced settings. Vous pouvez modifier les valeurs par défaut.

  7. Dans la colonne Confidence Weight, définissez un poids pour chacune des colonnes utilisées comme attributs de clé.

  8. Cliquez dans la cellule de la colonne Handle Null et sélectionnez l'opérateur à utiliser pour gérer les attributs nulls dans les colonnes.

  9. Si nécessaire, cliquez sur le bouton [+] sous la table Blocking Selection pour ajouter une ou plusieurs lignes. Cliquez dans la ligne et sélectionnez dans la liste la colonne à utiliser comme valeur de bloc.

    L'utilisation d'une valeur de bloc réduit le nombre de paires d'enregistrements à examiner. Les données d'entrée sont partitionnées en blocs exhaustifs, selon la valeur de bloc. Le nombre de paires à comparer est réduit, car la comparaison est restreinte aux paires d'enregistrements dans chaque bloc. Consultez Scénario 2 : Comparer les colonnes et regrouper dans le flux de sortie les enregistrements en doublon ayant la même clé fonctionnelle pour un scénario concernant les valeurs de bloc.

  10. Double-cliquez sur le premier tLogRow afin d'afficher sa vue Component et définir ses propriétés. Dans la zone Mode, sélectionnez Table, afin d'afficher le fichier source et les résultats du tRecordMatching ensemble, pour pouvoir les comparer.

  11. Répétez l'opération pour les deux autres composants tLogRow.

Exécuter le Job

  • Sauvegardez votre Job et appuyez sur F6 afin de l'exécuter.

    Trois tables de sortie sont affichées dans la console. La première montre les entrées qui correspondent, la deuxième retourne les entrées pouvant correspondre, et la dernière affiche les entrées qui ne correspondent pas, selon la méthode de correspondance utilisée dans les colonnes définies.

    La capture d'écran ci-dessous illustre les extractions des trois tables de sortie.

La première table liste tous les noms et adresses e-mails pouvant correspondre à des entrées de la table de référence. La distance de correspondance et le poids de correspondance sont équivalents à "1.0".

La seconde table liste tous les noms et adresses e-mail pouvant avoir une correspondance dans la table de référence. La colonne de distance de correspondance affiche les distances pour les colonnes name et email.

La troisième table liste tous les noms et les adresses e-mail n'ayant aucune correspondance dans la table de référence.