Behebung von Datenqualitätsproblemen¶
Anhand von Datenqualitätsmetriken (DMFs) können Sie feststellen, wie viele Datensätze in einer Tabelle möglicherweise Qualitätsprobleme enthalten. Zum Beispiel kann SNOWFLAKE.CORE.NULL_COUNT feststellen, wie viele Datensätze einen NULL-Wert in einer bestimmten Spalte enthalten.
Um Ihnen bei der Korrektur dieser möglichen Qualitätsprobleme zu helfen, können Sie die Systemfunktion SYSTEM$DATA_METRIC_SCAN aufrufen, um die einzelnen Datensätze zurückzugeben, die durch DMF als Daten identifiziert wurden, die eine Datenqualitätsprüfung nicht bestanden haben. Wenn Sie z. B. NULL_COUNT DMF als Argument in die SYSTEM$DATA_METRIC_SCAN-Funktion übergeben, können Sie die tatsächlichen Datensätze erhalten, die einen NULL-Wert enthalten, und nicht nur die Anzahl der Datensätze, die einen NULL-Wert enthalten.
Unterstützte DMFs¶
Die Funktion SYSTEM$DATA_METRIC_SCAN akzeptiert eine DMF als Argument, um die Datensätze zurückzugeben, die durch die DMF als problematische Daten identifiziert wurden. Das folgende DMFs-System kann als Argument verwendet werden:
SNOWFLAKE.CORE.NULL_COUNT
SNOWFLAKE.CORE.NULL_PERCENT
SNOWFLAKE.CORE.BLANK_COUNT
SNOWFLAKE.CORE.BLANK_PERCENT
SNOWFLAKE.CORE.DUPLICATE_COUNT
Einschränkungen und Hinweise¶
Sie können benutzerdefinierte DMFs nicht als Argument der SYSTEM$DATA_METRIC_SCAN-Funktion verwenden.
Wenn eine Tabelle durch eine Richtlinie geschützt ist, wie z. B. eine Maskierungsrichtlinie oder eine Zeilenzugriffsrichtlinie, gibt die SYSTEM$DATA_METRIC_SCAN-Funktion möglicherweise unerwartete oder unvollständige Daten zurück, da die Ergebnisse von der Rolle des Benutzers bei der Ausführung der Funktion abhängen.
Aufrufen der Funktion SYSTEM$DATA_METRIC_SCAN¶
Wenn Sie die Funktion SYSTEM$DATA_METRIC_SCAN aufrufen, analysiert sie eine Tabelle mit einer DMF, um mögliche Probleme mit der Datenqualität zu erkennen. Sie müssen die folgenden Argumente an die Funktion SYSTEM$DATA_METRIC_SCAN übergeben: den Namen der Tabelle, die DMF und alle Argumente, die an die DMF übergeben werden, um problematische Datensätze zu identifizieren. Wenn zum Beispiel die Systemmetrikfunktion SNOWFLAKE.CORE.NULL_COUNT die Gesamtzahl der NULL-Werte in einer bestimmten Spalte zurückgibt, gibt die folgende Funktion die Zeilen der employeesTable
-Tabellen zurück, die NULL-Werte in der SSN
-Spalte in der Version der Tabelle haben, die zu einem bestimmten Zeitpunkt in der Vergangenheit existierte.
SELECT *
FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => '<governance.sch.employeesTable>'
,METRIC_NAME => '<snowflake.core.null_count>'
,ARGUMENT_NAME => '<SSN>'
,AT_TIMESTAMP => '<2024-08-28 02:00:00 -0700>'
));
Um die Ergebnisse DMF-Auswertung in der Tabelle oder Ansicht in der Vergangenheit zu überprüfen, können Sie das Argument AT_TIMESTAMP übergeben. Mit dem Argument AT_TIMESTAMP können Sie Time Travel verwenden, um die Zeichenfolge des Zeitstempels so umzuwandeln, dass nur die Datensätze zurückgegeben werden, die zum Zeitstempel ‚2024-08-28 02:00:00 -0700‘ in der Tabelle vorhanden waren.
Verwenden Sie SYSTEM$DATA_METRIC_SCAN zur Korrektur von Daten¶
Die Funktion SYSTEM$DATA_METRIC_SCAN ist eine Tabellenfunktion, die eine Reihe von Zeilen zurückgibt. Die Ausgabe der Funktion kann in einer DML-Anweisung verwendet werden, um eine Aktion für die Datensätze durchzuführen, welche als Daten identifiziert wurden, die eine Datenqualitätsprüfung nicht bestanden haben.
Angenommen, Sie möchten leere Werte in der Spalte email
der Tabelle t
durch die NULL-Werte ersetzen. Da die Datenmetrikfunktion BLANK_COUNT leere Werte identifiziert, könnten Sie die folgende Anweisung ausführen:
UPDATE T
SET email = null
WHERE T.ID IN (SELECT ID FROM TABLE(SYSTEM$DATA_METRIC_SCAN(
REF_ENTITY_NAME => '<t>'
,METRIC_NAME => '<snowflake.core.blank_count>'
,ARGUMENT_NAME => '<email>'
)));