ALTER PIPE¶
Ändert einen begrenzten Satz von Eigenschaften für ein vorhandenes Pipeobjekt. Unterstützt auch die folgenden Operationen:
Pausieren der Pipe.
Aktualisieren einer Pipe (d. h. Kopieren der angegebenen Staging-Datendateien in die Erfassungswarteschlange von Snowpipe zum Laden in die Zieltabelle).
Hinzufügen/Überschreiben/Entfernen eines Kommentars zu einer Pipe.
Setzen/Entfernen eines Tags auf einer Pipe.
- Siehe auch:
Syntax¶
ALTER PIPE [ IF EXISTS ] <name> SET { [ objectProperties ]
[ COMMENT = '<string_literal>' ] }
ALTER PIPE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER PIPE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER PIPE [ IF EXISTS ] <name> UNSET { <property_name> | COMMENT } [ , ... ]
ALTER PIPE [ IF EXISTS ] <name> REFRESH { [ PREFIX = '<path>' ] [ MODIFIED_AFTER = <start_time> ] }
Wobei:
objectProperties ::= PIPE_EXECUTION_PAUSED = TRUE | FALSE
Parameter¶
name
Gibt den Bezeichner für die zu ändernde Pipe an. Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.
SET ...
Gibt eine (oder mehrere) Eigenschaften an, die für die Pipe festgelegt werden sollen (getrennt durch Leerzeichen, Kommas oder neue Zeilen):
ERROR_INTEGRATION = 'integration_name'
Nur erforderlich, wenn Snowpipe so konfiguriert ist, dass es Fehlerbenachrichtigungen an einen Cloudmessagingdienst sendet. Gibt den Namen der Benachrichtigungsintegration an, die für die Kommunikation mit dem Messagingdienst verwendet wird. Weitere Informationen dazu finden Sie unter Snowpipe-Fehlerbenachrichtigungen.
PIPE_EXECUTION_PAUSED = TRUE | FALSE
Gibt an, ob eine laufende Pipe angehalten werden soll, typischerweise in Vorbereitung auf die Übertragung der Eigentümerschaft der Pipe:
TRUE
hält die Pipe an. Der von SYSTEM$PIPE_STATUS berichteteexecutionState
istPAUSED
. Beachten Sie, dass der Pipe-Eigentümer weiterhin Dateien an eine angehaltene Pipe senden kann, diese jedoch erst nach Fortsetzen der Pipe verarbeitet werden.FALSE
setzt die Pipe fort. Der von SYSTEM$PIPE_STATUS berichteteexecutionState
istRUNNING
.Bemerkung
In jedem der folgenden Szenarien ist es erforderlich, das Fortsetzen einer Pipe durch Aufruf der Funktion SYSTEM$PIPE_FORCE_RESUME zu erzwingen:
Übertragen der Eigentümerschaft der Pipe auf eine andere Rolle. Mithilfe dieser Anforderung kann der neue Eigentümer den Pipestatus bewerten und feststellen, wie viele Dateien darauf warten, durch Aufruf von SYSTEM$PIPE_STATUS geladen zu werden.
Erlauben, dass ein Pipeobjekt veraltet, das mithilfe von Cloudmessaging das Laden von Daten auslöst (d. h. mit
AUTO_INGEST = TRUE
in der Pipedefinition). Eine Pipe gilt als veraltet, wenn sie länger als die begrenzte Aufbewahrungsfrist für Ereignismeldungen, die für die Pipe empfangen werden, angehalten ist (standardmäßig 14 Tage).
Standard:
FALSE
(die Pipe wird standardmäßig ausgeführt)
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.
Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.
Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.
COMMENT = 'string'
Fügt einen Kommentar hinzu oder überschreibt einen vorhandenen Kommentar für die Pipe.
UNSET ...
Gibt eine (oder mehrere) Eigenschaften an, die für die Pipe deaktiviert werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden:
PIPE_EXECUTION_PAUSED
TAG tag_name [ , tag_name ... ]
COMMENT
Sie können mehrere Eigenschaften mit einer einzigen ALTER-Anweisung zurücksetzen; jede Eigenschaft muss jedoch durch ein Komma getrennt werden. Wenn Sie eine Eigenschaft zurücksetzen, geben Sie nur den Namen an. Die Angabe eines Wertes für die Eigenschaft gibt einen Fehler zurück.
REFRESH
Kopiert einen Satz von Staging-Datendateien in die Erfassungswarteschlange von Snowpipe, um sie in die Zieltabelle zu laden. Diese Klausel akzeptiert einen optionalen Pfad und kann die Liste der zu ladenden Dateien basierend auf einer bestimmten Startzeit weiter filtern.
Bemerkung
Mit diesem SQL-Befehl können nur Datendateien geladen werden, die innerhalb der letzten 7 Tage im Stagingbereich bereitgestellt wurden.
Mit diesem SQL-Befehl wird der Ladeverlauf für Pipe und Zieltabelle geprüft. Infolgedessen stellt der Befehl nur die Dateien in die Warteschlange, die nicht bereits auf folgende Weise geladen wurden:
Mit derselben Pipe, vorausgesetzt, der Pipe-Eigentümer hat die Pipe nach dem Laden der Dateien nicht neu erstellt, oder
Mit einer COPY INTO <Tabelle>-Anweisung
Wichtig
Die REFRESH-Funktionalität ist für den kurzfristigen Gebrauch gedacht, um bestimmte Probleme zu beheben, wenn Snowpipe eine Teilmenge von Dateien nicht lädt. Sie ist nicht für den regelmäßigen Gebrauch bestimmt.
PREFIX = 'path'
Pfad (oder Präfix), der an die Stagingbereichsreferenz in der Pipedefinition angehängt wird. Der Pfad begrenzt die Anzahl der zu ladenden Dateien. Nur Dateien, die mit dem angegebenen Pfad beginnen, werden in das Laden von Daten einbezogen.
Angenommen, die Pipedefinition verweist auf
@mystage/path1/
. Wenn derpath
-Wertd1/
ist, begrenzt die ALTER PIPE-Anweisung das Laden von Dateien in den@mystage
-Stagingbereich mit dem Pfad/path1/d1/
. Weitere Informationen dazu finden Sie in den Beispielen.Beachten Sie, dass der Pfad in einfache Anführungszeichen gesetzt werden muss.
MODIFIED_AFTER = 'start_time'
Zeitstempel (im Format ISO-8601) der ältesten Datendateien, die basierend auf dem Datum LAST_MODIFIED (d. h. Staging-Datum der Datei) in die Erfassungswarteschlange von Snowpipe kopiert werden sollen.
Der Standardwert und der maximal zulässige Wert ist 7 Tage.
Nutzungshinweise¶
Nur der Pipe-Eigentümer (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Pipe) kann Eigenschaften für eine Pipe festlegen oder aufzuheben.
Eine Nicht-Eigentümer-Rolle mit den folgenden minimalen Berechtigungen kann eine Pipe aktualisieren (mit ALTER PIPE … REFRESH …):
Berechtigung
Objekt
Anmerkungen
OPERATE
Pipe
USAGE
Stagingbereich in der Pipe-Definition
Nur für externe Stagingbereiche
READ
Stagingbereich in der Pipe-Definition
Nur für interne Stagingbereiche
SELECT, INSERT
Tabelle in der Pipe-Definition
Eine Nicht-Eigentümer-Rolle mit der Berechtigung OPERATE für die Pipe kann eine Pipe anhalten oder fortsetzen (mit ALTER PIPE … SET PIPE_EXECUTION_PAUSED = TRUE | FALSE).
SQL-Operationen auf Schemaobjekten erfordern ebenfalls die USAGE-Berechtigung für die Datenbank und das Schema, die das Objekt enthalten.
Derzeit können die folgenden Eigenschaften von Pipes nicht mit einer ALTER PIPE-Anweisung geändert werden:
COPY INTO <Tabelle>-Anweisung
Parameter
AWS_SNS_TOPIC
Parameter
INTEGRATION
Erstellen Sie die Pipe stattdessen mit einer CREATE OR REPLACE PIPE-Anweisung neu.
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¶
Anhalten der Pipe mypipe
:
alter pipe mypipe SET PIPE_EXECUTION_PAUSED = true;
Hinzufügen oder Ändern des Kommentars für die Pipe mypipe
:
alter pipe mypipe SET COMMENT = "Pipe for North American sales data";
Aktualisieren einer Pipe¶
Nehmen Sie die folgenden Beispiele:
CREATE PIPE mypipe AS COPY INTO mytable FROM @mystage/path1/;
Laden Sie Datendateien aus dem Stagingbereich und Pfad @mystage/path1/
in die Tabelle mytable
, wie in der mypipe
-Pipedefinition definiert:
ALTER PIPE mypipe REFRESH;
Wie im vorherigen Beispiel, aber fügen Sie d1
an den Pfad an, um die Liste der zu ladenden Dateien weiter einzuschränken. Im aktuellen Beispiel werden mit der Anweisung Dateien aus dem Stagingbereich und Pfad @mystage/path1/d1/
geladen:
ALTER PIPE mypipe REFRESH PREFIX='d1/';
Wie im vorherigen Beispiel, aber es werden nur Dateien geladen, die nach einem bestimmten Zeitstempel bereitgestellt wurden:
ALTER PIPE mypipe REFRESH PREFIX='d1/' MODIFIED_AFTER='2018-07-30T13:56:46-07:00';