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.
- Siehe auch:
Unter diesem Thema:
Syntax¶
CREATE [ OR REPLACE ] DATA METRIC FUNCTION [ IF NOT EXISTS ] <name>
( <arg_name> TABLE( <c1> <data_type> [ , ... ] ) )
RETURNS NUMBER [ [ NOT ] NULL ]
[ LANGUAGE SQL ]
[ COMMENT = '<string_literal>' ]
AS
'<expression>'
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.
( arg_name TABLE( c1 data_type [ , ... ] ) )
Die Signatur der DMF, die als Eingabe für den Ausdruck verwendet wird.
Sie müssen Folgendes angegeben:
Nur einen Argumentnamen
arg_name
für die Tabelle.Mindestens einen Spaltennamen und seinen Datentyp:
c1 data_type
.Sie können optional 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 vonexpression
(z. B. Zeichenfolgenliterale) mit einfachen Anführungszeichen als Escape-Zeichen versehen werden.expression
unterstützt Folgendes nicht:Verwenden des JOIN-Konstrukts.
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¶
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 dieses SQL-Befehls 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. |
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
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¶
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.
Beispiel: Zählen von Nicht-NULL-Werten¶
Erstellen Sie eine DMF, die die Funktion COUNT aufruft, um die Gesamtzahl der Zeilen zurückzugeben, die keine NULL-Werte enthalten, wenn Sie die ersten drei Spalten der Tabelle auswerten:
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
$$;
Beispiel: Fremdschlüsselreferenz¶
Sie können eine Datenmetrikfunktion erstellen, die auf eine andere Tabelle verweist als die Tabelle, der Sie die DMF zuweisen. Sie könnten zum Beispiel eine DMF erstellen, um die Anzahl der Zeilen zu messen, die auf eine Fremdschlüsseleinschränkung zurückzuführen sind. Nehmen wir als repräsentatives Beispiel zwei Tabellen, salespeople
und salesorders
, die eine gemeinsame Spalte namens sp_id
haben, die als Fremdschlüsseleinschränkung bezeichnet wird.
Erstellen Sie eine DMF, um die Anzahl der Zeilen zu ermitteln, die eine Fremdschlüsselreferenz enthalten. Die WHERE-Klausel spezifiziert die Spalte sp_id
, die die Bezeichner der Verkäufer enthält, in der Tabelle salespeople
:
CREATE OR REPLACE DATA METRIC FUNCTION governance.dmfs.foreign_key_sales( arg_t TABLE (arg_c INT)) RETURNS NUMBER AS 'SELECT COUNT(*) FROM arg_t WHERE arg_c IN (SELECT sp_id FROM salespeople)';
Rufen Sie die DMF manuell auf, und geben Sie die Spalte sp_id
der Tabelle salesorders
an:
SELECT governance.dmfs.foreign_key_sales(SELECT sp_id FROM salesorders);
Die Ausgabe gibt die Anzahl der Zeilen in der Tabelle salesorder
zurück, bei denen der Wert in der Spalte sp_id
das Ergebnis eines Wertes in der Spalte sp_id
der Tabelle salespeople
ist.