CREATE DATA METRIC FUNCTION

Erstellt eine neue Datenmetrikfunktion (DMF) im aktuellen oder angegebenen Schema oder ersetzt eine vorhandene Datenmetrikfunktion.

Wenden Sie nach dem Erstellen einer DMF diese mit dem Befehl ALTER TABLE … ALTER COLUMN auf eine Tabellenspalte oder mit dem Befehl ALTER VIEW auf eine Ansichtsspalte an.

Darüber hinaus unterstützt dieser Befehl die folgenden Varianten:

Siehe auch:

Referenz zu DMF-Befehlen, CREATE OR ALTER <objekt>

Syntax

CREATE [ OR REPLACE ] [ SECURE ] DATA METRIC FUNCTION [ IF NOT EXISTS ] <name>
  ( <table_arg> TABLE( <col_arg> <data_type> [ , ... ] )
    [ , <table_arg> TABLE( <col_arg> <data_type> [ , ... ] ) ] )
  RETURNS NUMBER [ [ NOT ] NULL ]
  [ LANGUAGE SQL ]
  [ COMMENT = '<string_literal>' ]
  AS
  '<expression>'
Copy

Syntaxvariante

CREATE OR ALTER DATA METRIC FUNCTION

Erstellt eine neue Datenmetrikfunktion, wenn sie noch nicht existiert, oder wandelt eine vorhandene Datenmetrikfunktion in die in der Anweisung definierte Funktion um. Eine CREATE OR ALTER DATAMETRICFUNCTION-Anweisung folgt den Syntaxregeln einer CREATE DATAMETRICFUNCTION-Anweisung und hat die gleichen Beschränkungen wie eine ALTER FUNCTION (DMF)-Anweisung.

Im Gegensatz zu einem CREATE OR REPLACE DATA METRIC FUNCTION-Befehl aktualisiert ein CREATE OR ALTER-Befehl das Objekt, ohne es zu löschen und neu zu erstellen.

Zu den unterstützten Funktionsänderungen gehören Änderungen der Eigenschaft COMMENT.

Weitere Informationen dazu finden Sie unter Nutzungshinweise zu CREATE OR ALTER DATAMETRICFUNCTION.

CREATE [ OR ALTER ] DATA METRIC FUNCTION ...
Copy

Erforderliche Parameter

name

Bezeichner für die DMF. Dieser muss für Ihr Schema eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

( table_arg TABLE( col_arg data_type [ , ... ] ) [ , table_arg TABLE( col_arg data_type [ , ... ] ) ] )

Die Signatur der DMF, die als Eingabe für den Ausdruck verwendet wird.

Sie müssen Folgendes angegeben:

  • Ein Argumentname für jede Tabelle (table_arg).

  • Für jede Tabelle einen Argumentnamen für mindestens eine Spalte, zusammen mit ihrem Datentyp (col_arg data_type).

    Sie können optional Argumente für zusätzliche Spalten und deren Datentypen angeben. Die Spalten müssen sich in der gleichen Tabelle befinden und können nicht auf eine andere Tabelle verweisen.

RETURNS NUMBER

Datentyp der Ausgabe der Funktion.

Der Datentyp kann nur NUMBER sein.

AS expression

SQL-Ausdruck, der die Ausgabe der Funktion bestimmt. Der Ausdruck muss deterministisch sein und einen Skalarwert zurückgeben. Der Ausdruck kann auf andere Tabellenobjekte verweisen, z. B. durch Verwendung einer WITH-Klausel oder einer WHERE-Klausel.

Die Trennzeichen um expression können einfache Anführungszeichen oder doppelte Dollarzeichen sein. Die Verwendung von $$ als Trennzeichen vereinfacht das Schreiben von Funktionen, die einfache Anführungszeichen enthalten.

Wenn als Trennzeichen für expression das einfache Anführungszeichen verwendet wird, müssen alle Anführungszeichen innerhalb von expression (z. B. Zeichenfolgenliterale) mit einfachen Anführungszeichen als Escape-Zeichen versehen werden.

