Versenden von Benachrichtigungen bei Datenqualitätsproblemen¶
Snowflake bietet die folgenden Features, die identifizieren, wann der von einer Datenmetrikfunktion zurückgegebene Wert (DMF) auf ein Problem mit der Datenqualität hinweist:
Erwartungen – Ermöglicht das Verwenden eines booleschen Ausdrucks zum Vergleichen der Ausgabe einer DMF mit einem erwarteten Wert. Ein Rückgabewert, der nicht mit dem booleschen Ausdruck übereinstimmt, wird als Erwartungsverstoß angesehen.
Anomalieerkennung – Snowflake erkennt automatisch, wenn die Ausgabe von DMF eine Anomalie darstellt. Eine Anomalie tritt auf, wenn der von einer zurückgegebene Wert DMF über oder unter einem erwarteten Bereich liegt, der aufgrund historischer Daten erwartet wird.
Sie können eine Benachrichtigungsintegration verwenden, um eine Benachrichtigung zu senden, wenn eines dieser Features ein Problem mit der Datenqualität feststellt. Nach der Konfiguration von Snowflake wird eine Benachrichtigung gesendet, wenn gegen eine Erwartung verstoßen wird oder Snowflake eine Anomalie feststellt.
Sie aktivieren Benachrichtigungen auf Datenbankebene. Nach der Aktivierung generieren alle Objekte mit einer zugehörigen DMF in dieser Datenbank Benachrichtigungen, wenn ein Qualitätsproblem vorliegt. Innerhalb einer Datenbank, die für Benachrichtigungen aktiviert ist, können Sie Benachrichtigungen für eine bestimmte Zuordnung zwischen einem Objekt in der Datenbank und einer DMF deaktivieren.
Workflow¶
Die Konfiguration von Snowflake zum Senden von Benachrichtigungen bei Datenqualitätsproblemen besteht aus den folgenden Aufgaben:
Erteilen von Zugriffssteuerungsrechten an den Datenbankeigentümer.
Ändern der Datenbank, um Benachrichtigungen zu aktivieren und die Benachrichtigungsintegration anzugeben, die diese senden soll.
Ein durchgängiges Beispiel für diesen Workflow finden Sie unter Erweitertes Beispiel.
Benachrichtigungsintegration erstellen¶
Eine Benachrichtigungsintegration ist ein Snowflake-Objekt, das als Schnittstelle zwischen Snowflake und Nachrichtendiensten von Drittanbietern dient. Um Benachrichtigungen für Datenqualitätsprobleme zu versenden, erstellen Sie eine Benachrichtigungsintegration für den Nachrichtendienst. Die Überwachung der Datenqualität unterstützt die folgenden Benachrichtigungstypen:
E-Mail-Benachrichtigungen
Benachrichtigungen, die über externe Systeme wie Slack gesendet werden, unter Verwendung von Webhooks.
Benachrichtigungen per E-Mail senden¶
Um Benachrichtigungen an eine Liste von E-Mail-Adressen zu senden, führen Sie eine CREATE NOTIFICATION INTEGRATION-Anweisung aus, um eine Integration vom Typ EMAIL zu erstellen. Ihre Integration muss den ALLOWED_RECIPIENTS Parameter verwenden, um eine Liste von E-Mail-Adressen anzugeben, an die Benachrichtigungen gesendet werden sollen. Sie können nur E-Mail-Adressen hinzufügen, die verifiziert sind. Informationen zur Verifizierung einer E-Mail-Adresse finden Sie unter E-Mail-Adressen der E-Mail-Benachrichtigungsempfänger verifizieren.
Tipp
Sie können E-Mail-Benachrichtigungen an eine Distributionsliste oder Gruppe senden, die außerhalb von Snowflake verwaltet wird. Weitere Informationen dazu finden Sie unter dem zugehörigen Artikel in der Knowledge Base.
Um beispielsweise eine Benachrichtigungsintegration so zu erstellen, dass der Benutzer joe.smith@example.com per E-Mail benachrichtigt werden kann, wenn ein Problem mit der Datenqualität vorliegt, führen Sie den folgenden Befehl aus:
CREATE NOTIFICATION INTEGRATION my_email_int
TYPE=EMAIL
ENABLED=TRUE
ALLOWED_RECIPIENTS = ('joe.smith@example.com');
Bemerkung
E-Mail-Benachrichtigungen werden über die Amazon Web Services (AWS) von Snowflake verarbeitet, die AWS Simple Email Service (SES) verwenden. Der Inhalt einer mit AWS gesendeten E-Mail-Nachricht kann von Snowflake bis zu dreißig Tage lang aufbewahrt werden, um die Zustellung der Nachricht zu verwalten. Nach Ablauf dieser Frist wird der Inhalt der Nachricht gelöscht.
Benachrichtigungen mithilfe eines Webhooks für ein externes System senden¶
Sie können Benachrichtigungen zur Datenqualität über ein externes System senden, indem Sie eine Webhook-Integration erstellen. Eine Liste der externen Systeme, die Sie verwenden können, finden Sie unter Versenden von Webhook-Benachrichtigungen.
Um Webhooks zum Versenden von Benachrichtigungen zur Datenqualität zu verwenden, führen Sie die folgenden Schritte aus:
Wenn Sie zum Beispiel Slack zum Senden von Benachrichtigungen verwenden möchten, können Sie die folgenden Befehle ausführen:
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');
Berechtigungen erteilen¶
Um Benachrichtigungen für Objekte innerhalb einer Datenbank einzurichten, muss der Datenbankeigentümer über die folgenden Berechtigungen verfügen:
MANAGE DATA QUALITY für das Konto
USAGE für die Benachrichtigungsintegration
Angenommen, ein Benutzer mit der data_steward-Rolle ist der Eigentümer der Datenbank my_db. Um die Benachrichtigungsintegration my_email_int zu verwenden, um Benachrichtigungen zu Qualitätsproblemen zu senden, die von DMFs in Verbindung mit Tabellen und Ansichten in my_db entdeckt wurden, führen Sie die folgenden Befehle aus:
GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE data_steward;
GRANT USAGE ON INTEGRATION my_email_int TO ROLE data_steward;
Datenbankeinstellungen für Datenqualitätsbenachrichtigungen konfigurieren¶
Nachdem Sie eine Benachrichtigungsintegration erstellt und die erforderlichen Berechtigungen erteilt haben, können Sie Benachrichtigungen für eine Datenbank aktivieren, indem Sie eine ALTER DATABASE-Anweisung mit der DATA_QUALITY_MONITORING_SETTINGS-Eigenschaft ausführen. Diese Eigenschaft verwendet eine in Dollarzeichen eingeschlossene YAML-Spezifikation, um die Benachrichtigungseinstellungen zu definieren.
Wenn Sie diese Eigenschaft einstellen, steuern Sie drei Aspekte von Datenqualitätsbenachrichtigungen:
Gibt an, ob Benachrichtigungen für die Datenbank aktiviert oder deaktiviert sind.
Welche -Benachrichtigungsintegrationen die Benachrichtigungen versenden. Sie können mehrere Benachrichtigungsintegrationen angeben, um Benachrichtigungen über verschiedene Kanäle zu versenden.
Ob die Benachrichtigungen den Namen der spezifischen Tabelle oder Ansicht enthalten, die das Datenqualitätsproblem aufweist. Diese Metadaten helfen, das Problem schnell zu identifizieren und zu beheben.
Beispiel:
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS = $$ notification: enabled: TRUE integrations: - EMAIL_NOTIFY_INT - WEBHOOK_NOTIFY_INT metadata_included: TRUE $$
Benachrichtigungen sind für die Datenbank
my_dbaktiviert.Benachrichtigungen werden über zwei Benachrichtigungsintegrationen gesendet:
email_notify_intundwebhook_notify_int. Das bedeutet, dass Probleme mit der Datenqualität Benachrichtigungen über beide Kanäle auslösen.Benachrichtigungen enthalten Metadaten, die das Objekt und die zugeordnete DMF identifizieren.
Benachrichtigungen für eine bestimmte DMF-Zuordnung deaktivieren¶
Nachdem Sie Benachrichtigungen für eine Datenbank aktiviert haben, wird standardmäßig bei Datenqualitätsproblemen in einem beliebigen Objekt innerhalb der Datenbank eine Benachrichtigung generiert. Sie können Benachrichtigungen für eine bestimmte Zuordnung zwischen einem Objekt und einer DMF deaktivieren, um zu verhindern, dass Benachrichtigungen gesendet werden. Um Benachrichtigungen für eine Zuordnung zu deaktivieren, führen Sie eine ALTER <object> MODIFY DATA METRIC FUNCTION-Anweisung aus, um den Parameter DATA_QUALITY_NOTIFICATION auf FALSE festzulegen.
Nehmen wir zum Beispiel an, dass Benachrichtigungen für die Datenbank aktiviert sind, welche die Ansicht v2 enthält. Wenn Sie nicht möchten, dass Benachrichtigungen gesendet werden, wenn die BLANK_COUNT DMF Qualitätsprobleme mit der Spalte c1 feststellt, führen Sie den folgenden Befehl aus:
ALTER VIEW v2
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.BLANK_COUNT ON (c1)
SET DATA_QUALITY_NOTIFICATION = FALSE;
Feststellen, ob Benachrichtigungen aktiviert sind¶
Die Funktion DATA_METRIC_FUNCTION_REFERENCES gibt Informationen über die Zuordnung zwischen einem Objekt und einer DMF zurück. Die Ausgabe enthält eine Spalte data_quality_notification_status, mit der Sie feststellen können, ob Benachrichtigungen für die Zuordnung aktiviert sind.
Erweitertes Beispiel¶
Angenommen, Sie haben folgende Elemente in Ihrem Konto:
Eine Datenbank
my_db, die zwei Tabellen (t1undt2) und eine Ansicht (v1) enthält.Tabellen
t1undt2, die mit der ROW_COUNT DMFverbunden sind; die Anomalieerkennung ist für beide Zuordnungen aktiviert.Rolle
analystist der Eigentümer vonmy_db.Ansicht
v1ist mit der NULL_COUNT DMF verknüpft, und es ist eine Erwartung für die Zuordnung definiert.
Sie möchten, dass Benutzer eine E-Mail erhalten, wenn es eine Anomalie in den Tabellen t1 oder t2 gibt, aber Sie möchten keine Benachrichtigung senden, wenn es ein Qualitätsproblem mit der Ansicht v1 gibt.
Erstellen Sie die Benachrichtigungsintegration, die angibt, wer Benachrichtigungen erhalten soll, wenn es ein Problem mit der Datenqualität gibt:
CREATE NOTIFICATION INTEGRATION notify_int TYPE=EMAIL ENABLED=TRUE ALLOWED_RECIPIENTS=('joe.smith@example.com');
Erteilen Sie Berechtigungen für die neue Benachrichtigungsintegration für die Rolle
analyst, dem Eigentümer vonmy_db:GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst; GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
Konfigurieren Sie die Datenbankeinstellungen, um Benachrichtigungen zu aktivieren. Diese Benachrichtigungen enthalten den Namen des Objekts, bei dem das Datenqualitätsproblem aufgetreten ist.
ALTER DATABASE my_db SET DATA_QUALITY_MONITORING_SETTINGS = $$ notification: enabled: TRUE integrations: - NOTIFY_INT metadata_included: TRUE $$
Deaktivieren Sie Benachrichtigungen für eine Zuordnung zwischen Ansicht
v1und der NULL_COUNT DMF:ALTER VIEW v1 MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1) SET DATA_QUALITY_NOTIFICATION = FALSE;