Contrôler la qualité des données d’un schéma

Lorsqu’une fonction de métrique des données (DMF) est associée à une table ou à une vue, la DMF s’exécute à intervalles réguliers et renvoie une valeur qui donne un aperçu de la qualité des données.

Vous pouvez désormais utiliser une seule instruction SQL pour configurer un schéma, de sorte que tous les objets dans le schéma soient associés à la même DMF. Vous pouvez associer les DMFs système suivantes au niveau du schéma :

  • ROW_COUNT : à utiliser pour renvoyer des informations sur le volume de données dans les objets à l’intérieur du schéma.

  • FRESHNESS : à utiliser pour renvoyer des informations sur la fréquence de mise à jour des objets à l’intérieur du schéma.

Lorsque vous associez l’une de ces DMFs au niveau du schéma, vous pouvez spécifier que vous voulez que Snowflake détermine si des anomalies existent dans le volume ou le niveau d’actualisation d’une table ou d’une vue au fil du temps.

L’exemple suivant montre comment activer la détection des anomalies pour l’association entre la DMF ROW_COUNT et chaque objet dans le schéma my_schema :

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

Snowflake entraîne l’algorithme de détection des anomalies, puis commence automatiquement à identifier les anomalies dans le volume des tables et des vues dans le schéma my_schema.

Ajouter une DMF à un schéma

Lorsque vous associez une DMF à un schéma, tous les objets à l’intérieur du schéma sont associés à la DMF.

Syntaxe

Utilisez la syntaxe suivante pour ajouter une DMF à un schéma.

