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:

  1. Erstellen Sie eine Benachrichtigungsintegration.

  2. Erteilen von Zugriffssteuerungsrechten an den Datenbankeigentümer.

  3. Ä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');
Copy

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');
Copy

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;
Copy

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
  $$
Copy
  • Benachrichtigungen sind für die Datenbank my_db aktiviert.

  • Benachrichtigungen werden über zwei Benachrichtigungsintegrationen gesendet: email_notify_int und webhook_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;
Copy

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.

  1. 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');
    
    Copy
  2. Erteilen Sie Berechtigungen für die neue Benachrichtigungsintegration für die Rolle analyst, dem Eigentümer von my_db:

    GRANT MANAGE DATA QUALITY ON ACCOUNT TO ROLE analyst;
    GRANT USAGE ON INTEGRATION notify_int TO ROLE analyst;
    
    Copy
  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
      $$
    
    Copy
  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;
    
    Copy