CustomSQL
Ce type de règle a été étendu pour prendre en charge deux cas d’utilisation :
Exécutez une instruction SQL personnalisée sur un jeu de données et compare la valeur renvoyée à une expression donnée.
Exécutez une instruction SQL personnalisée dans laquelle vous spécifiez un nom de colonne dans votre instruction SELECT, que vous comparez à une certaine condition pour obtenir des résultats au niveau des lignes.
Syntaxe
CustomSql<SQL_STATEMENT><EXPRESSION>
SQL_STATEMENT – Instruction SQL qui renvoie une valeur numérique unique, entourée de guillemets doubles.
EXPRESSION – Expression à exécuter en fonction de la réponse du type de règle afin de produire une valeur booléenne. Pour plus d’informations, consultez Expressions.
Exemple : SQL personnalisé pour récupérer le résultat global d’une règle
Cet exemple de règle utilise une instruction SQL pour récupérer le nombre d’enregistrements d’un jeu de données. La règle vérifie ensuite que le nombre d’enregistrements est compris entre 10 et 20.
CustomSql "select count(*) from primary" between 10 and 20
Exemple : SQL personnalisé pour récupérer les résultats au niveau des lignes
Cet exemple de règle utilise une instruction SQL dans laquelle vous spécifiez un nom de colonne dans votre instruction SELECT, que vous comparez à une certaine condition pour obtenir des résultats au niveau des lignes. Une expression de condition de seuil définit le nombre d’enregistrements qui doivent échouer pour que l’ensemble de la règle échoue. Notez qu’une règle ne peut pas contenir à la fois une condition et un mot clé.
CustomSql "select Name from primary where Age > 18"
or
CustomSql "select Name from primary where Age > 18" with threshold > 3
Important
L’alias primary est le nom du jeu de données que vous souhaitez évaluer. Lorsque vous utilisez des tâches ETL visuelles sur la console, primary représente toujours le DynamicFrame qui est transmis à la transformation EvaluateDataQuality.apply(). Lorsque vous utilisez le catalogue de données AWS Glue pour exécuter des tâches liées à la qualité des données sur une table, primary représente la table.
Si vous êtes dans le catalogue AWS Glue, vous pouvez également utiliser les noms de table réels :
CustomSql "select count(*) from database.table" between 10 and 20
Vous pouvez également joindre plusieurs tables pour comparer différents éléments de données :
CustomSql "select count(*) from database.table inner join database.table2 on id1 = id2" between 10 and 20
Dans AWS Glue ETL, l’utilisation de CustomSQL permet d’identifier les enregistrements qui ont échoué aux contrôles de qualité des données. Pour que cela fonctionne, vous devez renvoyer les enregistrements qui font partie de la table principale pour laquelle vous évaluez la qualité des données. Les enregistrements renvoyés dans le cadre de la requête sont considérés comme réussis et les enregistrements non renvoyés sont considérés comme ayant échoué. Cela fonctionne en joignant le résultat de votre requête CustomSQL au jeu de données d’origine. La complexité de votre requête SQL peut avoir des répercussions sur les performances.
Pour cela :
-
Vous devez sélectionner au moins une colonne dans votre table principale.
-
select count(*) from primaryest une requête valide pour la règle OVERALL CustomSQL DQ, mais pas pour le SQL personnalisé au niveau des lignes. -
Cette règle va générer une erreur lors de l’évaluation :
The output from CustomSQL must contain at least one column that matches the input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but the columns from the SQL result are not present in the Input Dataset. Ensure that matching columns are returned from the SQL.
-
-
Dans votre requête SQL, sélectionnez une « clé primaire » dans votre table ou sélectionnez un ensemble de colonnes qui forment une clé composite. À défaut, vous risquez d’obtenir des résultats incohérents en raison de la correspondance de lignes dupliquées et d’une dégradation des performances.
-
Sélectionnez les clés UNIQUEMENT dans votre table principale et non dans vos tables de référence.
La règle suivante permet de s’assurer que les enregistrements dont l’âge est inférieur à 100 sont identifiés comme réussis et que les enregistrements dont l’âge est supérieur sont marqués comme échoués.
CustomSql "select id from primary where age < 100"
Cette règle CustomSQL sera validée si 50 % des enregistrements ont un âge supérieur à 10 et identifiera également les enregistrements qui ont échoué. Les enregistrements renvoyés par cette règle CustomSQL seront considérés comme réussis, tandis que ceux non renvoyés seront considérés comme ayant échoué.
CustomSQL "select ID, CustomerID from primary where age > 10" with threshold > 0.5
Remarque : la règle CustomSQL échoue si vous renvoyez des enregistrements qui ne sont pas disponibles dans le jeu de données.