ALTER SCHEMA <name>
  ADD DATA METRIC FUNCTION { SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()
    [ ANOMALY_DETECTION = { TRUE | FALSE } ]
    [ EXCLUDE_TABLE_TYPES = ( '<object_type>' [ , '<object_type>' ... ] ) ]

Arguments

{ SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()

Associe la DMF système à des objets à l’intérieur du schéma.

Les valeurs possibles sont SNOWFLAKE.CORE.ROW_COUNT et SNOWFLAKE.CORE.FRESHNESS.

ANOMALY_DETECTION = { TRUE | FALSE }

Si TRUE, Snowflake utilise un algorithme pour détecter les anomalies dans les valeurs renvoyées par la DMF. Snowflake détecte les anomalies dans chaque objet, et non dans l’ensemble du schéma.

Par défaut : FALSE

EXCLUDE_TABLE_TYPES = ( 'object_type', 'object_type' ... )

Exclut tous les objets du type spécifié ; Snowflake ne crée pas d’associations entre la DMF et ces objets. Les valeurs possibles sont les suivantes :

  • 'DYNAMIC_TABLE'

  • 'EVENT_TABLE'

  • 'EXTERNAL_TABLE'

  • 'ICEBERG_TABLE'

  • 'MATERIALIZED_VIEW'

  • 'TABLE'

  • 'VIEW'

Pour exclure un objet spécifique, et non tous les objets d’un certain type, vous pouvez remplacer l’association de la DMF au niveau de l’objet.

Exemples

Associez la DMF FRESHNESS à tous les objets dans un schéma :

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON ();

Associez la DMF ROW_COUNT à tous les objets dans un schéma et activez la détection des anomalies pour ces associations :

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

Associez la DMF ROW_COUNT à des tables à l’intérieur d’un schéma, mais ne l’associez pas à des vues et à des vues matérialisées :

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    EXCLUDE_TABLE_TYPES=('VIEW', 'MATERIALIZED_VIEW');

Remplacement des paramètres au niveau de l’objet

Lorsque vous ajoutez une DMF au niveau du schéma, Snowflake crée une association au niveau de l’objet entre chaque objet dans le schéma et la DMF. Vous pouvez remplacer cette association au niveau de l’objet si vous voulez modifier la façon dont la DMF s’exécute sur l’objet.

Supposons que vous ayez activé la détection des anomalies lorsque vous avez ajouté la DMF ROW_COUNT à my_schema. Si vous ne voulez pas que Snowflake détecte les anomalies dans la table my_schema.employees, alors exécutez la commande suivante :

ALTER TABLE employees
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET ANOMALY_DETECTION = FALSE;

Vous pouvez également supprimer l’association d’un objet spécifique si vous voulez arrêter l’exécution de la DMF. Par exemple, si vous voulez que la DMF ROW_COUNT arrête de s’exécuter sur la table my_schema.employees, exécutez la commande suivante :

ALTER TABLE employees
  DROP DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ();

Vous pouvez également remplacer la planification au niveau du schéma pour modifier la fréquence à laquelle une DMF s’exécute pour un objet particulier. Pour plus d’informations sur le paramétrage de la planification au niveau de l’objet, consultez Ajuster la planification pour les DMFs.

Ajustement de la planification d’exécution

Par défaut, la planification de la métrique des données pour un schéma est de 60 minutes ; la DMF s’exécute sur chaque objet du schéma toutes les heures. Vous pouvez modifier cette valeur par défaut au niveau du schéma ou la remplacer au niveau de l’objet.

Utilisez la commande suivante pour contrôler la fréquence à laquelle les DMFs s’exécutent sur des objets d’un schéma :

ALTER SCHEMA <name> SET DATA_METRIC_SCHEDULE = '<schedule>';

Les valeurs possibles pour schedule sont les mêmes au niveau du schéma qu’au niveau de l’objet. Pour afficher les valeurs possibles, consultez ALTER TABLE …SET DATA_METRIC_SCHEDULE.

La planification que vous définissez au niveau du schéma contrôle la fréquence à laquelle la DMF s’exécute sur chaque objet, sauf si vous le remplacez pour des tables ou des vues spécifiques. Pour plus d’informations sur le paramétrage de la planification au niveau de l’objet, consultez Ajuster la planification pour les DMFs.

Suspension de DMFs

La syntaxe pour suspendre et reprendre une DMF associée au niveau du schéma est la même que la syntaxe pour les associations au niveau de la table. Par exemple, pour suspendre la DMF ROW_COUNT qui est associée au schéma my_schema, exécutez la commande suivante :

ALTER SCHEMA my_schema
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SUSPEND;

Détermination des associations définies au niveau du schéma

Vous pouvez utiliser la vue et la fonction suivantes pour déterminer quels objets sont associés à une DMF :

La vue et la sortie de la fonction contiennent une colonne level, qui possède les valeurs possibles suivantes :

  • TABLE : quelqu’un a associé directement la DMF à l’objet.

  • SCHEMA : quelqu’un a ajouté directement la DMF au schéma, ce qui a créé l’association entre l’objet et la DMF.

Suivi des associations au niveau du schéma

Vous pouvez appeler la fonction DATA_METRIC_FUNCTION_REFERENCES pour déterminer quelles DMFs ont été ajoutées à un schéma. Par exemple, pour voir quelles DMFs ont été ajoutées au schéma db1.my_schema, exécutez la commande suivante :

SELECT *
  FROM TABLE(
    INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
      REF_ENTITY_NAME => 'db1.my_schema',
      REF_ENTITY_DOMAIN => 'schema'
    )
  );

Exigences en matière de contrôle d’accès

Pour ajouter une DMF à un schéma, vous devez disposer des privilèges de contrôle d’accès et des rôles suivants :

  • OWNERSHIP sur le schéma.

  • MANAGE DATA QUALITY sur le compte.

  • EXECUTE DATA METRIC FUNCTION sur le compte.

  • Rôle de base de données SNOWFLAKE.DATA_METRIC_USER

Snowflake n’exécutera pas la DMF à moins que le propriétaire du schéma ne conserve le privilège MANAGE DATA QUALITY sur le compte.

Pour exécuter correctement la DMF sur un objet du schéma, le propriétaire de l’objet doit disposer des mêmes privilèges que ceux requis pour associer la DMF à cet objet. Pour obtenir la liste de ces privilèges, consultez Exigences en matière de contrôle d’accès.

Considérations et limites

  • La DMF FRESHNESS nécessite un argument de colonne pour les vues et les tables externes. Ainsi, si vous ajoutez la DMF FRESHNESS à un schéma, Snowflake ignore les vues et les tables externes lorsqu’il associe la DMF aux objets dans le schéma.

  • Vous ne pouvez pas définir une planification basée sur des déclencheurs au niveau du schéma.