Überwachen der Datenqualität eines Schemas

Wenn eine Datenmetrikfunktion (DMF ) mit einer Tabelle oder Ansicht verbunden ist, wird die DMF in regelmäßigen Abständen ausgeführt und gibt einen Wert zurück, der Einblicke in die Datenqualität gibt.

Sie können jetzt eine einzelne SQL-Anweisung verwenden, um ein Schema so zu konfigurieren, dass alle Objekte im Schema mit derselben DMF verknüpft sind. Sie können die folgenden System-DMFs auf Schemaebene verknüpfen:

  • ROW_COUNT — Verwendet, um Informationen über das Datenvolumen in Objekten innerhalb des Schemas zurückzugeben.

  • FRESHNESS — Verwendet, um Informationen über die Häufigkeit zurückzugeben, mit der Objekte im Schema aktualisiert werden.

Wenn Sie eine dieser DMFs auf Schemaebene verknüpfen, können Sie festlegen, dass Snowflake bestimmen soll, ob im Laufe der Zeit Anomalien im Datenvolumen oder der Aktualität einer Tabelle oder Ansicht vorliegen.

Das folgende Beispiel zeigt, wie Sie die Anomalieerkennung für die Zuordnung zwischen der ROW_COUNT-DMF und jedem Objekt der my_schema-Tabelle aktivieren:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

Snowflake trainiert den Algorithmus zur Anomalieerkennung und beginnt dann automatisch mit der Identifizierung von Anomalien im Volumen von Tabellen und Ansichten im my_schema-Schema

DMF zu einem Schema hinzufügen

Wenn Sie eine DMF mit einem Schema verknüpfen, sind alle Objekte innerhalb des Schemas mit der DMF verbunden.

Syntax

Verwenden Sie die folgende Syntax, um eine DMF zu einem Schema hinzuzufügen.

