Tutorial: Erste Schritte mit Datenmetrikfunktionen

Einführung

Sie können dieses Tutorial mit einem Arbeitsblatt in Snowsight oder mit einem CLI-Client wie SnowSQL durchführen. Fügen Sie einfach die Codebeispiele ein, und führen Sie sie aus.

Am Ende dieses Tutorials haben Sie Folgendes gelernt:

  • Erstellen einer benutzerdefinierten Datenmetrikfunktion (DMF) zum Messen der Datenqualität.

  • Verwalten der DMF, um die Credit-Nutzung im serverlosen Betrieb zu optimieren.

  • Überwachen der Credit-Nutzung im Zusammenhang mit dem Aufruf der geplanten DMF.

Zugriffssteuerung einrichten

Für dieses Tutorial verwenden Sie eine einzige benutzerdefinierte Rolle, die über alle erforderlichen Zugriffsrechte verfügt, darunter die folgenden:

  • Erstellen einer Datenbank, die anschließend das Erstellen eines Schemas, das Erstellen einer DMF im Schema und das Erstellen einer Tabelle im Schema ermöglicht

  • Erstellen eines Warehouses zum Ausführen von Abfrageoperationen

  • Abfragen der Ansicht, die die Ergebnisse des Aufrufs der geplanten DMF enthält

  • Abfragen der Ansicht, die Informationen zur Nutzung von serverlosem Computing enthält

Erstellen Sie die Rolle dq_tutorial_role, die Sie während des gesamten Tutorials verwenden werden:

USE ROLE ACCOUNTADMIN;
CREATE ROLE IF NOT EXISTS dq_tutorial_role;
Copy

Erteilen Sie Berechtigungen, und weisen Sie der Rolle dq_tutorial_role die Anwendungsrolle und die Datenbankrollen zu:

GRANT CREATE DATABASE ON ACCOUNT TO ROLE dq_tutorial_role;
GRANT EXECUTE DATA METRIC FUNCTION ON ACCOUNT TO ROLE dq_tutorial_role;
GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER TO ROLE dq_tutorial_role;
GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE dq_tutorial_role;
GRANT DATABASE ROLE SNOWFLAKE.DATA_METRIC_USER TO ROLE dq_tutorial_role;
Copy

Erstellen Sie ein Warehouse zum Abfragen der Tabelle, die die Daten enthält, und weisen Sie der Rolle dq_tutorial_role die Berechtigung USAGE für die Rolle zu:

CREATE WAREHOUSE IF NOT EXISTS dq_tutorial_wh;
GRANT USAGE ON WAREHOUSE dq_tutorial_wh TO ROLE dq_tutorial_role;
Copy

Bestätigen Sie die der Rolle dq_tutorial_role erteilten Berechtigungen:

SHOW GRANTS TO ROLE dq_tutorial_role;
Copy

Richten Sie eine Rollenhierarchie ein, und weisen Sie die Rolle einem Benutzer zu, der dieses Tutorial abschließen kann (ersetzen Sie den Wert jsmith):

GRANT ROLE dq_tutorial_role TO ROLE SYSADMIN;
GRANT ROLE dq_tutorial_role TO USER jsmith;
Copy

Daten einrichten

Um das Verwalten der Daten und der DMF für dieses Tutorial zu erleichtern, erstellen Sie eine eigene Datenbank, die diese Objekte enthält:

Tabelle erstellen

USE ROLE dq_tutorial_role;
CREATE DATABASE IF NOT EXISTS dq_tutorial_db;
CREATE SCHEMA IF NOT EXISTS sch;

CREATE TABLE customers (
  account_number NUMBER(38,0),
  first_name VARCHAR(16777216),
  last_name VARCHAR(16777216),
  email VARCHAR(16777216),
  phone VARCHAR(16777216),
  created_at TIMESTAMP_NTZ(9),
  street VARCHAR(16777216),
  city VARCHAR(16777216),
  state VARCHAR(16777216),
  country VARCHAR(16777216),
  zip_code NUMBER(38,0)
);
Copy

Werte in eine Tabelle einzufügen

Fügen Sie der Tabelle Daten hinzu:

