Kategorien:

Datenmetrikfunktionen

ACCEPTED_VALUES (System-Datenmetrikfunktion)

Gibt die Anzahl der Datensätze zurück, bei denen der Wert einer Spalte nicht mit einem booleschen Ausdruck übereinstimmt.

Syntax

SNOWFLAKE.CORE.ACCEPTED_VALUES ON ( <column>, <lambda-expression> )
Copy

Argumente

column

Gibt die Spalte an, die Werte enthält, die mit dem booleschen Ausdruck in lambda-expression verglichen werden.

lambda-expression

Gibt einen Lambda-Ausdruck an, der aus der folgenden Syntax besteht: column -> expression.

Die Funktion gibt die Anzahl der Datensätze zurück, bei denen der Wert von :samp:`{column}`nicht mit dem booleschen Ausdruck übereinstimmt. Dieser Ausdruck kann die folgenden Operationen und Funktionen verwenden:

Die column im Lambda-Ausdruck stimmt immer mit dem column-Argument überein.

Zulässige Datentypen

Die in den Argumenten column und lambda-expression angegebene Spalte kann die folgenden Datentypen enthalten:

  • DATE

  • FLOAT

  • NUMBER

  • TIMESTAMP_LTZ

  • TIMESTAMP_NTZ

  • TIMESTAMP_TZ

  • VARCHAR

Rückgabewerte

Die Funktion gibt einen NUMBER-Wert zurück.

Anforderungen an die Zugriffssteuerung

Um eine System-DMF zu verwenden, wählen Sie eine der folgenden Zugriffssteuerungsmethoden aus:

  • Weisen Sie die Datenbankrolle DATA_METRIC_USER der Rolle des Tabelleneigentümers zu, d. h. der Rolle mit der Berechtigung OWNERSHIP für die Tabelle. Diese Datenbankrolle hat die USAGE-Berechtigung für das Schema SNOWFLAKE.CORE und die Berechtigung USAGE für alle System-DMFs im Schema SNOWFLAKE.CORE.

    Weisen Sie der Rolle des Tabelleneigentümers außerdem die folgenden Berechtigungen zu:

    Berechtigung

    Objekt

    Anmerkungen

    EXECUTE DATA METRIC FUNCTION

    Konto

    Mit dieser Berechtigung können Sie steuern, welche Rollen Zugriff auf serverlose Computeressourcen haben, um die System-DMF aufzurufen.

    USAGE

    Datenbank, Schema

    Diese Objekte sind die Datenbank und das Schema, die die „table.referenced“-Tabelle“enthalten, mit der die DMF verknüpft ist.

  • Weisen Sie IMPORTED PRIVILEGES in der SNOWFLAKE-Datenbank der Rolle des Tabelleneigentümers zu. Weitere Informationen dazu finden Sie unter Ermöglicht anderen Rollen die Verwendung von Schemas in der SNOWFLAKE-Datenbank..

  • Verwenden Sie die Rolle ACCOUNTADMIN.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Sie können diese Funktion nicht direkt aufrufen. Wie Sie die Funktion mit einer Tabelle oder Ansicht verknüpfen, sodass sie in regelmäßigen Abständen ausgeführt wird, erfahren Sie unter Eine DMF verknüpfen, um Datenqualitätsprüfungen zu automatisieren.

    Sie können die SYSTEM$DATA_METRIC_SCAN-Funktion verwenden, um die ACCEPTED_VALUES-Funktion für eine Tabelle auszuführen, ohne sie zu verknüpfen.

  • Sie können diese Funktion nicht mehr als einmal mit derselben Spalte verknüpfen.

  • Durch das Umbenennen einer Spalte, die in der ACCEPTED_VALUES-Funktion angegeben ist, wird die Zuordnung zwischen der Funktion und der Tabelle oder Ansicht der Spalte unterbrochen. Wenn Sie die Spalte umbenennen, müssen Sie die Funktion neu zu der Tabelle oder Ansicht zuordnen.

Beispiele

Verknüpfen Sie die Funktion mit der t1-Tabelle, sodass die Anzahl der Datensätze zurückgegeben wird, in denen der Wert der Spalte age nicht gleich fünf ist.

ALTER TABLE t1
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ACCEPTED_VALUES ON (age, age -> age = 5);
Copy

Verknüpfen Sie die Funktion mit der order_details-Ansicht, sodass die Anzahl der Datensätze zurückgegeben wird, in denen der Wert der Spalte order_status nicht in der Liste der Pending-, Dispatched- und Delivered-Zeichenfolgen enthalten ist.

ALTER VIEW order_details
  ADD DATA METRIC FUNCTION SNOWFLAKE.CORE.ACCEPTED_VALUES ON (
    order_status,
    order_status -> order_status IN ('Pending', 'Dispatched', 'Delivered'));
Copy