ALTER SCHEMA <name>
  ADD DATA METRIC FUNCTION { SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()
    [ ANOMALY_DETECTION = { TRUE | FALSE } ]
    [ EXCLUDE_TABLE_TYPES = ( '<object_type>' [ , '<object_type>' ... ] ) ]

Argumente

{ SNOWFLAKE.CORE.ROW_COUNT | SNOWFLAKE.CORE.FRESHNESS } ON ()

Verknüpft die System-DMF mit Objekten innerhalb des Schemas.

Mögliche Werte sind SNOWFLAKE.CORE.ROW_COUNT und SNOWFLAKE.CORE.FRESHNESS.

ANOMALY_DETECTION = { TRUE | FALSE }

Wenn TRUE, verwendet Snowflake einen Algorithmus, um Anomalien in den von der DMF zurückgegebenen Werten zu erkennen. Snowflake erkennt Anomalien in jedem Objekt, nicht im gesamten Schema.

Standard: FALSE

EXCLUDE_TABLE_TYPES = ( 'object_type', 'object_type' ... )

Schließt alle Objekte des angegebenen Typs aus. Snowflake erstellt keine Zuordnungen zwischen der DMF und diesen Objekten. Im Folgenden finden Sie die möglichen Werte:

  • 'DYNAMIC_TABLE'

  • 'EVENT_TABLE'

  • 'EXTERNAL_TABLE'

  • 'ICEBERG_TABLE'

  • 'MATERIALIZED_VIEW'

  • 'TABLE'

  • 'VIEW'

Um ein bestimmtes Objekt auszuschließen und nicht alle Objekte eines bestimmten Typs, überschreiben Sie die DMF-Verknüpfung auf Objektebene.

Beispiele

Verknüpfen Sie die FRESHNESS DMF mit allen Objekten in einem Schema:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.FRESHNESS ON ();

Verknüpfen Sie die ROW_COUNT DMF mit allen Objekten in einem Schema und aktivieren Sie die Anomalieerkennung für diese Zuordnungen:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    ANOMALY_DETECTION = TRUE;

Verknüpfen Sie die ROW_COUNT DMF mit Tabellen innerhalb eines Schemas, aber verknüpfen Sie sie nicht mit Ansichten und materialisierten Ansichten:

ALTER SCHEMA my_schema
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    EXCLUDE_TABLE_TYPES=('VIEW', 'MATERIALIZED_VIEW');

Überschreiben von Einstellungen auf Objektebene

Wenn Sie eine DMF auf Schemaebene hinzufügen, erstellt Snowflake eine Zuordnung auf Objektebene zwischen jedem Objekt im Schema und derDMF. Sie können diese Zuordnung auf Objektebene überschreiben, wenn Sie ändern möchten, wie die DMF für das Objekt ausgeführt wird.

Angenommen, Sie haben die Anomalieerkennung aktiviert, als Sie die ROW_COUNT DMF zu my_schema hinzugefügt haben. Wenn Sie nicht möchten, dass Snowflake Anomalien in der Tabelle my_schema.employees erkennt, führen Sie den folgenden Befehl aus:

ALTER TABLE employees
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SET ANOMALY_DETECTION = FALSE;

Sie können die Verknüpfung auch von einem bestimmten Objekt entfernen, wenn Sie die Ausführung der DMF beenden möchten. Wenn Sie z. B. verhindern möchten, dass die ROW_COUNT DMFfür die my_schema.employees-Tabelle ausgeführt wird, führen Sie folgenden Befehl aus:

ALTER TABLE employees
  DROP DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ();

Sie können auch einen Zeitplan auf Schemaebene überschreiben, um zu ändern, wie oft eine DMF für ein bestimmtes Objekt ausgeführt wird. Informationen zum Festlegen des Zeitplans auf Objektebene finden Sie unter Zeitplan für DMFs anpassen.

Anpassen des Ausführungszeitplans

Standardmäßig beträgt der Datenmetrikzeitplan für ein Schema 60 Minuten. Die DMF wird jede Stunde für jedes Objekt im Schema ausgeführt. Sie können diesen Standardwert auf Schemaebene ändern oder ihn auf Objektebene überschreiben.

Verwenden Sie den folgenden Befehl, um die Häufigkeit zu steuern, mit der DMFs auf Objekte in einem Schema ausgeführt werden.

ALTER SCHEMA <name> SET DATA_METRIC_SCHEDULE = '<schedule>';

Die möglichen Werte für schedule sind auf der Schemaebene die gleichen wie auf der Objektebene. Informationen zum Anzeigen der möglichen Werte finden Sie unter ALTERTABLE …SET DATA_METRIC_SCHEDULE.

Der Zeitplan, den Sie auf Schemaebene festlegen, steuert, wie oft die DMF wird für jedes Objekt ausgeführt wird, es sei denn, Sie überschreiben es für bestimmte Tabellen oder Ansichten. Informationen zum Festlegen des Zeitplans auf Objektebene finden Sie unter Zeitplan für DMFs anpassen.

DMFs aussetzen

Die Syntax für das Aussetzen und Fortsetzen einer auf Schemaebene verknüpften DMF ist die gleiche wie die Syntax für Verknüpfungen auf Tabellenebene. Beispiel: Um die mit dem Schema my_schema verknüpfte ROW_COUNT DMF auszusetzen, führen Sie folgenden Befehl aus:

ALTER SCHEMA my_schema
  MODIFY DATA METRIC FUNCTION SNOWFLAKE.CORE.ROW_COUNT ON ()
    SUSPEND;

Feststellen, welche Verknüpfungen auf Schemaebene festgelegt wurden

Sie können die folgende Ansicht und Funktion verwenden, um festzustellen, welche Objekte mit einer DMF verknüpft sind:

Die Ansicht und die Ausgabe der Funktion enthalten eine Spalte level mit den folgenden möglichen Werten:

  • TABLE — Jemand hat die DMF direkt mit dem Objekt verknüpft.

  • SCHEMA — Jemand hat die DMF zu dem Schema hinzugefügt, das die Verknüpfung zwischen dem Objekt und der DMF erstellt hat.

Verfolgen von Verknüpfungen auf Schemaebene

Sie können die DATA_METRIC_FUNCTION_REFERENCES-Funktion aufrufen, um zu bestimmen, welche DMFs zu einem Schema hinzugefügt wurden. Beispiel: Um zu sehen, welche DMFs zum db1.my_schema-Schema hinzugefügt wurden, führen Sie den folgenden Befehl aus:

SELECT *
  FROM TABLE(
    INFORMATION_SCHEMA.DATA_METRIC_FUNCTION_REFERENCES(
      REF_ENTITY_NAME => 'db1.my_schema',
      REF_ENTITY_DOMAIN => 'schema'
    )
  );

Anforderungen an die Zugriffssteuerung

Um eine DMF zu einem Schema hinzuzufügen, müssen Sie über die folgenden Zugriffssteuerungsrechte verfügen:

  • OWNERSHIP für das Schema.

  • MANAGE DATA QUALITY für das Konto

  • EXECUTE DATA METRIC FUNCTION für das Konto.

  • SNOWFLAKE.DATA_METRIC_USER-Datenbankrolle.

Snowflake führt die DMF nur aus, wenn der Schemaeigentümer weiterhin die MANAGE DATA QUALITY-Berechtigung für das Konto hat.

Damit eine DMF erfolgreich auf ein Objekt im Schema ausgeführt wird, muss der Objekteigentümer über dieselben Berechtigungen verfügen, die für die Verknüpfung der DMF mit dem Objekt erforderlich sind. Eine Liste dieser Berechtigungen finden Sie unter Anforderungen an die Zugriffssteuerung.

Hinweise und Einschränkungen

  • Die FRESHNESSDMF erfordert ein Spaltenargument für Ansichten und externe Tabellen. Wenn Sie also die FRESHNESS DMF zu einem Schema hinzufügen, überspringt Snowflake Ansichten und externe Tabellen bei der Verknüpfung der DMF mit Objekten im Schema.

  • Sie können auf Schemaebene keinen Trigger-basierten Zeitplan festlegen.