Correction des problèmes de qualité des données¶
Les métriques de qualité des données (DMFs) vous permettent d’identifier le nombre d’enregistrements dans une table pouvant contenir des problèmes de qualité. Par exemple, SNOWFLAKE.CORE.NULL_COUNT peut identifier le nombre d’enregistrements contenant une valeur NULL dans une colonne spécifique.
Pour vous aider à résoudre ces éventuels problèmes de qualité, vous pouvez appeler la fonction système SYSTEM$DATA_METRIC_SCAN pour renvoyer les enregistrements individuels identifiés par le DMF comme contenant des données qui ont échoué à un contrôle de qualité des données. Par exemple, si vous transférez NULL_COUNT DMF dans la fonction SYSTEM$DATA_METRIC_SCAN comme argument, vous pouvez alors obtenir les enregistrements réels qui contiennent une valeur NULL, et pas seulement le nombre d’enregistrements qui contiennent une valeur NULL.
DMFs pris en charge¶
La fonction SYSTEM$DATA_METRIC_SCAN accepte un DMF comme argument pour renvoyer les enregistrements identifiés par le DMF comme contenant des données problématiques. Les DMFs suivants du système peuvent être utilisés comme arguments :
SNOWFLAKE.CORE.NULL_COUNT
SNOWFLAKE.CORE.NULL_PERCENT
SNOWFLAKE.CORE.BLANK_COUNT
SNOWFLAKE.CORE.BLANK_PERCENT
SNOWFLAKE.CORE.DUPLICATE_COUNT
Limites et considérations¶
Vous ne pouvez pas utiliser des DMFs personnalisés comme argument de la fonction SYSTEM$DATA_METRIC_SCAN.
Si une table est protégée par une politique, telle qu’une politique de masquage ou une politique d’accès aux lignes, la fonction SYSTEM$DATA_METRIC_SCAN peut renvoyer des données inattendues ou incomplètes car les résultats dépendent du rôle de l’utilisateur lors de l’exécution de la fonction.
Appel de la fonction SYSTEM$DATA_METRIC_SCAN¶
Lorsque vous appelez la fonction SYSTEM$DATA_METRIC_SCAN, elle analyse une table avec un DMF pour identifier d’éventuels problèmes de qualité des données. Vous devez transférer les arguments suivants à la fonction SYSTEM$DATA_METRIC_SCAN : le nom de la table, le DMF, et tous les arguments transférés au DMF pour permettre d’identifier les enregistrements problématiques. Par exemple, étant donné que la fonction de métrique du système SNOWFLAKE.CORE.NULL_COUNT renvoie le nombre total de valeurs NULL dans une colonne particulière, ce qui suit renvoie les lignes de la table employeesTable
qui ont des valeurs NULL dans la colonne SSN
dans la version de la table qui existait à un moment précis dans le passé.
SELECT *
FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => '<governance.sch.employeesTable>'
,METRIC_NAME => '<snowflake.core.null_count>'
,ARGUMENT_NAME => '<SSN>'
,AT_TIMESTAMP => '<2024-08-28 02:00:00 -0700>'
));
Pour vérifier les résultats d’une évaluation de DMF sur la table ou la vue dans le passé, vous pouvez transférer l’argument AT_TIMESTAMP. L’argument AT_TIMESTAMP vous permet d’utiliser Time Travel pour convertir la chaîne d’horodatage afin de renvoyer uniquement les enregistrements qui existaient dans la table à l’horodatage « 2024-08-28 02:00:00 -0700 ».
Utilisation de la fonction SYSTEM$DATA_METRIC_SCAN pour corriger les données¶
La fonction SYSTEM$DATA_METRIC_SCAN est une fonction de table qui renvoie un ensemble de lignes. La sortie de la fonction peut être utilisée dans une instruction DML pour prendre des mesures concernant les enregistrements qui ont été identifiés comme contenant des données ayant échoué à un contrôle de qualité des données.
Supposons que vous souhaitiez remplacer des valeurs vides dans la colonne email
de la table t
par des valeurs NULL. Étant donné que la fonction de métrique des données BLANK_COUNT identifie les valeurs vides, vous pouvez exécuter l’instruction suivante :
UPDATE T
SET email = null
WHERE T.ID IN (SELECT ID FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => '<t>'
,METRIC_NAME => '<snowflake.core.blank_count>'
,ARGUMENT_NAME => '<email>'
)));