Erwartungen zur Implementierung von Datenqualitätsprüfungen verwenden¶
Das Zurückgeben eines Wertes aus einer Datenmetrikfunktion (DMF) liefert nützliche Informationen, aber es kann schwierig sein zu wissen, ob dies auf ein Problem mit der Datenqualität hinweist, ohne zu wissen, was Sie für Ihre Daten als akzeptabel halten. Sie könnten zum Beispiel Tabellen, die weniger als 10 NULL-Werte in einer bestimmten Spalte enthalten, in Betracht ziehen, dass diese die Datenqualitätsprüfung bestanden haben. In diesem Fall erwarten Sie, dass der Wert kleiner als 10 ist, und Sie möchten nur benachrichtigt werden, wenn dieser Wert überschritten wird.
Mit einer Erwartung können Sie Kriterien dafür festlegen, ob Daten eine von einer DMF durchgeführte Datenqualitätsprüfung bestehen. Wenn die DMF einen Wert zurückgibt, wird dieser Wert mit diesen Kriterien verglichen, um festzustellen, ob die Daten die Prüfung bestanden haben oder nicht. Fehlgeschlagene Rückgabewerte werden als Erwartungsverstöße gemeldet, sodass Sie entsprechende Maßnahmen für die Daten ergreifen können.
Durch den folgenden -Befehl wird die Erwartung erstellt, dass die Spalte C1
weniger als 10 NULL-Werte enthält.
ALTER VIEW v1
ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (C1)
EXPECTATION my_exp ( VALUE < 10);
Sie können Erwartungen für beide System-DMFs und benutzerdefinierte DMFs definieren.
Definieren, was die Erwartung erfüllt¶
Eine Erwartung enthält einen booleschen Ausdruck, der bestimmt, ob die Erwartung erfüllt wurde oder nicht. Wenn dieser Ausdruck TRUE ergibt, bedeutet dies, dass das DMF-Ergebnis Ihren Erwartungen entsprach.
Innerhalb eines Ausdrucks stellt das Schlüsselwort VALUE
den von der DMF zurückgegebenen Wert dar. Angenommen, Sie hätten die folgende Definition einer Erwartung:
EXPECTATION my_exp (VALUE < 5)
Snowflake ersetzt VALUE
mit dem von der DMF zurückgegebenen Wert, wenn die Erwartung bewertet wird. Wenn die DMF 3
zurückgegeben hat, würde die Erwartung erfüllt werden, da der Ausdruck TRUE ergibt.
Wenn ein Ausdruck FALSE ergibt, meldet Snowflake dies als Erwartungsverstoß. Informationen zur Verfolgung dieser Verstöße finden Sie unter Erwartungsverstöße identifizieren.
Ein Ausdruck kann die folgenden Typen von Operatoren enthalten:
Ein Ausdruck kann nicht auf andere Tabellen, Ansichten oder benutzerdefinierte Funktionen (UDFs) verweisen.
Eine Erwartung erstellen¶
Jede Zuordnung zwischen einer DMF und einem Objekt kann eine oder mehrere Erwartungen haben.
Sie können eine Erwartung hinzufügen, wenn Sie die DMF mit der Tabelle oder Ansicht verknüpfen. Sie können sie auch später der Zuordnung hinzufügen. Sie können weiterhin eine bestehende Erwartung ändern.
Nachdem Sie eine Erwartung hinzugefügt haben, können Sie diese manuell testen, ohne warten zu müssen, bis die DMF nach dem entsprechenden Zeitplan ausgeführt wird.
Beim Zuordnen einer DMF eine Erwartung hinzufügen¶
Sie verwenden den Befehl ALTER TABLE oder ALTER VIEW zum Verknüpfen einer DMF mit einer Tabelle oder Ansicht. Sie können der Zuordnung in derselben SQL-Anweisung Erwartungen hinzufügen, mit der die Zuordnung erstellt wurde.
Beispielsweise die Syntax, um bei der Zuordnung einer DMF mit einer Tabelle wie folgt Erwartungen hinzuzufügen. Ansichten verwenden eine ähnliche Syntax. In dieser Vorschau wird die hervorgehobene Klausel eingeführt.
ALTER TABLE <table>
ADD DATA METRIC FUNCTION <dmf>
ON (<col_name> [ , ... ] [ , TABLE<table_name>( <col_name> [ , ... ] ) )
[ EXPECTATION <expectation_name> ( <expression> )
[, <expectation_name> ( <expression> ) [ , ... ] ] ]
Wobei:
expectation_name
ist eine Zeichenfolge, die verwendet wird, um die Erwartung zu identifizieren. Sie können Erwartungen mit demselben Namen erstellen, solange sie verschiedenen Zuordnungen angehören.expression
ist ein boolescher Ausdruck, der bestimmt, ob die DMF einen erwarteten Wert zurückgegeben hat. Siehe Definieren, was die Erwartung erfüllt.
- Beispiel: Eine einzelne Erwartung hinzufügen
Angenommen, Sie verknüpfen die MAX-System-DMF mit der Ansicht
v1
, um den Maximalwert in der Spaltec1
zu überprüfen. Sie erwarten, dass der Maximalwert zwischen 25 und 50 liegt.ALTER VIEW v1 ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.MAX ON (C1) EXPECTATION my_exp ( 25 < VALUE AND VALUE < 50);
Wenn die MAX DMF einen Wert außerhalb dieses Bereichs von erwarteten Werten zurückgibt, dann erfasst Snowflake dies als Erwartungsverstoß.
- Beispiel: Mehrere Erwartungen hinzufügen
Angenommen, Sie möchten benachrichtigt werden, wenn eine Tabelle innerhalb von fünf Minuten nicht aktualisiert wurde, und noch einmal, wenn sie 30 Minuten lang nicht aktualisiert wurde. Sie können die folgenden Erwartungen hinzufügen und dann prüfen, wann diese Erwartungen nicht erfüllt wurden.
ALTER TABLE emp ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON (last_updated) EXPECTATION lessThan5Mins (VALUE < 300), lessThan30Mins (VALUE < 1800);
Eine Erwartung zu einer bestehenden Zuordnung hinzufügen¶
Sie verwenden den Befehl ALTER TABLE oder ALTER VIEW, um eine Erwartung zu einer bestehenden Zuordnung zwischen einer DMF und der Tabelle oder Ansicht hinzuzufügen.
Beispielsweise die Syntax, um Erwartungen zu einer Zuordnung zwischen einer Tabelle und einer DMF wie folgt hinzuzufügen. Ansichten verwenden eine ähnliche Syntax. In dieser Vorschau wird die hervorgehobene Klausel eingeführt.
ALTER TABLE <table>
MODIFY DATA METRIC FUNCTION <dmf>
ON (<col_name> [ , ... ] [ , TABLE<table_name>( <col_name> [ , ... ] ) )
[ ADD EXPECTATION <expectation_name> ( <expression> )
[, <expectation_name> ( <expression> ) [ , ... ] ] ]
Wobei:
expectation_name
ist eine Zeichenfolge, die verwendet wird, um die Erwartung zu identifizieren. Sie können Erwartungen mit demselben Namen erstellen, solange sie verschiedenen Zuordnungen angehören.expression
ist ein boolescher Ausdruck, der bestimmt, ob die DMF einen erwarteten Wert zurückgegeben hat. Siehe Definieren, was die Erwartung erfüllt.
- Beispiel
Angenommen, Sie haben zuvor die NULL_COUNT-System-DMF mit der Spalte
c1
in der Tabellemy_table
zugeordnet. Um eine Erwartung hinzuzufügen, damit Sie benachrichtigt werden können, wenn es 10 oder mehr NULL-Werte in der Spaltec1
gibt, führen Sie den folgenden Code aus:ALTER TABLE my_table MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1) ADD EXPECTATION my_exp (VALUE < 10);
Wenn das Ergebnis von NULL_COUNT 15 ist, wird dies als Erwartungsverstoß gemeldet.
Eine bestehende Erwartung ändern¶
Sie verwenden eine MODIFY EXPECTATION-Klausel, um den Ausdruck einer Erwartung zu ändern, die Sie zuvor einer Zuordnung hinzugefügt haben.
Beispiel: Sie haben zuvor die Erwartung my_exp
für die Zuordnung zwischen der Tabelle t1
und der NULL_COUNT DMF hinzugefügt. Um die Erwartung so zu ändern, dass gegen sie verstoßen wird, wenn es 15 oder mehr NULL-Werte in der Spalte c1
gibt, führen Sie Folgendes aus:
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT ON (c1)
MODIFY EXPECTATION my_exp (VALUE < 15);
Der vorherige Ausdruck der Erwartung wird durch VALUE < 15
ersetzt.
Eine Erwartung testen¶
Nachdem Sie Erwartungen hinzugefügt haben, können Sie die SYSTEM$EVALUATE_DATA_QUALITY_EXPECTATIONS-Systemfunktion aufrufen, um sicherzustellen, dass sie korrekt hinzugefügt wurden und um festzustellen, ob derzeit gegen die Erwartungen verstoßen wird.
Nehmen wir zum Beispiel an, Sie haben der Zuordnung zwischen einer DMF und der Tabelle t1
mindestens eine Erwartung hinzugefügt. Um festzustellen, ob diese Erwartung derzeit erfüllt ist, führen Sie Folgendes aus:
SELECT *
FROM TABLE(SYSTEM$EVALUATE_DATA_QUALITY_EXPECTATIONS(
REF_ENTITY_NAME => 'my_db.sch.t1'));
Eine Erwartung löschen¶
Verwenden Sie eine DROP EXPECTATION-Klausel, um eine Erwartung aus einer Zuordnung und aus dem System zu entfernen.
Beispiel: Sie haben zuvor die Erwartung my_exp
für die Zuordnung zwischen der Spalte c1
in der Tabelle t1
und der NULL_COUNT DMF hinzugefügt. Um die Erwartung my_exp
aus der Zuordnung und der DMF zu entfernen, führen Sie den folgenden Code aus:
ALTER TABLE t1
MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.NULL_COUNT on (c1)
DROP EXPECTATION my_exp;
Erwartungsverstöße identifizieren¶
Sie können Erwartungsverstöße wie folgt feststellen:
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW: Eine spezielle Ereignistabelle, in der die Ergebnisse der Rohdatenqualität erfasst werden.
Ansicht DATA_QUALITY_MONITORING_EXPECTATION_STATUS: Ansicht im SNOWFLAKE.LOCAL-Schema, das vereinfachte Ergebnisse enthält.
Funktion DATA_QUALITY_MONITORING_EXPECTATION_STATUS: Tabellenfunktion, die die Ergebnisse der Erwartungen zurückgibt.
SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW¶
Die Ergebnisse der Datenqualität werden in der speziellen Ereignistabelle SNOWFLAKE.LOCAL.DATA_QUALITY_MONITORING_RESULTS_RAW erfasst.
Wenn die Zuordnung zwischen einem Objekt und einer DMF eine Erwartung hat, werden der Tabelle jedes Mal zwei Zeilen hinzugefügt, wenn Snowflake das Ergebnis der DMF berechnet. Die erste Zeile erfasst Informationen zu dem Objekt, mit dem die DMF, die DMF selbst und das Ergebnis der Datenqualitätsprüfung verbunden ist. Die zweite Zeile erfasst Informationen in Bezug auf die für die DMF-Zuordnung festgelegte Erwartung, einschließlich der Frage, ob die Erwartung erfüllt oder gegen sie verstoßen wurde. Wenn es mehrere Erwartungen gibt, gibt es für jede Erwartung eine Zeile.
Das Feld snow.data_metric.record_type
in der Spalte resource_attribute
zeigt an, ob eine Zeile einer Erwartung entspricht. Dieses Feld hat zwei mögliche Werte:
EXPECTATION_VIOLATION_STATUS
: Zeigt an, dass die Zeile einer Erwartung entspricht.EVALUATION_RESULT
: Zeigt an, dass die Zeile der Auswertung der DMF entspricht.
Wenn die Zeile einer Erwartung entspricht, enthält die Spalte resource_attribute
auch die folgenden Felder, die sich auf die Erwartungen beziehen:
snow.data_metric.expectation_id
: Vom System generierter Bezeichner.snow.data_metric.expectation_name
: Name der Erwartung, als sie der Zuordnung hinzugefügt wurde.snow.data_metric.expectation_expression
: Ausdruck der Erwartung.
Nachdem Sie festgestellt haben, dass eine Zeile der Bewertung einer Erwartung entspricht, können Sie die value
-Spalte überprüfen, um festzustellen, ob die Erwartung erfüllt wurde. Wenn TRUE, dann wurde gegen die Erwartung verstoßen.
Ansicht DATA_QUALITY_MONITORING_EXPECTATION_STATUS¶
Die Ansicht DATA_QUALITY_MONITORING_EXPECTATION_STATUS, die im Schema SNOWFLAKE.LOCAL vorhanden ist, vereinfacht die Informationen in der Ereignistabelle, um den Zugriff auf die DMF-Ergebnisse zu erleichtern.
Funktion DATA_QUALITY_MONITORING_EXPECTATION_STATUS¶
Die Tabellenfunktion DATA_QUALITY_MONITORING_EXPECTATION_STATUS gibt Zeilen zurück, die die gleichen Informationen enthalten, die auch in der DATA_QUALITY_MONITORING_EXPECTATION_STATUS-Ansicht verfügbar sind. Die Funktion verwendet ein anderes Zugriffssteuerungsmodell als die Ansicht.
Die Verwendung von Erwartungen verfolgen¶
Snowflake protokolliert alle Erwartungen in Ihrem Konto. Sie können eine Funktion oder Abfrage einer ACCOUNT_USAGE-Ansicht ausführen, um die Verwendung von Erwartungen zu überwachen, einschließlich der Durchführung der folgenden Aufgaben:
Überwachen, welche Objekte eine Erwartung für ihre Zuordnung mit einer DMF definiert haben.
Überwachen, welche DMFs eine Erwartung für ihre Zuordnung mit einem Objekt definiert haben.
Stellen Sie fest, ob für eine bestimmte Zuordnung zwischen einem Objekt und einer DMF eine Erwartung definiert ist.
Bestimmen Sie den booleschen Ausdruck einer Erwartung, um eine Datenqualitätsprüfung besser zu verstehen.
Eine Funktion ausführen, um die Erwartungen zu verfolgen¶
Sie können die Funktion DATA_METRIC_FUNCTION_EXPECTATIONS zur Ausgabe von Erwartungen ausführen, die für ein bestimmtes Objekt, eine bestimmte DMFoder für die Zuordnung zwischen einem Objekt und einer DMF definiert sind.
Beispiel: Erwartungen, die für ein bestimmtes Objekt bestehen
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
REF_ENTITY_NAME => 'my_table',
REF_ENTITY_DOMAIN => 'table'));
Beispiel: Erwartungen, die für eine bestimmte DMF bestehen
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
METRIC_NAME => 'SNOWFLAKE.CORE.NULL_COUNT'));
Beispiel: Erwartungen, die für eine bestimmte Zuordnung zwischen einem Objekt und einer DMF bestehen
SELECT *
FROM TABLE(
INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_EXPECTATIONS(
METRIC_NAME => 'SNOWFLAKE.CORE.NULL_COUNT',
REF_ENTITY_NAME => 'my_table',
REF_ENTITY_DOMAIN => 'table'));
Eine Ansicht abfragen, um die Erwartungen zu verfolgen¶
Ansicht DATA_METRIC_FUNCTION_EXPECTATIONS im Schema ACCOUNT_USAGE enthält alle Erwartungen Ihres Kontos. Sie können die Ansicht abfragen, um die Verwendung von Erwartungen innerhalb Ihres Kontos zu verfolgen und den booleschen Ausdruck jeder Erwartung zu bestimmen.
Beispiel: Alle Erwartungen für Ihr Snowflake-Konto zurückgeben
SELECT * FROM snowflake.account_usage.data_metric_function_expectations
ORDER BY expectation_name;
Beispiel: Die Erwartungen für eine bestimmte Datenmetrikfunktion identifizieren
SELECT expectation_name,
ref_database_name as object_database,
ref_schema_name as object_schema,
ref_entity_name as object_name
FROM snowflake.account_usage.data_metric_function_expectations
WHERE
metric_database_name = 'SNOWFLAKE' AND
metric_schema_name = 'CORE' AND
metric_name = 'ROW_COUNT'
ORDER BY expectation_name;