tAssert - 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

Propriétés du tAssert

Le composant tAssert est étroitement lié au tAssertCatcher pour tester une exécution de Job. Il génère une assertion booléenne à partir d'une instruction conditionnelle, dans le but d'alimenter le statut d'exécution présenté par le tAssertCatcher.

Famille du composant

Logs & Errors

Fonction

Envoie le message de statut du Job au tAssertCatcher.

Objectif

Génère l'assertion booléenne relative à l'analyse du Job.

Le statut peut être :

Ok : l'exécution du Job a réussi.

Fail : l'exécution a échoué. Les résultats du Job testé ne correspondent pas à ce qui était attendu, ou une erreur est survenue lors de l'exécution.

Basic settings

Description

Saisissez votre message descriptif afin d'identifier l'assertion du tAssert.

 

Expression

Saisissez l'instruction conditionnelle sur laquelle baser votre assertion.

Utilisation

Ce composant suit l'action à laquelle est liée directement la condition assertive. Il peut être utilisé comme composant intermédiaire ou final du Job principal, ou bien en tant que composant de début, intermédiaire ou de fin du Job secondaire.

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.

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.

Limitation

L'évaluation du tAssert est capturée par le tAssertCatcher.

Scénario 1: Obtenir le statut des commandes d'un produit (quotidiennement) par rapport à un nombre fixe

Ce scénario permet d'insérer dans une table de base de données les informations liées à des commandes, ainsi que d'obtenir chaque jour le statut de ces commandes en utilisant le composant tAssert pour comparer les commandes à un nombre fixe et tAssertCatcher pour indiquer les résultats. Ici, Ok est retourné lorsque le nombre de commandes est supérieur à 20 et Failed est retourné s'il est inférieur à 20.

En pratique, ce Job peut être planifié pour s'exécuter tous les jours et fournir un rapport quotidien des commandes, et vous pouvez aussi remplacer les composants tFixedFlowInput et tLogRow par des composants d'entrée et de sortie dans les familles Database et File.

Déposer et relier les composants

  1. Déposez les composants tFixedFlowInput, tMysqlOutput, tAssert, tAssertCatcher, et tLogRow de la Palette dans l'espace de modélisation graphique..

  2. Renommez tFixedFlowInput en orders, tAssert en orders >=20, tAssertCatcher en catch comparison result et tLogRow en ok or failed.

  3. Reliez le composant tFixedFlowInput à tMysqlOutput à l'aide d'un lien Row > Main.

  4. Reliez le composant tFixedFlowInput à tAssert à l'aide d'un lien Trigger > On Subjob Ok.

  5. Reliez le composant tAssertCatcher à tLogRow à l'aide d'un lien Row > Main.

Configurer les composants

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

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

    dans le champ Content, saisissez les données à passer en base Mysql, par exemple:

    AS2152;Washingto Berry Juice;2013-02-19 11:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 13:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 14:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6
    AS2152;Washingto Berry Juice;2013-02-19 12:14:15;3.6

    Notez que ces commandes, inférieures à 20, sont données à titre d'exemple du fonctionnement du tAssert.

  2. Cliquez sur le bouton Edit schema pour ouvrir l'éditeur de schéma.

  3. Cliquez sur le bouton [+] pour ajouter quatre colonnes, nommées respectivement product_id, product_name, date et price, de type String, Date, Float.

    Cliquez sur OK pour valider la configuration et fermer l'éditeur.

  4. Double-cliquez sur le tMysqlOutput pour ouvrir sa vue Basic settings.

  5. Dans les champs Host, Port, Database, Username et Password, saisissez les identifiants et les informations de connexion à la base.

  6. Dans le champ Table, saisissez le nom de la table, order par exemple.

  7. Dans la liste Action on table, sélectionnez l'option Drop table if exists and create.

  8. Dans la liste Action on data, sélectionnez l'option Insert.

  9. Double-cliquez sur le tAssert pour ouvrir sa vue Basic settings.

  10. Dans le champ description, saisissez les informations descriptives de l'objectif du tAssert dans ce scénario.

  11. Dans le champ expression, saisissez l'expression permettant de comparer les données au nombre fixe:

    ((Integer)globalMap.get("tMysqlOutput_1_NB_LINE_INSERTED"))>=20
  12. Double-cliquez sur le tLogRow pour ouvrir sa vue Basic settings.

  13. Dans la zone Mode, sélectionnez Table (print values in cells of a table) pour afficher le résultat sous forme de tableau.