USE WAREHOUSE dq_tutorial_wh;

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES (1589420, 'san francisco', 'usa', 'john.doe@', 'john', 'doe', 1234567890, null, null, null);

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES (8028387, 'san francisco', 'usa', 'bart.simpson@example.com', 'bart', 'simpson', 1012023030, null, 'market st', 94102);

INSERT INTO customers (account_number, city, country, email, first_name, last_name, phone, state, street, zip_code)
  VALUES
    (1589420, 'san francisco', 'usa', 'john.doe@example.com', 'john', 'doe', 1234567890, 'ca', 'concar dr', 94402),
    (2834123, 'san mateo', 'usa', 'jane.doe@example.com', 'jane', 'doe', 3641252911, 'ca', 'concar dr', 94402),
    (4829381, 'san mateo', 'usa', 'jim.doe@example.com', 'jim', 'doe', 3641252912, 'ca', 'concar dr', 94402),
    (9821802, 'san francisco', 'usa', 'susan.smith@example.com', 'susan', 'smith', 1234567891, 'ca', 'geary st', 94121),
    (8028387, 'san francisco', 'usa', 'bart.simpson@example.com', 'bart', 'simpson', 1012023030, 'ca', 'market st', 94102);
Copy

DMFs erstellen und verwenden

In den folgenden Abschnitten erstellen wir eine benutzerdefinierte DMF, um die Anzahl der ungültigen E-Mail-Adressen zu messen und anschließend Folgendes zu tun:

  • Planen der DMF, sodass sie alle 5 Minuten ausgeführt wird.

  • Überprüfen der DMF-Tabellenreferenzen (suchen der Tabellen, auf die die DMF eingestellt ist).

  • Abfragen einer integrierten Ansicht, die das Ergebnis des Aufrufs der geplanten DMF enthält.

  • Entziehen der DMF von der Tabelle, um unnötige Credit-Nutzung zu vermeiden.

Erstellen Sie eine DMF, wenn:

Erstellen Sie eine Datenmetrikfunktion (DMF), um die Anzahl der E-Mail-Adressen in einer Spalte zu ermitteln, die nicht mit dem angegebenen regulären Ausdruck übereinstimmen:

CREATE DATA METRIC FUNCTION IF NOT EXISTS
  invalid_email_count (ARG_T table(ARG_C1 STRING))
  RETURNS NUMBER AS
  'SELECT COUNT_IF(FALSE = (
    ARG_C1 REGEXP ''^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$''))
    FROM ARG_T';
Copy

Zeitplan für die Tabelle festlegen

Der DMF-Zeitplan legt fest, wann alle DMFs auf der Tabelle ausgeführt werden. Derzeit sind 5 Minuten das kürzest mögliche Zeitintervall:

ALTER TABLE customers SET DATA_METRIC_SCHEDULE = '5 MINUTE';
Copy

Bemerkung

Für die Zwecke dieses Tutorials ist der Zeitplan auf 5 Minuten eingestellt. Nachdem Sie jedoch Ihre DMF-Anwendungsfälle optimiert haben, experimentieren Sie mit den anderen Zeitplaneinstellungen, wie z. B. Cron-Ausdrücke oder Trigger-Ereignisse in Verbindung mit DML-Operationen, die die Tabelle betreffen.

DMFs auf die Tabelle setzen Referenzen prüfen

Verknüpfen Sie die DMF mit der Tabelle:

ALTER TABLE customers ADD DATA METRIC FUNCTION
  invalid_email_count ON (email);
Copy

Da der Zeitplan auf 5 Minuten eingestellt ist, müssen wir 5 Minuten warten, damit Snowflake die DMF aufrufen und die Ergebnisse verarbeiten kann. Vorerst können wir überprüfen, ob die DMF mit der Tabelle verbunden ist, indem wir die Information Schema-Tabellenfunktion DATA_METRIC_FUNCTION_REFERENCES aufrufen:

SELECT * FROM TABLE(INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
  REF_ENTITY_NAME => 'dq_tutorial_db.sch.customers',
  REF_ENTITY_DOMAIN => 'TABLE'));
