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 Benachrichtigung 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:

  1. Konfigurieren, wer Benachrichtigungen erhält.

  2. Erteilen von Zugriffssteuerungsrechten an den Datenbankeigentümer.

  3. Ändern der Datenbank, um Benachrichtigungen zu konfigurieren und zu aktivieren.

Ein durchgängiges Beispiel für diesen Workflow finden Sie unter Erweitertes Beispiel.

Konfigurieren, wer Benachrichtigungen erhält

Definieren Sie die Benachrichtigungsempfänger, indem Sie E-Mail-Adressen direkt hinzufügen oder indem Sie eine 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.

Wenn Sie E-Mail-Adressen hinzufügen möchten, ohne eine E-Mail-Integration zu erstellen, finden Sie entsprechende Informationen unter Datenbankeinstellungen für Datenqualitätsbenachrichtigungen konfigurieren.

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:

  1. Erstellen Sie ein Geheimnis für einen Webhook URL.

  2. Erstellen Sie eine Webhook-Benachrichtigungsintegration.

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 jede Benachrichtigungsintegration, die zum Senden von Benachrichtigungen verwendet wird. Dies ist nur erforderlich, wenn eine Benachrichtigungsintegration verwendet wird.

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

Sie können 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.

DATA_QUALITY_MONITORING_SETTINGS gibt die folgenden Aspekte von Benachrichtigungen zur Datenqualität an:

  • Gibt an, ob Benachrichtigungen für die Datenbank aktiviert oder deaktiviert sind.

  • Welche E-Mail-Adressen Benachrichtigungen erhalten (angegeben ohne Benachrichtigungsintegration).

  • Welche Benachrichtigungsintegrationen, falls vorhanden, die Benachrichtigungen versenden. Sie können mehrere Benachrichtigungsintegrationen angeben, um Benachrichtigungen über verschiedene Kanäle zu versenden.

  • Wie oft Benachrichtigungen gesendet werden.

  • 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
    email_recipients: [ 'joe@example.com', 'mary@example.com']
    integrations:
      - WEBHOOK_NOTIFY_INT
    cooldown_hours: 4
    metadata_included: TRUE
  $$;

Dieses Beispiel gibt die folgende Konfiguration an:

  • Benachrichtigungen sind für die Datenbank my_db aktiviert.

  • Benachrichtigungen werden an zwei E-Mail-Adressen und einen externen Kanal gesendet.

  • Benachrichtigungen werden nicht häufiger als einmal alle vier Stunden gesendet.

  • 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 (t1 und t2) und eine Ansicht (v1) enthält.

  • Tabellen t1 und t2, die mit der ROW_COUNT DMFverbunden sind; die Anomalieerkennung ist für beide Zuordnungen aktiviert.

  • Rolle analyst ist der Eigentümer von my_db.

  • Ansicht v1 ist 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.

Bemerkung

Dieses Beispiel zeigt, wie Sie eine Benachrichtigungsintegration verwenden, um E-Mail-Adressen anzugeben. Sie können auch E-Mail-Adressen direkt angeben, wenn Sie den Befehl ALTER DATABASE ausführen.

  1. Erstellen Sie eine 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');
    
  2. Erteilen Sie Berechtigungen für die Rolle analyst, die im Besitz von my_db ist:

    GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst;
    GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
    
  3. 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
      $$
    
  4. Deaktivieren Sie Benachrichtigungen für eine Zuordnung zwischen Ansicht v1 und der NULL_COUNT DMF:

    ALTER VIEW v1
      MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
        SET DATA_QUALITY_NOTIFICATION = FALSE;