Scénario 1 : Normaliser les données à l'aide de règles de type simple - 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

Dans ce scénario, deux étapes successives sont effectuées afin de :

  1. normaliser les données entrantes (séparer les données conformes des données non conformes) ;

  2. extraire les données souhaitées et les afficher.

Avant de reproduire ces étapes, vous devez analyser les données source afin de déterminer les règles à rédiger. Pour ce scénario, les données source sont stockées dans un fichier .csv appelé partsmaster.

Le fichier contient un total de 59 lignes de données brutes, mais certaines d'entre elles n'apparaissent pas sur la capture ci-dessus.

En observant les données, vous pouvez anticiper que la troisième ligne ne sera pas reconnue car elle contient des caractères asiatiques. De plus, vous pouvez déterminer que :

  • les données SKU contiennent 34-9923, pb710125, etc. De ce fait, la règle utilisée pour analyser les données SKU peut être :

    Nom

    Type

    Valeur

    "SKU"

    "Format"

    "(DIGIT DIGIT|LETTER LETTER'-'? DIGIT DIGIT DIGIT DIGIT (DIGIT DIGIT?)?"

  • pour les données Size, le format correct est la multiplication de deux ou trois longueurs (length) ajoutée aux unités de longueur (length unit). De ce fait, les règles utilisées pour les données Size peuvent être :

    Name

    Type

    Value

    "LengthUnit"

    "Enumeration"

    " 'm' | '\'' | 'inch' | 'inches' | '\"'"

    "BY"

    "Enumeration"

    "'X' | 'x' | 'by' "

    "Length"

    "Format"

    "(INT | FRACTION | DECIMAL) WHITESPACE* LengthUnit "

    "Size"

    "Combination"

    "Length BY Length BY Length"

    "Size"

    "Combination"

    "Length BY Length"

Puisque deux règles Combination utilisent le même nom, elles seront exécutées par ordre descendant comme présenté dans ce tableau.

  • pour les données Weight, le format correct est le poids (weight) ajouté à l'unité de poids (weight unit). De ce fait, les règles utilisées pour analyser les données  Weight peuvent être :

    Name

    Type

    Value

    "WeightUnit"

    "Enumeration"

    " 'lb' | 'lbs' | 'pounds' | 'Kg' | 'pinds'"

    "Weight"

    "Format"

    "(INT | FRACTION | DECIMAL) WHITESPACE* WeightUnit "

Vous pouvez à présent commencer à reproduire les deux étapes de ce scénario.

Séparer les données conformes des données non conformes

Pour cette première étape, quatre composants sont utilisés :

  • un tFileInputDelimited (partsmaster) : ce composant charge et passe les données source au composant suivant.

  • un tStandardizeRow : ce composant normalise les données entrantes et rejette les exceptions non reconnues.

  • un tLogRow : ce composant est utilisé à deux reprises pour afficher respectivement les exceptions et les données XML de sortie.

Pour reproduire cette étape, procédez comme indiqué dans les sections suivantes.

Déposer et relier les composants

Pour reproduire cette étape, procédez comme suit :

  1. Configurez votre schéma File Delimited pour le fichier partsmaster.csv dans la vue Repository de votre Studio Talend. Pour plus d'informations concernant cette procédure, consultez le Guide utilisateur du Studio Talend.

  2. Sous le nœud Metadata de la vue Repository de votre Studio Talend, sélectionnez le schéma File Delimited de partsmaster.csv et déposez-le dans l'espace de modélisation graphique.

  3. A partir de la boîte de dialogue qui apparaît, sélectionnez tFileInputDelimited.

    Le composant tFileInputDelimited (partsmaster) s'affiche dans l'espace de modélisation graphique.

  4. A partir de la Palette, déposez le composant tStandardizeRow ainsi que deux tLogRow dans l'espace de modélisation graphique.

  5. Cliquez-droit sur le tFileInputDelimited (partsmaster) pour afficher son menu contextuel.

  6. A partir de ce menu, sélectionnez un lien Row > Main pour connecter ce composant au tStandardizeRow.

  7. Acceptez la propagation du schéma dans la boîte de dialogue qui apparaît en cliquant sur Yes.

  8. A partir du tStandardizeRow, procédez de même pour connecter ce composant au premier tLogRow à l'aide d'un lien Row > Main et au second à l'aide d'un lien Row > Reject puis acceptez la propagation du schéma.

    Vous avez la possibilité de modifier le libellé de chaque composant, comme cela a été fait pour le composant tLogRow, renommé Exception pour ce scénario. Pour plus d'informations, consultez le Guide utilisateur du Studio Talend.

Configurer la normalisation des lignes

Pour ce faire, procédez comme suit :

  1. Cliquez sur le tStandardizeRow pour ouvrir l'onglet Basic settings de sa vue Component.

  2. Dans le champ Column to parse, sélectionnez SKU_Description_Size_Weight. C'est l'unique colonne que contient le schéma d'entrée.

  3. Sous le tableau Conversion rules, cliquez sur le bouton [+] à huit reprises pour ajouter huit lignes à ce tableau.

  4. Pour remplir ces lignes, saisissez les règles déterminées lors de l'analyse des données brutes effectuée au début de ce scénario.

    Les deux règles Size sont exécutées par ordre descendant puisqu'elles font partie du même type de règle. Dans ce scénario, l'ordre des règles permet au composant de mettre d'abord en correspondance la règle Size composée de trois nombres puis celles de deux nombres. Si vous inversez cet ordre, le composant met en correspondance les deux premiers nombres avec la première règle Size (Length BY Length) et traite ensuite le dernier nombre de la chaîne est ignoré car il ne correspondant pas.

  5. Cliquez sur le bouton Generate parser code in routines afin de générer le code d'analyse syntaxique dans des routines.

  6. Dans la vue Advanced settings, laissez les options par défaut dans la zone Output format.

    Le paramètre Max edits for fuzzy match est configuré à 1 par défaut.