Exécuter le Job

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

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

    Comme montré dans la capture d'écran, le statut des commandes indique Failed puisque le nombre de celles-ci est inférieur à 20.

Scénario 2 : Paramétrer une condition assertive pour l'exécution d'un Job

Ce scénario décrit comment paramétrer une condition assertive dans le composant tAssert afin d'évaluer si l'exécution du Job a réussi ou non. De plus, vous pouvez également trouver comment deux résultats différents d'évaluation s'affichent et comment les lire. Le scénario utilise un tAssert, mais aussi :

  • un tFileInputDelimited et un tFileOutputDelimited. Les deux composants constituent le Job principal, duquel le statut d'exécution est évalué. Pour plus d'informations sur ces deux composants, consultez tFileInputDelimited et tFileOutputDelimited.

  • un tFileCompare. Il réalise la comparaison entre le fichier de sortie du Job principal et un fichier de référence standard. Le résultat comparatif est évalué par le tAssert par rapport à la condition assertive configurée dans ses paramètres. Pour plus d'informations à propos du tFileCompare, consultez tFileCompare.

  • un tAssertCatcher. Il capture l'évaluation générée par le tAssert. Pour plus d'informations à propos du composant tAssertCatcher, consultez tAssertCatcher.

  • un tLogRow. Il vous permet de lire l'évaluation capturée. Pour plus d'informations à propos du tLogRow, consultez tLogRow.

Afin de créer le Job principal, procédez comme suit :

  • Préparez un fichier délimité .csv comme fichier source lu par votre Job principal.

  • Éditez deux lignes dans ce fichier. Les modifications n'ont pas d'importance, vous pouvez uniquement simplifier le contenu.

  • Nommez-le source.csv.

  • Dans le Studio Talend, créez un nouveau Job, que vous appellerez JobAssertion.

  • Placez un tFileInputDelimited et un tFileOutputDelimited dans l'espace de modélisation graphique.

  • Connectez- les à l'aide d'un lien Row Main afin de créer le Job principal.

  • Double-cliquez sur le tFileInputDelimited afin d'ouvrir sa vue Component.

  • Dans le champ File Name de la vue Component, renseignez le chemin d'accès à votre fichier source.csv.

  • Sélectionnez dans la liste Property Type le mode Built-In et cliquez sur le bouton [...] de l'option Edit schema afin de définir les données à passer au tFileOutputDelimited. Dans ce scénario, sélectionnez les données présentées dans le fichier source.csv que vous avez créé.

Pour plus d'informations à propos des types de schéma, consultez le Guide utilisateur du Studio Talend.

  • Définissez les autres paramètres dans les champs correspondants, selon le fichier source.csv que vous avez créé.

  • Double-cliquez sur le tFileOutputDelimited afin d'ouvrir sa vue Component.

  • Dans le champ File Name de la vue Component, renseignez le chemin d'accès à votre fichier de sortie, et laissez les autres champs comme définis par défaut.

  • Appuyez sur F6 afin d'exécuter le Job principal. Il lit votre fichier source.csv, passe les données au tFileOutputDelimited et écrit un fichier délimité de sortie, out.csv.

Continuez à modifier votre Job, afin de voir comment le tAssert évalue le statut d'exécution du Job principal.

  • Renommez le fichier out.csv en reference.csv. Ce fichier est le résultat attendu de l'écriture du Job principal.

  • Placez un tFileCompare, un tAssert et un tLogRow dans l'espace de modélisation graphique.

  • Connectez-les avec un lien Row Main.

  • Connectez le tFileInputDelimited au tFileCompare avec un lien OnSubjobOk.

  • Double-cliquez sur le tFileCompare afin d'ouvrir sa vue Component.

  • Dans la vue Component, renseignez les chemins d'accès dans les champs File to compare et Reference file correspondants, et laissez les autres champs comme définis par défaut.