expression unterstützt Folgendes nicht:

  • Verwenden nicht deterministischer Funktionen (z. B. CURRENT_TIME).

  • Verweisen auf ein Objekt, das von einem UDF oder UDTF abhängt.

  • Rückgabe einer nicht skalaren Ausgabe.

Optionale Parameter

SECURE

Gibt an, dass die Datenmetrikfunktion sicher ist. Weitere Informationen dazu finden Sie unter Schutz sensibler Informationen mit sicheren UDFs und gespeicherten Prozeduren.

LANGUAGE SQL

Gibt die Sprache an, in der Ausdruck geschrieben wurde.

SQL ist die einzige unterstützte Sprache.

COMMENT = 'string_literal'

Gibt einen Kommentar für die DMF an.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE DATA METRIC FUNCTION

Schema

Die Berechtigung ermöglicht nur die Erstellung von Datenmetrikfunktionen im Schema.

Wenn Sie die Erstellung von benutzerdefinierten Funktionen wie SQL oder Java-UDFs ermöglichen möchten, muss die Rolle über die Berechtigung CREATE FUNCTION verfügen.

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

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.

Allgemeine Nutzungshinweise

  • Wenn Sie eine bestehende Datenmetrikfunktion aktualisieren möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, führen Sie den Befehl DESCRIBE FUNCTION (DMF) aus. oder rufen Sie die Funktion GET_DDL auf.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Nutzungshinweise zu CREATE OR ALTER DATAMETRICFUNCTION

  • Die folgenden Änderungen werden nicht unterstützt:

    • Ändern des Textteils (Body) der Datenmetrikfunktion.

    • Ändern der Datenmetrik und der Definition der Eingabetabelle.

Beispiel: Einzelnes Tabellenargument

Erstellen Sie eine DMF, die die Funktion COUNT aufruft, um die Gesamtzahl der Zeilen zurückzugeben, die positive Zahlen in den ersten drei Spalten der Tabelle haben:

CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
  arg_t TABLE(
    arg_c1 NUMBER,
    arg_c2 NUMBER,
    arg_c3 NUMBER
  )
)
RETURNS NUMBER
AS
$$
  SELECT
    COUNT(*)
  FROM arg_t
  WHERE
    arg_c1>0
    AND arg_c2>0
    AND arg_c3>0
$$;
Copy

Beispiel: Mehrere Tabellenargumente

Gibt die Anzahl der Datensätze zurück, bei denen der Wert einer Spalte in einer Tabelle nicht mit einem entsprechenden Wert in der Spalte einer anderen Tabelle übereinstimmt:

CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.referential_check(
  arg_t1 TABLE (arg_c1 INT), arg_t2 TABLE (arg_c2 INT))
RETURNS NUMBER
AS
$$
  SELECT
    COUNT(*)
    FROM arg_t1
  WHERE
    arg_c1 NOT IN (SELECT arg_c2 FROM arg_t2)
$$;
Copy

Ein Beispiel für die Verwendung dieser DMF zur Überprüfung der referenziellen Integrität finden Sie unter Beispiel: Verwendung mehrerer Tabellenargumente zur Durchführung referenzieller Prüfungen.

Beispiel: Ändern einer Datenmetrikfunktion mit dem Befehl CREATE OR ALTER DATA METRIC FUNCTION

Ändert die im obigen Beispiel erstellte Metrikfunktion für eine einzelne Tabelle, um Sicherheit und Kommentar festzulegen.

CREATE OR ALTER SECURE DATA METRIC FUNCTION governance.dmfs.count_positive_numbers(
  arg_t TABLE(
    arg_c1 NUMBER,
    arg_c2 NUMBER,
    arg_c3 NUMBER
  )
)
RETURNS NUMBER
COMMENT = "count positive numbers"
AS
$$
  SELECT
    COUNT(*)
  FROM arg_t
  WHERE
    arg_c1>0
    AND arg_c2>0
    AND arg_c3>0
$$;
Copy