Datenmetrikfunktionen verwenden, um Datenqualitätsprüfungen durchzuführen

Unter diesem Thema wird beschrieben, wie Sie eine Datenmetrikfunktion (DMF) mit einer Tabelle oder Ansicht verknüpfen, damit diese in regelmäßigen Abständen eine Datenqualitätsprüfung durchführt. Es wird auch beschrieben, wie Sie DMF direkt aufrufen können, z. B. wenn Sie eine DMF testen möchten, bevor Sie sie mit einer Tabelle oder Ansicht verknüpfen.

Eine DMF verknüpfen, um Datenqualitätsprüfungen zu automatisieren

Sie können eine DMF mit einer Tabelle oder Ansicht verknüpfen, um sie automatisch in regelmäßigen Abständen aufzurufen. Bei der Zuordnung von der DMF geben Sie an, welche Spalten als Argumente an die DMF übergeben werden.

Der Prozess der Verknüpfung einer DMF mit einer Tabelle oder Ansicht zur Automatisierung von Datenqualitätsprüfungen erfolgt in zwei Schritten:

  1. Legen Sie einen Zeitplan für die Tabelle oder Ansicht fest, der bestimmt, wie oft DMFs ausgeführt werden. Sie müssen den Zeitplan festlegen, bevor Sie eine DMF mit der Tabelle oder Ansicht verknüpfen.

  2. Verknüpfen Sie die DMF mit der Tabelle oder Ansicht.

Die Ausführung der DMF planen

Sie können die Ausführung von DMFs planen, um die Datenqualitätsmessungen für eine Tabelle zu automatisieren.

Snowflake verwendet die Rolle des Tabelleneigentümers, d. h. die Rolle mit der Berechtigung OWNERSHIP für die Tabelle, um die geplante DMF aufzurufen. Die Rolle des Tabelleneigentümers muss über folgende Berechtigungen verfügen:

  • Die Berechtigung USAGE für die benutzerdefinierte DMF und die Berechtigung USAGE für die Datenbank und das Schema, in denen die benutzerdefinierte DMF gespeichert ist.

  • Die Datenbankrolle DATA_METRIC_USER, wenn die DMF eine System-DMF ist.

  • Die Berechtigung EXECUTE DATA METRIC FUNCTION für das Konto.

Mit dem Objektparameter DATA_METRIC_SCHEDULE für eine Tabelle, Ansicht oder materialisierte Ansicht können Sie planen, wann Ihre DMFs ausgeführt werden können. Alle Datenmetrikfunktionen in der Tabelle oder Ansicht folgen demselben Zeitplan.

Es gibt drei Möglichkeiten, die Ausführung Ihrer DMF zu planen:

  • Stellen Sie die DMF so ein, dass die nach einer bestimmten Anzahl von Minuten ausgeführt wird.

  • Verwenden Sie einen cron-Ausdruck, um die Ausführung der DMF mit einer bestimmten Häufigkeit zu planen.

  • Verwenden Sie ein Trigger-Ereignis, um die DMF so zu planen, dass sie ausgeführt wird, wenn eine DML-Änderung an der Tabelle vorgenommen wird, z. B. das Einfügen einer neuen Zeile in die Tabelle. Allerdings:

Beispiel:

Stellen Sie den Zeitplan der Datenmetrikfunktion so ein, dass sie alle 5 Minuten ausgeführt wird:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

Stellen Sie den Zeitplan der Datenmetrikfunktion so ein, dass sie täglich um 8:00 Uhr ausgeführt wird:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * * UTC';
Copy

Stellen Sie den Zeitplan der Datenmetrikfunktion so ein, dass sie nur an Wochentagen um 8:00 Uhr ausgeführt wird:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 8 * * MON,TUE,WED,THU,FRI UTC';
Copy

Stellen Sie den Zeitplan der Datenmetrikfunktion so ein, dass sie dreimal täglich um 0600, 1200 und 1800 UTC ausgeführt wird:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'USING CRON 0 6,12,18 * * * UTC';
Copy

Stellen Sie die Datenmetrikfunktion so ein, dass sie ausgeführt wird, wenn eine allgemeine DML-Operation, wie z. B. das Einfügen einer neuen Zeile, die Tabelle verändert:

ALTER TABLE hr.tables.empl_info SET
  DATA_METRIC_SCHEDULE = 'TRIGGER_ON_CHANGES';
Copy

