Kategorien:

DDL zum Laden/Entladen von Daten

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:

CREATE PIPE, DROP PIPE, SHOW PIPES, DESCRIBE PIPE

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 = 'Name_der_Integration'

Nur erforderlich, wenn Snowpipe so konfiguriert ist, dass es Fehlerbenachrichtigungen über Amazon Simple Notification Service (SNS) sendet. Gibt den Namen der Benachrichtigungsintegration an, die für die Kommunikation mit Amazon SNS verwendet wird. Weitere Informationen dazu finden Sie unter Aktivieren von Fehlerbenachrichtigungen für Snowpipe.

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 berichtete executionState ist PAUSED. 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 berichtete executionState ist RUNNING.

    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-Wert' [ , Tag-Name = 'Tag-Wert' , ... ]

Gibt den Tag-Namen (d. h. den Schlüssel) und den Tag-Wert an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann. Die maximale Anzahl von eindeutigen Tag-Schlüsseln, die für ein Objekt festgelegt werden können, ist 20.

COMMENT = 'Zeichenfolge'

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 = 'Pfad'

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 der Pfad-Wert d1/ 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 = 'Startzeit'

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 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:

    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';