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;
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;
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;
Bestätigen Sie die der Rolle dq_tutorial_role
erteilten Berechtigungen:
SHOW GRANTS TO ROLE dq_tutorial_role;
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;
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)
);
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);
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';
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';
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);
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'));
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;
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);
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;
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;
Nächste Schritte¶
Setzen Sie die Einarbeitung in Snowflake mithilfe der folgenden Ressourcen fort:
Erfahren Sie mehr über DMFs indem Sie mit Einführung in Data Quality und Datenmetrikfunktionen beginnen.
Führen Sie die anderen von Snowflake unter dem Thema Snowflake-Tutorials bereitgestellten Tutorials aus: