CREATE AGGREGATION POLICY¶
Erstellt eine neue Aggregationsrichtlinie im aktuellen/angegebenen Schema oder ersetzt eine bestehende Aggregationsrichtlinie.
Weisen Sie nach dem Erstellen einer Aggregationsrichtlinie diese Richtlinie mit einem ALTER TABLE-Befehl zu einer Tabelle oder mit einem ALTER VIEW-Befehl zu einer Ansicht zu.
- Siehe auch:
Syntax¶
CREATE [ OR REPLACE ] AGGREGATION POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS AGGREGATION_CONSTRAINT -> <body>
[ COMMENT = '<string_literal>' ]
Parameter¶
name
Bezeichner für die Aggregationsrichtlinie. Dieser muss für Ihr Konto eindeutig sein.
Der Bezeichnerwert muss mit einem alphabetischen Zeichen 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 Details dazu finden Sie unter Anforderungen an Bezeichner.
body
SQL-Ausdruck, mit dem die Einschränkungen einer Aggregationsrichtlinie festgelegt werden.
Verwenden Sie zum Definieren der Einschränkungen der Aggregationsrichtlinie den SQL-Ausdruck, um eine oder mehrere der folgenden internen Funktionen aufzurufen:
- NO_AGGREGATION_CONSTRAINT
Wenn der Richtlinientext einen Wert für diese Funktion zurückgibt, können Abfragen Daten aus Tabellen oder Ansichten, die eine Aggregationseinschränkung aufweisen, ohne Einschränkung zurückgeben. Der Richtlinientext könnte diese Funktion beispielsweise aufrufen, wenn ein Administrator aus der Tabelle oder Ansicht mit Aggregationseinschränkung Ergebnisse benötigt, die nicht aggregiert sind.
Rufen Sie NO_AGGREGATION_CONSTRAINT ohne Argument auf.
- AGGREGATION_CONSTRAINT
Wenn der Richtlinientext einen Wert aus dieser Funktion zurückgibt, müssen die Abfragen Daten aggregieren, um Ergebnisse zurückgeben zu können. Verwenden Sie das Argument MIN_GROUP_SIZE, um anzugeben, wie viele Datensätze in jeder Aggregationsgruppe enthalten sein müssen.
Die Syntax der AGGREGATION_CONSTRAINT-Funktion lautet:
AGGREGATION_CONSTRAINT ( MIN_GROUP_SIZE => <integer_expression> )
Wobei
integer_expression
die minimale Gruppengröße der Richtlinie darstellt.Es gibt einen Unterschied zwischen der Übergabe von
1
und0
als Argument an die Funktion. In beiden Fällen müssen die Ergebnisse aggregiert werden.Die Übergabe von
1
erfordert auch, dass jede Aggregationsgruppe mindestens einen Datensatz aus der Tabelle mit Aggregationseinschränkung enthält. Bei äußeren Verknüpfungen (Outer Join) muss also mindestens ein Datensatz aus der Tabelle mit Aggregationseinschränkung mit einem Datensatz aus einer ungeschützten Tabelle übereinstimmen.Durch die Übergabe von
0
kann die Abfrage Gruppen zurückgeben, die vollständig aus Datensätzen aus einer anderen Tabelle bestehen. Das bedeutet, dass bei äußeren Joins zwischen einer Tabelle mit Aggregationseinschränkung und einer ungeschützten Tabelle eine Gruppe aus Datensätzen aus der ungeschützten Tabelle bestehen kann, die mit keinem Datensatz in der Tabelle mit Aggregationseinschränkung übereinstimmen.
Der Hauptteil (body) einer Richtlinie kann nicht auf benutzerdefinierte Funktionen, Tabellen oder Ansichten verweisen.
COMMENT = 'string_literal'
Fügt einen Kommentar hinzu oder überschreibt einen vorhandenen Kommentar für die Aggregationsrichtlinie.
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 AGGREGATION POLICY |
Schema |
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.
Weitere Informationen zur DDL und zu Berechtigungen von Aggregationsrichtlinien finden Sie unter Berechtigungen und Befehle.
Nutzungshinweise¶
Wenn Sie eine bestehende Aggregationsrichtlinie aktualisieren möchten und dazu den aktuellen Hauptteil (body) der Richtlinie anzeigen müssen, führen Sie den Befehl DESCRIBE AGGREGATION POLICY oder die Funktion GET_DDL aus.
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.
Beispiele¶
Erstellen einer Aggregationsrichtlinie, die verlangt, dass Abfragen Gruppen von fünf oder mehr Zeilen zurückgeben:
CREATE AGGREGATION POLICY my_policy AS () RETURNS AGGREGATION_CONSTRAINT -> AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
Erstellen einer Aggregationsrichtlinie, die es einem Benutzer mit der Rolle admin
erlaubt, nicht aggregierte Ergebnisse zurückzugeben, während alle anderen Abfragen Gruppen von fünf oder mehr Zeilen zurückgeben müssen:
CREATE AGGREGATION POLICY my_policy AS () RETURNS AGGREGATION_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ADMIN' THEN NO_AGGREGATION_CONSTRAINT() ELSE AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5) END;