Sie können den Befehl SHOW PARAMETERS verwenden, um den DMF-Zeitplan für ein unterstütztes Tabellenobjekt anzuzeigen:

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE hr.tables.empl_info;
Copy
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| key                  | value                          | default | level | description                                                                                                                  | type   |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+
| DATA_METRIC_SCHEDULE | USING CRON 0 6,12,18 * * * UTC |         | TABLE | Specify the schedule that data metric functions associated to the table must be executed in order to be used for evaluation. | STRING |
+----------------------+--------------------------------+---------+-------+------------------------------------------------------------------------------------------------------------------------------+--------+

Geben Sie für Ansichtsobjekte und materialisierte Ansichtsobjekte TABLE als Objektdomäne an, und überprüfen Sie den Zeitplan wie folgt:

SHOW PARAMETERS LIKE 'DATA_METRIC_SCHEDULE' IN TABLE mydb.public.my_view;
Copy

Bemerkung

Es gibt eine Verzögerung von 10 Minuten ab dem Zeitpunkt, an dem Sie die DMF von einer Tabelle aus ändern, bis alle Änderung im Zeitplan auf den vorherigen DMFs, die der Tabelle zugewiesen sind, wirksam werden. Neue DMF-Zuweisungen an die Tabelle unterliegen jedoch nicht der 10-minütigen Verzögerung. Planen Sie die DMF-Zeitplanungs- und DMF-Rücksetzoperationen sorgfältig, um sie mit Ihren erwarteten DMF-Kosten in Einklang zu bringen.

Wenn Sie die Ergebnisse von DMF evaluieren, indem Sie die Ansicht DATA_QUALITY_MONITORING_RESULTS abfragen, geben Sie außerdem die Spalte measurement_time in Ihrer Abfrage als Grundlage für die Evaluation. Es gibt einen internen Prozess, der die Auswertung von DMF initiiert, und es ist möglich, dass zwischen dem geplanten Zeitpunkt und dem Messzeitpunkt Tabellenaktualisierungen, wie z. B. INSERT-Operationen, stattfinden können. Wenn Sie die Spalte measurement_time verwenden, erhalten Sie eine präzisere Beurteilung der Ergebnisse von DMF, da die Messzeit die Bewertungszeit von DMF angibt.

Die DMF mit einer Tabelle verknüpfen

Sie verwenden einen ALTER TABLE- oder ALTER VIEW-Befehl, um eine DMF zu verknüpfen und anzugeben, welche Spalten als Argumente übergeben werden. Der folgende Befehl verknüpft zum Beispiel das DMF-System NULL_COUNT mit der Tabelle t. Wenn das DMF-Programm ausgeführt wird, gibt es die Anzahl der NULL-Werte in der Spalte c1 zurück.

ALTER TABLE t
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT
    ON (c1);
Copy

Bemerkung

Verwenden Sie den Befehl ALTER VIEW, um eine DMF zu einer Spalte der materialisierten Ansicht hinzuzufügen oder eine DMF aus einer Spalte der materialisierten Ansicht zu entfernen.

Eine DMF aus einem Objekt löschen

Sie können eine DMF mit einem ALTER TABLE- oder ALTER VIEW-Befehl löschen. Beispiel:

ALTER TABLE t
  DROP DATA METRIC FUNCTION governance.dmfs.count_positive_numbers
    ON (c1, c2, c3);
Copy

Eine DMF aufrufen

Ein direkter Aufruf einer DMF kann nützlich sein, um die Ausgabe der DMF zu testen, bevor sie mit einer Tabelle oder Ansicht verknüpft wird.

Verwenden Sie die folgende Syntax, um eine DMF aufzurufen:

SELECT <data_metric_function>(<query>)
Copy

Wobei:

data_metric_function

Gibt eine system- oder benutzerdefinierte DMF an.

query

Gibt eine SQL-Abfrage auf einer Tabelle oder Ansicht an.

Die von der Abfrage projizierten Spalten müssen mit den Spaltenargumenten in der DMF-Signatur übereinstimmen.

Bemerkung

Die folgenden System-DMFs folgen dieser Syntax nicht, da sie keine Argumente entgegennehmen:

Um beispielsweise eine benutzerdefinierte DMF count_positive_numbers aufzurufen, die drei Spalten als Argumente akzeptiert, führen Sie Folgendes aus:

SELECT governance.dmfs.count_positive_numbers(
  SELECT c1, c2, c3
  FROM t);
Copy

Um beispielsweise die System-DMF NULL_COUNT (System-Datenmetrikfunktion) aufzurufen, um die Anzahl der NULL-Werte in der Spalte ssn anzuzeigen, führen Sie Folgendes aus:

SELECT SNOWFLAKE.CORE.NULL_COUNT(
  SELECT ssn
  FROM hr.tables.empl_info);
Copy