Accéder au contenu principal Passer au contenu complémentaire

Créer une analyse de table avec une règle métier SQL comprenant une condition de jointure

Pourquoi et quand exécuter cette tâche

Dans certains cas, vous devez analyser des tables ou des vues de bases de données à l'aide d'une règle métier SQL comprenant une clause de jointure combinant des enregistrements de deux tables d'une base de données. Cette clause de jointure compare les valeurs communes à deux colonnes et donne un jeu de données de résultat. Ces données sont ensuite analysées par rapport à la règle métier.

Selon les données analysées et la clause de jointure, différents résultats de jointure sont possibles, par exemple #match + #no match > #row count,  #match + #no match < #row count ou #match + #no match = #row count.

L'exemple ci-dessous explique en détail un cas où le jeu de données dans le résultat de la jointure est plus volumineux que le nombre de lignes (#match + #no match > #row count), ce qui indique que les données traitées contiennent des doublons.

Prérequis :
  • Au moins une règle métier SQL doit avoir été créée dans la perspective Profiling du Studio Talend.
  • Au moins une connexion à une base de données doit avoir été définie dans la perspective Profiling du Studio Talend.

Dans cet exemple, ajoutez la règle métier SQL créée dans la Créer une règle métier SQL à une table Person contenant les colonnes age et name. Cette règle métier SQL va mettre en correspondance l'âge des clients afin de définir ceux dont l'âge est supérieur à 18. La règle métier possède également une condition de jointure comparant la valeur "name" des tables Person et Person_Ref en analysant la colonne name commune.

Voici une capture d'écran des deux tables :
Exemple de tables utilisées dans la procédure.
Voici une capture d'écran du résultat de la condition de jointure entre les deux tables :
Résultats de la condition de jointure entre les deux tables.

L'ensemble de résultats peut présenter des lignes en doublon, comme c'est le cas dans cet exemple. Dans ce cas, les résultats de l'analyse sont plus difficiles à comprendre. L'analyse n'analyse pas les lignes de la table répondant à la règle métier mais est exécutée sur l'ensemble de résultats donnés par la règle métier.

