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>'
  ));
Copy

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>'
  )));
Copy