Exécuter la normalisation du Job

Appuyez sur F6 pour exécuter ce Job.

Dans la console de la vue Run, vous pouvez observer la structure des données de sortie. Chaque instance de données XML est écrite dans une ligne séparée car la case Pretty print est cochée dans la vue Advanced settings du composant tStandardizeRow.

Un segment XML correspondant aux données brutes telles que 34-9923, Monolithic Membrance, 4' x 8', 26 lbs est généré là où les données conformes sont séparées des données non conformes (qui ne correspondent pas). Les données brutes sont donc normalisées.

Toujours à partir de cette console, vous pouvez observer qu'une ligne est rejetée car elle contient des données non reconnaissables.

Extraire les données souhaitées à partir des données XML normalisées

Cette section présente la deuxième étape de ce scénario. Quatre composants sont ajoutés pour recevoir les données XML normalisées à la place du composant tLogRow défini pour cette action lors de la première étape :

  • le tExtractXMLField : ce composant lit un champ d'entrée en XML et extrait les données souhaitées ;

  • le tFilterRow : ce composant filtre les lignes d'entrée en définissant des conditions sur les colonnes sélectionnées ;

  • le tLogRow (deux fois) : ces deux composants reçoivent et affichent respectivement les données valides ou invalides conformément aux conditions établies dans le tFilterRow.

Pour reproduire la deuxième étape, procédez comme dans les sections suivantes :

Déposer et relier les composants supplémentaires
  1. Dans l'espace de modélisation graphique, supprimez le composant tLogRow connecté au tStandardizeRow à l'aide d'un lien Row > Main.

  2. A partir de la Palette, déposez un tExtractXMLField, un tFilterRow ainsi que deux tLogRow dans l'espace de modélisation graphique. Pour ce scénario, les deux composants tLogRow sont nommés respectivement ValidSize et InvalidSize.

    Pour plus d'informations concernant le renommage d'un composant, consultez le Guide utilisateur du Studio Talend.

  3. Connectez le tExtractXMLField au tFilterRow à l'aide d'un lien Row > Main comme vous l'avez fait lors de la première étape pour connecter partsmaster au tStandardizeRow.

  4. Procédez de la même façon pour connecter le tFilterRow au ValidSize à l'aide d'un lien Row > Filter.

  5. Connectez le tFilterRow au composant InvalidSize à l'aide d'un lien Row > Reject comme vous l'avez fait lors de la première étape pour connecter le tSandardizeRow au composant Exception.

Configurer l'extraction des champs XML

Pour ce faire, procédez comme suit :

  1. Double-cliquez sur le tExtractXMLField pour ouvrir l'onglet Basic settings de sa vue Component.

  2. A côté de Edit schema, cliquez sur [...] pour ouvrir l'éditeur de schéma.

  3. A gauche de cet éditeur, sélectionnez la ligne SKU_Description_Size_Weight.

  4. Cliquez sur le bouton pour passer cette ligne à la droite de l'éditeur.

  5. A droite de cet éditeur, cliquez sur le bouton [+] à trois reprises pour ajouter trois lignes.

  6. Renommez les trois lignes ainsi : SKU, Size, Weight, chacune d'entre elles étant des balises des données XML normalisées.

  7. Cliquez sur OK pour valider cette configuration et acceptez la propagation du schéma demandée dans la boîte de dialogue qui apparaît. Observez que quatre lignes sont automatiquement remplies dans le tableau Mapping de la vue Component.

  8. Dans le champ XML field de la vue Component, sélectionnez le champ XML souhaité des données d'entrée. Pour ce scénario, il s'agit de Normalized_field.

  9. Dans le champ Loop XPath Query, saisissez le nom de la balise racine de l'arborescence XML pour remplacer sa valeur par défaut. Pour ce scénario, saisissez "/record".

  10. Dans la colonne XPath query du tableau Mapping, saisissez entre guillemets doubles les balises de l'arborescence XML correspondant aux données normalisées souhaitées. Pour ce scénario, il s'agit de "SKU", "Size", et "Weight".

Configurer le filtrage des lignes

Pour ce faire, procédez comme suit :

  1. Double-cliquez sur le tFilterRow pour ouvrir l'onglet Basic settings de sa vue Component.

  2. Sous le tableau Conditions, cliquez sur le bouton [+] pour ajouter une ligne.

  3. Dans la colonne InputColumn de cette ligne, sélectionnez Size à partir de la liste déroulante.

  4. Dans la colonne Function, sélectionnez Empty.

  5. Dans la colonne Operator, sélectionnez Not equal to.

  6. Dans la colonne Value, saisissez des guillemets doubles "".

    La condition est définie. Les données normalisées qui ne contiennent pas de valeurs nulles dans la balise Size seront passées au composant de sortie tandis que celles qui contiennent des valeurs nulles dans la balise Size seront rejetées.

Exécuter le Job
  • Appuyez sur F6 pour exécuter ce Job.

    Dans la console de la vue Run, vous pouvez observez les données souhaitées sélectionnées à partir du flux de données XML normalisées.

    Ce Job liste les données normalisées souhaitées en parallèle avec les données brutes.

    Vous pouvez également observer les données rejetées par le composant tFilterRow.

    Note

    Pour des raisons d'espace, tous les résultats ne sont pas affichés.