Pour plus d'informations à propos du composant tFileCompare, consultez tFileCompare.

  • Cliquez ensuite sur le tAssert, puis cliquez sur l'onglet Component, au bas de l'espace de modélisation graphique.

  • Dans la vue Component, éditez la condition row2.differ==0, dans le champ expression ainsi que la description de l'assertion.

Dans le champ expression, row2 constitue le flux de données transmis du tFileCompare au tAssert, differ est une colonne du schéma du tFileCompare qui affiche si les fichiers comparés sont identiques. 0 signifie qu'aucune différence n'a été détectée entre le fichier out.csv et le fichier reference.csv par le tFileCompare. Les fichiers comparés sont donc identiques, la condition assertive est remplie, le tAssert conclut que le Job principal a été exécuté avec succès. Sinon, il conclut qu'il a échoué.

Note

La colonne differ fait partie du schéma, en lecture seule, du tFileCompare. Pour plus d'informations sur son schéma, consultez tFileCompare.

  • Appuyez sur F6 afin d'exécuter votre Job.

  • Vérifiez le résultat retourné dans la vue Run.

La console affiche les résultats de la comparaison du tFileCompare : Files are identical. Mais l'évaluation du tAssert n'est visible nulle part.

Vous avez donc besoin du composant tAssertCatcher pour capturer l'évaluation.

  • Placez un tAssertCatcher et un tLogRow dans l'espace de modélisation graphique.

  • Connectez-les à l'aide d'un lien Row Main.

  • Utilisez la configuration par défaut du tAssertCatcher dans sa vue Component.

  • Appuyez sur F6 afin d'exécuter votre Job.

  • Vérifiez les résultats présentés dans la vue Run. Vous pouvez voir que les informations sur le statut du Job ont été ajoutées :

    2010-01-29 15:37:33|fAvAzH|TASSERT|JobAssertion|java|tAssert_1|Ok|--| The output file should be identical with the reference file.

La description du JobAssertion dans la console est organisée selon le schéma du tAssertCatcher, lequel comprend des colonnes correspondant au temps d'exécution, à l'ID traité, au nom du projet, au langage du code, l'origine de l'évaluation, le résultat de l'évaluation, les informations détaillées de l'évaluation, et le message descriptif de l'assertion. Pour plus d'informations à propos du schéma du tAssertCatcher, consultez tAssertCatcher.

La console indique que le statut d'exécution du Job JobAssertion est Ok. En plus de l'évaluation, vous pouvez toujours voir les informations descriptives du JobAssertion, parmi lesquelles la description que vous avez saisie dans les Basic settings du tAssert.

Effectuez ensuite quelques opérations pour que le Job principal ne puisse générer le fichier attendu. Pour ce faire, procédez comme suit :

  • Effacez une ligne de votre fichier reference.csv.

  • Appuyez sur F6 pour exécuter votre Job à nouveau.

  • Vérifiez les résultats retournés dans la vue Run.

    2010-02-01 19:47:43|GeHJNO|TASSERT|JobAssertion|tAssert_1|Failed|Test
    logically failed|The output file should be identical with the reference
    file

La console indique que le statut d'exécution du Job principal est Failed (a échoué). L'explication détaillée suit peu après, Test logically failed (échec logique du test).

Vous pouvez avoir une idée du statut de votre Job : il a échoué lors de la génération du fichier attendu à cause d'un échec logique. Cet échec logique peut provenir d'une erreur logique lors de la création du Job.

Le statut et ses explications sont présentés respectivement dans les colonnes de statut et de sous-statut du schéma du tAssertCatcher. Pour plus d'informations à propos de cette colonne, consultez tAssertCatcher.