Envoi de notifications en cas de problèmes de qualité des données¶
Snowflake fournit les fonctionnalités suivantes, qui identifient lorsque la valeur renvoyée par une fonction de métrique des données (DMF) indique un problème de qualité des données :
Attentes : vous permet d’utiliser une expression booléenne pour comparer la sortie d’une DMF à une valeur attendue. Une valeur de retour qui ne correspond pas à l’expression booléenne est considérée comme une violation des attentes.
Détection des anomalies : Snowflake détecte automatiquement lorsque la sortie de la DMF constitue une anomalie. Une anomalie se produit lorsque la valeur renvoyée par une DMF est supérieure ou inférieure à une plage attendue sur la base des données historiques.
Vous pouvez utiliser une intégration de notification pour envoyer une notification lorsque l’une de ces fonctionnalités identifie un problème de qualité des données. Une fois Snowflake configuré, une notification est envoyée chaque fois qu’une attente est violée ou que Snowflake identifie une anomalie.
Vous activez les notifications au niveau de la base de données. Une fois celles-ci activées, tous les objets avec une DMF associée dans cette base de données génèrent des notifications en cas de problème de qualité. Dans une base de données qui est activée pour les notifications, vous pouvez désactiver les notifications pour une association spécifique entre un objet de la base de données et une DMF.
Workflow¶
La configuration de Snowflake pour envoyer des notifications en cas de problèmes de qualité des données comprend les tâches suivantes :
Octroyez des privilèges de contrôle d’accès au propriétaire de la base de données.
Modifiez la base de données pour activer les notifications et spécifier l’intégration de notification qui les enverra.
Pour découvrir un exemple de bout en bout de ce workflow, consultez Exemple étendu.
Créer une intégration de notification¶
Une intégration de notification est un objet Snowflake qui fournit une interface entre Snowflake et des services tiers de messages. Pour envoyer des notifications en cas de problèmes de qualité des données, créez une intégration de notification pour le service de messagerie. La surveillance de la qualité des données prend en charge les types de notifications suivants :
Notifications par e-mail
Notifications envoyées via des systèmes externes tels que Slack, à l’aide de webhooks.
Envoyer des notifications par e-mail¶
Pour envoyer des notifications à une liste d’adresses e-mail, exécutez une instruction CREATE NOTIFICATION INTEGRATION pour créer une intégration de type EMAIL. Votre intégration doit utiliser le paramètre ALLOWED_RECIPIENTS pour spécifier une liste d’adresses e-mail où les notifications sont envoyées. Vous ne pouvez ajouter que des adresses e-mail vérifiées. Pour plus d’informations sur la vérification d’une adresse e-mail, consultez Vérifier les adresses e-mail des destinataires de la notification par e-mail.
Astuce
Vous pouvez envoyer des notifications par e-mail à une liste ou à un groupe de distribution géré en dehors de Snowflake. Pour plus d’informations, consultez l’article de la base de connaissances associé.
Par exemple, pour créer une intégration de notification afin que l’utilisateur joe.smith@example.com puisse recevoir des e-mails en cas de problème de qualité des données, exécutez la commande suivante :
CREATE NOTIFICATION INTEGRATION my_email_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS = ('joe.smith@example.com');
Note
Les notifications par e-mail sont traitées par les déploiements de Snowflake sur Amazon Web Services (AWS), à l’aide de AWS Simple Email Service (SES). Le contenu d’un e-mail envoyé à l’aide d’AWS peut être conservé par Snowflake pendant un maximum de trente jours afin de gérer la livraison du message. Après cette période, le contenu du message est supprimé.
Envoyer des notifications à l’aide d’un webhook pour un système externe¶
Vous pouvez envoyer des notifications de qualité des données via un système externe en créant une intégration de webhook. Pour une liste des systèmes externes que vous pouvez utiliser, consultez Envoi de notifications webhook.
Pour utiliser des webhooks afin d’envoyer des notifications de qualité des données, procédez comme suit :
Par exemple, si vous souhaitez utiliser Slack pour envoyer des notifications, vous pouvez exécuter les commandes suivantes :
CREATE OR REPLACE SECRET my_slack_webhook_secret
TYPE = GENERIC_STRING
SECRET_STRING = 'T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX';
CREATE OR REPLACE NOTIFICATION INTEGRATION my_slack_webhook_int
TYPE=WEBHOOK
ENABLED=TRUE
WEBHOOK_URL='https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
WEBHOOK_SECRET=my_db.sch1.my_slack_webhook_secret
WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
WEBHOOK_HEADERS=('Content-Type'='application/json');
Accorder des privilèges¶
Pour configurer des notifications pour des objets dans une base de données, le propriétaire de la base de données doit disposer des privilèges suivants :
MANAGE DATA QUALITY sur le compte
USAGE sur l’intégration de notification
Par exemple, supposons qu’un utilisateur avec le rôle data_steward est le propriétaire de la base de données my_db. Pour utiliser l’intégration de notification my_email_int pour envoyer des notifications en cas de problèmes de qualité détectés par les DMFs associées aux tables et aux vues dans my_db, exécutez les commandes suivantes :
GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE data_steward;
GRANT USAGE ON INTEGRATION my_email_int TO ROLE data_steward;
Configurer les paramètres de base de données pour les notifications de qualité des données¶
Après avoir créé une intégration de notification et accordé les privilèges nécessaires, vous pouvez activer les notifications pour une base de données en exécutant une instruction ALTER DATABASE avec la propriété DATA_QUALITY_MONITORING_SETTINGS. Cette propriété utilise une spécification YAML exprimée en dollars pour définir les paramètres de notification.
Lorsque vous définissez cette propriété, vous contrôlez trois aspects des notifications de qualité des données :
Si les notifications sont activées ou désactivées pour la base de données.
Quelles intégrations de notification envoient les notifications. Vous pouvez spécifier plusieurs intégrations de notification pour envoyer des notifications via différents canaux.
Si les notifications incluent le nom de la table ou de la vue spécifique qui pose un problème de qualité des données. Ces métadonnées permettent d’identifier et de résoudre rapidement le problème.
Par exemple :
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS = $$ notification: enabled: TRUE integrations: - EMAIL_NOTIFY_INT - WEBHOOK_NOTIFY_INT metadata_included: TRUE $$
Les notifications sont activées pour la base de données
my_db.Les notifications sont envoyées via deux intégrations de notification :
email_notify_intetwebhook_notify_int. Cela signifie que les problèmes de qualité des données déclenchent des notifications via les deux canaux.Les notifications incluent des métadonnées qui identifient l’objet et la DMF qui y est associée.
Désactiver les notifications pour une association de DMF spécifique¶
Par défaut, une fois que vous avez activé les notifications pour une base de données, les problèmes de qualité des données dans tout objet de la base de données génèrent une notification. Vous pouvez désactiver les notifications pour une association spécifique entre un objet et une DMF pour empêcher l’envoi de notifications. Pour désactiver les notifications pour une association, exécutez une instruction ALTER <object> MODIFY DATA METRIC FUNCTION pour définir le paramètre DATA_QUALITY_NOTIFICATION sur FALSE.
Par exemple, supposons que les notifications soient activées pour la base de données qui contient la vue v2. Si vous ne souhaitez pas que des notifications soient envoyées lorsque la DMF BLANK_COUNT trouve des problèmes de qualité avec la colonne c1, exécutez la commande suivante :
ALTER VIEW v2
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.BLANK_COUNT ON (c1)
SET DATA_QUALITY_NOTIFICATION = FALSE;
Déterminer si les notifications sont activées¶
La fonction DATA_METRIC_FUNCTION_REFERENCES renvoie des informations sur l’association entre un objet et une DMF. La sortie comprend une colonne data_quality_notification_status, que vous pouvez utiliser pour déterminer si les notifications sont activées pour l’association.
Exemple étendu¶
Supposons que vous ayez les éléments suivants dans votre compte :
Une base de données
my_dbqui contient deux tables (t1ett2) et une vue (v1).Des tables
t1ett2qui sont associées à la DMF ROW_COUNT, et la détection des anomalies est activée pour les deux associations.Le rôle
analystest le propriétaire demy_db.La vue
v1est associée à la DMF NULL_COUNT, et une attente est définie pour l’association.
Vous souhaitez que les utilisateurs reçoivent un e-mail lorsqu’il y a une anomalie dans les tables t1 ou t2, mais vous ne voulez pas qu’une notification soit envoyée en cas de problème de qualité avec la vue v1.
Créez l’intégration de notification qui indique qui devrait recevoir des notifications en cas de problème de qualité des données :
CREATE NOTIFICATION INTEGRATION notify_int TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('joe.smith@example.com');
Accordez des privilèges sur la nouvelle intégration de notification du rôle
analyst, qui est le propriétaire demy_db:GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst; GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
Configurez les paramètres de la base de données pour activer les notifications. Ces notifications comprendront le nom de l’objet qui a rencontré un problème de qualité des données.
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS = $$ notification: enabled: TRUE integrations: - NOTIFY_INT metadata_included: TRUE $$
Désactivez les notifications pour une association entre la vue
v1et la DMF NULL_COUNT :ALTER VIEW v1 MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1) SET DATA_QUALITY_NOTIFICATION = FALSE;