Copy

DMF-Ergebnisse anzeigen

Die Ergebnisse des Aufrufs der geplanten DMF werden in der Ansicht DATA_QUALITY_MONITORING_RESULTS gespeichert. Um die Anzahl der ungültigen E-Mail-Adressen zu ermitteln, fragen Sie die Ansicht DATA_QUALITY_MONITORING_RESULTS ab, um die Ergebnisse des Aufrufs der geplanten DMF anzuzeigen:

SELECT scheduled_time, measurement_time, table_name, metric_name, value
FROM SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS
WHERE TRUE
AND METRIC_NAME = 'INVALID_EMAIL_COUNT'
AND METRIC_DATABASE = 'DQ_TUTORIAL_DB'
LIMIT 100;
Copy

Die Ergebnisse zeigen, dass die Spalte value den Wert 1 enthält. Diese Zahl entspricht einer nicht korrekt formatierten E-Mail-Adresse, die der ersten INSERT-Anweisung im Abschnitt Werte in eine Tabelle einzufügen entspricht.

DMFs von Tabelle trennen

Sie haben festgestellt, dass die DMF wie erwartet funktioniert, basierend auf der Definition der DMF, dem Zeitplan und den erwarteten Ergebnissen.

Um eine unnötige serverlose Credit-Nutzung zu vermeiden, trennen Sie die DMF wieder von der Tabelle:

ALTER TABLE customers DROP DATA METRIC FUNCTION
  invalid_email_count ON (email);
Copy

Serverlosen Credit-Verbrauch anzeigen

Das Aufrufen von geplanten Datenmetrikfunktionen (DMFs) erfordert serverlose Computeressourcen. Sie können die Account Usage-Ansicht DATA_QUALITY_MONITORING_USAGE_HISTORY abfragen, um die serverlosen DMF-Computekosten anzuzeigen.

Da die Ansicht eine Latenz von 1-2 Stunden hat, warten Sie, bis diese Zeit verstrichen ist, bevor Sie die Ansicht abfragen. Sie können auf diesen Schritt später zurückkommen.

Fragen Sie die Ansicht ab, und filtern Sie die Ergebnisse, um das Zeitintervall Ihre geplanten DMF einzubeziehen:

USE ROLE dq_tutorial_role;
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.DATA_QUALITY_MONITORING_USAGE_HISTORY
WHERE TRUE
AND START_TIME >= CURRENT_TIMESTAMP - INTERVAL '3 days'
LIMIT 100;
Copy

Bereinigung, Zusammenfassung und zusätzliche Ressourcen

Herzlichen Glückwunsch! Sie haben dieses Tutorial erfolgreich abgeschlossen.

Nehmen Sie sich nun ein paar Minuten Zeit, um noch einmal die Zusammenfassung und die wichtigsten Punkte dieses Tutorials zu lesen.

Möglicherweise sollten Sie auch eine Bereinigung des Datenspeichers in Betracht ziehen, indem Sie alle Objekte, die Sie im Tutorial erstellt haben, wieder löschen. Weitere Informationen dazu finden Sie unter den anderen Themen der Snowflake-Dokumentation.

Zusammenfassung und Kernpunkte

Zusammengefasst haben Sie gelernt, wie Sie Folgendes tun können:

  • Erstellen einer benutzerdefinierten DMF zum Messen der Datenqualität und Verwalten der DMF zum Optimieren der serverlosen Credit-Nutzung.

  • Überwachen der Credit-Nutzung im Zusammenhang mit dem Aufruf der geplanten DMF.

Objekte des Tutorials löschen

Wenn Sie vorhaben, das Tutorial zu wiederholen, können Sie die von Ihnen erstellten Objekte beibehalten.

Andernfalls löschen Sie die Objekte des Tutorials wie folgt:

USE ROLE ACCOUNTADMIN;
DROP DATABASE dq_tutorial_db;
DROP WAREHOUSE dq_tutorial_wh;
DROP ROLE dq_tutorial_role;
Copy

Nächste Schritte

Setzen Sie die Einarbeitung in Snowflake mithilfe der folgenden Ressourcen fort: