Détection des anomalies dans la qualité des données

Le renvoi d’une valeur à partir d’une fonction de métrique des données (DMF) fournit des informations utiles, mais il peut être difficile de savoir si cela indique un problème de qualité des données. Vous pouvez définir une attente si vous savez quelle est la valeur acceptable, mais il peut être difficile de définir suffisamment de règles manuelles pour identifier tous les problèmes possibles de qualité des données.

Comme solution, Snowflake fournit un algorithme capable de détecter les anomalies dans les valeurs renvoyées par une DMF. Snowflake entraîne cet algorithme avec des données historiques, puis identifie automatiquement les valeurs de retour qui sont supérieures ou inférieures à une plage prédite.

Vous pouvez activer la détection des anomalies pour les DMFs système suivantes :

  • ROW_COUNT — Pour identifier les anomalies dans le volume de données d’une table.

  • FRESHNESS — Pour identifier les anomalies dans la fréquence de mise à jour d’une table.

L’exemple suivant montre comment activer la détection des anomalies pour l’association entre la DMF ROW_COUNT et la table t1 :

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;
Copy

Snowflake entraîne l’algorithme, puis commence automatiquement à identifier les anomalies dans le volume de la table t1.

À propos de la période d’entraînement

Lorsque vous activez la détection des anomalies, Snowflake entraîne l’algorithme de détection des anomalies sur les données historiques. La durée de la période d’entraînement dépend de la fréquence à laquelle la DMF s’exécute.

  • Pour les DMFs qui s’exécutent fréquemment, Snowflake a besoin d’au moins deux semaines de données DMF pour commencer à détecter les anomalies. Cette période de deux semaines est essentielle pour établir la saisonnalité hebdomadaire. Si la DMF s’exécute depuis plus longtemps, Snowflake entraîne l’algorithme sur un maximum de 60 jours de données. Cette période d’entraînement plus longue établit une saisonnalité mensuelle et augmente la précision. Snowflake recommande de laisser l’algorithme s’entraîner sur 60 jours de données afin de détecter les anomalies avec un haut degré de fiabilité.

  • Pour les DMFs qui s’exécutent peu souvent ou selon une planification basée sur des déclencheurs, Snowflake doit disposer d’au moins deux points de données pour entraîner l’algorithme. Par exemple, si une DMF s’exécute tous les mois, Snowflake examine les deux mois précédents pour entraîner l’algorithme.

Vous pouvez déterminer si Snowflake est encore dans la période d’entraînement en exécutant la fonction DATA_METRIC_FUNCTION_REFERENCES. Si la détection des anomalies a été activée, mais que l’algorithme est toujours en cours d’entraînement, la colonne anomaly_detection_status de la sortie contient la valeur TRAINING_IN_PROGRESS.

Activer la détection des anomalies

Vous pouvez activer la détection des anomalies pour une association de DMF lorsque vous associez pour la première fois la DMF à un objet, ou plus tard.

Exemple : Activer la détection des anomalies lors de l’association d’une DMF

Pour activer la détection des anomalies lors de l’association d’une DMF FRESHNESS avec la vue v1, exécutez la commande suivante :

ALTER VIEW v1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON (c_timestamp)
    ANOMALY_DETECTION = TRUE;
Copy
Exemple : Activer la détection des anomalies pour une association existante

Pour activer la détection des anomalies pour une association existante entre la DMF ROW_COUNT et la table t1, exécutez la commande suivante :

ALTER TABLE t1
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET ANOMALY_DETECTION = TRUE;
Copy

Ajuster le niveau de sensibilité de la détection des anomalies

Après avoir activé la détection des anomalies, vous pouvez suivre le nombre d’anomalies qui se produisent dans votre compte. Si le nombre d’anomalies semble trop faible ou trop élevé, vous pouvez ajuster le niveau de sensibilité de l’algorithme de détection des anomalies.

  • S’il y a trop de faux positifs (c’est-à-dire des valeurs identifiées par erreur comme des anomalies), vous pouvez modifier la sensibilité sur LOW afin de détecter moins d’anomalies.

  • S’il y a trop de faux négatifs (c’est-à-dire des valeurs qui n’ont pas été identifiées comme des anomalies, mais qui le sont réellement), vous pouvez modifier la sensibilité sur HIGH pour détecter davantage d’anomalies.

Le niveau de sensibilité par défaut est MEDIUM.

Par exemple, pour augmenter la sensibilité d’une association de DMF qui trouve les anomalies dans le volume de la table t1, exécutez la commande suivante :

ALTER TABLE t1
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET SENSITIVITY = 'HIGH';
Copy

Désactiver la détection des anomalies

Vous pouvez désactiver la détection des anomalies pour une association de DMF à tout moment à l’aide d’une instruction ALTER pour modifier l’objet.

Par exemple, pour désactiver la détection d’anomalies pour l’association entre la DMF ROW_COUNT et la table t1, exécutez la commande suivante :

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

Identifier les anomalies

Vous pouvez identifier les anomalies à l’aide des éléments suivants :

SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW

Les résultats en matière de qualité des données sont enregistrés dans le tableau des événements dédié SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW.

Si la détection des anomalies est activée pour une association de DMF, deux lignes sont ajoutées à la table chaque fois que Snowflake calcule le résultat de la DMF. La première ligne enregistre des informations sur l’objet avec lequel la DMF est associée, la DMF elle-même, et le résultat du contrôle de qualité des données. La deuxième ligne enregistre des informations relatives à la détection des anomalies.

Le champ snow.data_metric.record_type`dans la colonne :code:`record_attribute indique si une ligne correspond à une détection d’anomalies. Ce champ a deux valeurs possibles :

  • ANOMALY_DETECTION_STATUS : indique que la ligne correspond à une détection d’anomalies.

  • EVALUATION_RESULT : indique que la ligne correspond à l’évaluation de la DMF.

Identification d’une anomalie

Après avoir déterminé qu’une ligne de la table des événements correspond à une détection d’anomalies, vous pouvez consulter le champ snow.data_metric.evaluation_result de la colonne resource_attribute pour déterminer s’il y a eu une anomalie.

Ce champ contient une VARIANT qui contient la valeur renvoyée par la DMF et une valeur BOOLEAN indiquant si cette valeur était une anomalie. Par exemple, si la valeur du champ snow.data_metric.evaluation_result est 5, TRUE, alors la valeur retournée était 5 et Snowflake l’a identifiée comme une anomalie.

Champs supplémentaires

Si la ligne de la table des événements correspond à une détection d’anomalies, la colonne resource_attribute contient également les champs suivants :

  • snow.data_metric.upper_bound — Valeur la plus élevée qui doit être renvoyée par la DMF basée sur l’algorithme de détection des anomalies. Si la valeur renvoyée par la DMF est au-dessus de cette limite supérieure, il s’agit d’une anomalie.

  • snow.data_metric.lower_bound — Valeur la plus faible qui doit être renvoyée par la DMF basée sur l’algorithme de détection des anomalies. Si la valeur renvoyée par la DMF est en dessous de cette limite inférieure, il s’agit d’une anomalie.

  • snow.data_metric.forecast — Valeur que l’algorithme de détection des anomalies a prédit serait renvoyée par la DMF.

Vue DATA_QUALITY_MONITORING_ANOMALY_DETECTION

La vue Vue DATA_QUALITY_MONITORING_ANOMALY_DETECTION, qui existe dans le schéma SNOWFLAKE.LOCAL, aplatit les informations de la table des événements afin de faciliter l’accès aux résultats de la DMF.