Procédure

  1. Configurez l'analyse de table et sélectionnez la table que vous souhaitez analyser.
    La table sélectionnée s'affiche dans la vue Analyzed Tables.
    Vue d'ensemble de la section Analyzed Tables (Tables analysées) dans l'onglet Analysis Results (Résultats d'analyse).
  2. Pour ajouter la règle métier contenant la condition de jointure à la table sélectionnée, cliquez sur l'icône Add rule (Ajouter une règle) à côté du nom de la table.
    Cette règle métier possède une condition de jointure comparant la valeur du nom ("name") de deux tables différentes en analysant une colonne commune.
  3. Sauvegardez l'analyse et appuyez sur F6 pour l'exécuter.

    L'éditeur d'analyse passe à la vue Analysis Results.

    Graphiques indiquant des valeurs qui correspondent et des valeurs qui ne correspondent pas, en fonction de la règle métier.

    Tous les enregistrements d'âges de la table sélectionnée sont évalués par rapport à la règle métier SQL définie. Les résultats d'analyse comprennent deux diagrammes en barres : le premier est un indicateur de compte de lignes affichant le nombre de lignes dans la table analysée et le second est un indicateur de correspondance et non correspondance indiquant les enregistrements d'âge de l'ensemble de résultats analysés ne correspondant pas aux critères (âge inférieur à 18).

    Note InformationsRemarque : Si une condition de jointure est utilisée dans la règle métier SQL, le nombre de lignes de la jointure (#Match + #No Match) peut être différent du nombre des lignes analysées (Row Count).
  4. Cliquez-droit sur la ligne Row Count de la première table et sélectionnez View rows.

    L'éditeur SQL s'ouvre dans le Studio Talend pour afficher une liste de lignes analysées.

    Liste des lignes analysées dans l'éditeur SQL.
  5. Cliquez-droit sur les résultats de la règle métier dans la seconde table, ou cliquez-droit sur la barre du diagramme.
  6. Sélectionnez l'option :
    Option Description
    View valid rows (Voir les lignes valides) Accéder à une liste dans l'éditeur SQL de toutes les lignes valides par rapport au modèle utilisé sur la table sélectionnée.
    View invalid rows (Voir les lignes invalides) Accéder à une liste dans l'éditeur SQL de toutes les lignes invalides par rapport au modèle utilisé dans la table sélectionnée.
    Analyze duplicates (Analyser les doublons) Générer une analyse prête à utiliser analysant les doublons d'une table, s'il y en a, et donnant le nombre de lignes et de doublons.
    Generate Job (Générer un Job) Générer un Job utilisant le processus ELT (Extract Load Transform) pour écrire les lignes valides ou invalides de la table analysées dans un fichier de sortie. Cette option est disponible pour les connexions Microsoft SQL Server, MySQL, Oracle et PostgreSQL.

    Ci-dessous se trouve la liste des lignes invalides dans la table analysée.

    Liste des lignes invalides dans l'éditeur SQL.
  7. Dans l'éditeur SQL, cliquez sur l'icône de sauvegarde dans la barre d'outils afin de sauvegarder la requête exécutée sur la règle métier SQL et la lister dans le dossier Libraries > Source Files de la vue DQ Repository.
  8. Afin de mieux comprendre le diagramme en barre Business Rule Statistics dans les résultats d'analyse, procédez comme suit :
    1. Dans l'éditeur d'analyse, cliquez-droit sur la règle métier et sélectionnez View executed query.
      Menu contextuel d'une règle métier dans la section Analyzed Tables (Tables analysées).

      L'éditeur SQL s'ouvre dans le Studio Talend.

      Vue d'ensemble de l'éditeur SQL.
    2. Modifiez la requête dans la partie supérieure de l'éditeur afin d'obtenir : SELECT * FROM `my_person_joins`.`person` Person JOIN `my_person_joins`.`Person_ref` Person_ref ON (Person.`name`=Person_ref.`Name`).
      Cela permet de lister le jeu de données de résultat de la condition de jointure dans l'éditeur.
    3. Dans le coin supérieur gauche de l'éditeur, cliquez sur l'icône Execute SQL (Exécuter le SQL) pour exécuter la requête.

      Le résultat de la requête, l'ensemble des résultats analysés, est listé dans la partie inférieure de l'éditeur.

    4. Retournez dans l'éditeur d'analyse, cliquez sur l'onglet Analysis Results au bas de l'éditeur pour ouvrir une vue détaillée des résultats d'analyse.
      Vue détaillée des résultats d'analyse pour une table spécifique.

      L'ensemble des résultats analysés peut contenir plus ou moins de lignes que la table analysée. Dans cet exemple, le nombre d'enregistrements correspondant et ne correspondant pas (5 + 2 = 7) dépasse le nombre d'enregistrements analysés (6) car la jointure des deux tables génère plus de lignes que prévu.

      Ici, cinq lignes (71.43%) correspondent à la règle métier et deux ne correspondent pas. Comme la jointure génère des lignes en doublon, ce résultat ne signifie pas que cinq lignes de la table analysée correspondent à la règle métier. Cela signifie que cinq lignes parmi les sept de l'ensemble de résultats correspondent à la règle métier. Certaines lignes des tables analysées peuvent même ne pas avoir été analysées par rapport à la règle métier. Cela arrive lorsque la jointure exclut ces lignes. Ainsi, il est recommandé de rechercher les doublons dans les colonnes utilisées pour la jointure de la règle métier, afin de vous assurer que la jointure ne supprime pas de ligne ou n'en ajoute pas dans l'ensemble de résultats analysés. Sinon, l'interprétation des résultats peut s'avérer plus complexe.

      Dans la vue Analysis Results, si le nombre d'enregistrements correspondant et ne correspondant pas dépasse le nombre d'enregistrements analysés, vous pouvez générer une analyse prête à l'emploi pour analyser les doublons dans la table sélectionnée.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.