CREATE PROJECTION POLICY¶
Erstellt eine neue Projektionsrichtlinie im aktuellen/angegebenen Schema oder ersetzt eine bestehende Projektionsrichtlinie.
Wenden Sie nach dem Erstellen einer Projektionsrichtlinie 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 ] PROJECTION POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS PROJECTION_CONSTRAINT -> <body>
[ COMMENT = '<string_literal>' ]
Parameter¶
name
Bezeichner für die Projektionsrichtlinie. 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, der bestimmt, ob eine Spalte projiziert werden soll.
Der Ausdruck kann CASE und andere logische Anweisungen enthalten, muss aber die Funktion PROJECTION_CONSTRAINT aufrufen:
PROJECTION_CONSTRAINT(ALLOW=>{TRUE|FALSE}, ENFORCEMENT=><enforcement_style>)
ALLOW
(boolean) - TRUE erlaubt die Projektion der Spalte. FALSE verhindert, dass die Spalte projiziert wird, wobei die Verhaltensweise durch ENFORCEMENT festgelegt wird. FALSE betrifft nur Spalten, die in der endgültigen Ergebnistabelle erscheinen.ENFORCEMENT
(Zeichenfolge, optional) - Wenn ALLOW=FALSE, wird angegeben, was geschehen soll, wenn eine Abfrage eine geschützte Spalte enthält. Unterstützte Werte:FAIL - Die Abfrage schlägt fehl, wenn eine geschützte Spalte in der äußersten Abfrage enthalten ist.
NULLIFY - Alle Zeilen in der geschützten Spalte geben den Wert NULL zurück.
Standard: FAIL
COMMENT = 'string_literal'
Fügt einen Kommentar hinzu oder überschreibt einen vorhandenen Kommentar für die Projektionsrichtlinie.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
CREATE PROJECTION POLICY |
Schema |
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.
Weitere Informationen zur DDL und zu Berechtigungen von Projektionsrichtlinien finden Sie unter Berechtigungen und Befehle.
Nutzungshinweise¶
Wenn Sie eine bestehende Projektionsrichtlinie aktualisieren möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, können Sie den Befehl DESCRIBE PROJECTION POLICY oder die Funktion GET_DDL ausführen.
Die
OR REPLACE
- undIF NOT EXISTS
-Klauseln schließen sich gegenseitig aus. Sie können nicht beide in derselben Anweisung verwendet werden.CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Beispiele¶
Projizieren einer Spalte nicht zulassen:
CREATE OR REPLACE PROJECTION POLICY do_not_project AS () RETURNS PROJECTION_CONSTRAINT -> PROJECTION_CONSTRAINT(ALLOW => false);
Projizieren Sie eine Spalte für die kundenspezifische Rolle analyst
. Lassen Sie andernfalls die Abfrage zu, ersetzen Sie aber alle geschützten Spaltenwerte durch NULL:
CREATE OR REPLACE PROJECTION POLICY project_analyst_only AS () RETURNS PROJECTION_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ANALYST' THEN PROJECTION_CONSTRAINT(ALLOW => true) ELSE PROJECTION_CONSTRAINT(ALLOW => false, ENFORCEMENT => 'NULLIFY') END;