Utilisation des fonctions de métrique des données pour effectuer des contrôles de qualité des données

Ce sujet explique comment associer une fonction de métrique des données (DMF) à une table ou à une vue afin qu’elle effectue un contrôle de la qualité des données à intervalles réguliers. Il décrit également comment appeler directement une DMF, par exemple si vous souhaitez tester une DMF avant de l’associer à une table ou à une vue.

Association d’une DMF pour automatiser les contrôles de qualité des données

Vous pouvez associer une DMF à une table ou à une vue pour l’appeler automatiquement à intervalles réguliers. Lorsque vous associez une DMF, vous spécifiez les colonnes qui sont transmises à la DMF en tant qu’arguments.

L’association d’une DMF à une table ou à une vue pour automatiser les contrôles de qualité des données se fait en deux étapes :

  1. Définissez une planification sur la table ou la vue qui détermine la fréquence d’exécution de DMFs. Vous devez établir la planification avant d’associer une DMF à la table ou à la vue.

  2. Associez la DMF à la table ou à la vue.

Planification de l’exécution de la DMF

Vous pouvez planifier l’exécution de DMFs pour automatiser les mesures de qualité des données sur une table.

Snowflake utilise le rôle de propriétaire de la table, qui est le rôle disposant du privilège OWNERSHIP sur la table, pour appeler la DMF planifiée. Le rôle de propriétaire de la table doit disposer de ces attributions :

  • Le privilège USAGE sur la DMF définie par l’utilisateur et le privilège USAGE sur la base de données et le schéma qui stockent la DMF définie par l’utilisateur.

  • Le rôle de base de données DATA_METRIC_USER si la DMF est une DMF système.

  • Le privilège EXECUTE DATA METRIC FUNCTION sur le compte.

Le paramètre d’objet DATA_METRIC_SCHEDULE d’une table, d’une vue ou d’une vue matérialisée vous permet de planifier l’exécution de vos DMFs. Toutes les fonctions de métrique des données de la table ou de la vue suivent la même planification.

Il existe trois façons de planifier l’exécution de votre DMF :

  • Définissez la DMF pour qu’elle s’exécute après un certain nombre de minutes.

  • Utilisez une expression cron pour planifier l’exécution de la DMF à une fréquence particulière.

  • Utilisez un déclencheur pour planifier l’exécution de DMF en cas de modification d’une DML dans la table, par exemple l’insertion d’une nouvelle ligne dans la table. Cependant :

Par exemple :

Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute toutes les 5 minutes :

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute tous les jours à 8:00 AM :

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Copy

Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute à 8:00 AM les jours de la semaine uniquement :

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Copy

Réglez la planification de la fonction de métrique des données de sorte qu’elle s’exécute trois fois par jour à 06:00, 12:00, et 18:00 UTC :

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Copy

Réglez la fonction de métrique des données de sorte qu’elle s’exécute lorsqu’une opération DML générale telle que l’insertion d’une nouvelle ligne modifie la table :

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Copy

Vous pouvez utiliser la commande SHOW PARAMETERS pour visualiser la planification d’une DMF pour un objet de table pris en charge.

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;
Copy
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| key                  | value                          | default | level | description                                                                                                                  | type   |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC |         | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+

Pour les objets de vue et de vue matérialisée, indiquez TABLE comme domaine d’objet et vérifiez la planification comme suit :

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Copy

Note

Il y a un délai de 10 minutes entre le moment où vous modifiez la DMF d’une table et le moment où les changements de planification prennent effet sur les DMFs précédentes attribuées à la table. Cependant, les nouvelles affectations de DMF ne sont pas soumises au délai de 10 minutes. Planifiez soigneusement les opérations de planification de DMF et de suppression de DMF afin de les aligner sur les coûts de DMF prévus.

De plus, lorsque vous évaluez les résultats de DMF, par exemple en interrogeant la vue DATA_QUALITY_MONITORING_RESULTS, spécifiez la colonne measurement_time de votre requête comme base pour l’évaluation. Il existe un processus interne qui initie l’évaluation de DMF, et des mises à jour de table, comme les opérations INSERT, peuvent survenir entre l’heure programmée et l’heure de la mesure. Lorsque vous utilisez la colonne measurement_time, vous avez une évaluation plus précise des résultats de DMF, car l’heure de la mesure indique l’heure d’évaluation de la DMF.

Association de la DMF à une table

Vous utilisez une commande ALTER TABLE ou ALTER VIEW pour associer une DMF et spécifier les colonnes qui sont transmises en tant qu’arguments. Par exemple, la commande suivante associe la DMF NULL_COUNT système à la table t. Lorsque la DMF s’exécute, elle renvoie le nombre de valeurs NULL dans la colonne c1.

ALTER TABLE t
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT
    ON (c1);
Copy

Note

Utilisez la commande ALTER VIEW pour ajouter une DMF dans une colonne de vue matérialisée ou pour supprimer une DMF d’une colonne de vue matérialisée.

Supprimer une DMF à partir d’un objet

Vous pouvez supprimer une DMF à l’aide d’une commande ALTER TABLE ou ALTER VIEW. Par exemple :

ALTER TABLE t
  DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
    ON (c1, c2, c3);
Copy

Appeler manuellement une DMF

L’appel direct à une DMF peut être utile pour tester la sortie de la DMF avant de l’associer à une table ou à une vue.

Utilisez la syntaxe suivante pour appeler une DMF :

SELECT <data_metric_function>(<query>)
Copy

Où :

data_metric_function

Spécifie une DMF définie par le système ou par l’utilisateur.

query

Spécifie une requête SQL sur une table ou une vue.

Les colonnes projetées par la requête doivent correspondre aux arguments des colonnes dans la signature de la DMF.

Note

Les DMFs du système suivant ne respectent pas cette syntaxe, car elles ne prennent aucun argument :

Par exemple, pour appeler une DMF count_positive_numbers personnalisée, qui accepte trois colonnes comme arguments, exécutez ce qui suit :

SELECT governance.dmfs.count_positive_numbers(
  SELECT c1, c2, c3
  FROM t);
Copy

Par exemple, pour appeler le NULL_COUNT (fonction de métrique des données système) système DMF afin de voir le nombre de valeurs NULL dans la colonne ssn, exécutez ce qui suit :

SELECT SNOWFLAKE.CORE.NULL_COUNT(
  SELECT ssn
  FROM hr.tables.empl_info);
Copy