Catégories :

Chargement et déchargement des données DDL

ALTER PIPE

Modifie un ensemble limité de propriétés pour un objet de canal existant. Prend également en charge les opérations suivantes :

  • Mettre le canal en pause.

  • Actualiser un canal (c’est-à-dire copier les fichiers de données mis en zone de préparation spécifiés dans la file d’attente d’acquisition Snowpipe pour un chargement dans la table cible).

  • Ajouter/écraser/supprimer un commentaire pour un canal.

  • Définir ou annuler une balise sur un canal.

Voir aussi :

CREATE PIPE, DROP PIPE , SHOW PIPES , DESCRIBE PIPE

Syntaxe

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> ] }

Où :

objectProperties ::=
  PIPE_EXECUTION_PAUSED = TRUE | FALSE

Paramètres

name

Indique l’identificateur du canal à modifier. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

SET ...

Spécifie une ou plusieurs propriétés à définir pour le canal (séparées par des espaces, des virgules ou des sauts de ligne) :

ERROR_INTEGRATION = 'integration_name'

Requis uniquement lors de la configuration de Snowpipe pour envoyer des notifications d’erreur à un service de messagerie Cloud. Spécifie le nom de l’intégration de notification utilisée pour communiquer avec le service de messagerie. Pour plus d’informations, voir Notifications d’erreur Snowpipe.

Note

Pris en charge en tant que fonctionnalité préliminaire.

PIPE_EXECUTION_PAUSED = TRUE | FALSE

Indique s’il faut interrompre ou non le fonctionnement d’un canal, généralement en vue du transfert de propriété du canal :

  • TRUE interrompt le canal. Le executionState signalé par SYSTEM$PIPE_STATUS est PAUSED. Notez que le propriétaire du canal peut continuer à soumettre des fichiers dans un canal mis en pause ; cependant, ces fichiers ne seront pas traités avant la reprise du canal.

  • FALSE reprend le canal. Le executionState signalé par SYSTEM$PIPE_STATUS est RUNNING.

    Note

    Dans l’un ou l’autre des scénarios suivants, il faut forcer un canal à reprendre en appelant la fonction SYSTEM$PIPE_FORCE_RESUME :

    • Transfert de la propriété du canal à un autre rôle. Cette exigence permet au nouveau propriétaire d’évaluer le statut du canal et de déterminer combien de fichiers sont en attente d’être chargés à l’aide de la fonction SYSTEM$PIPE_STATUS.

    • Autorisation d’un objet de canal qui exploite la messagerie Cloud pour déclencher des chargements de données (c’est-à-dire où AUTO_INGEST = TRUE dans la définition du canal) de devenir obsolète. Un canal est considéré comme obsolète lorsqu’il est mis en pause pendant une durée supérieure à la période de conservation limitée des messages d’événements reçus pour le canal (14 jours par défaut).

Valeur par défaut : FALSE (le canal est lancé par défaut)

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

COMMENT = 'string'

Ajoute un commentaire ou écrase un commentaire existant pour le canal.

UNSET ...

Spécifie une ou plusieurs propriétés à désactiver pour le canal, qui les réinitialise aux valeurs par défaut :

  • PIPE_EXECUTION_PAUSED

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

Vous pouvez réinitialiser plusieurs propriétés avec une seule instruction ALTER ; cependant, chaque propriété doit être séparée par une virgule. Lors de la réinitialisation d’une propriété, spécifiez seulement le nom ; si vous spécifiez une valeur pour la propriété, vous obtiendrez une erreur.

REFRESH

Copie un ensemble de fichiers de données mis en zone de préparation dans la file d’attente d’acquisition Snowpipe pour un chargement dans la table cible. Cette clause accepte un chemin d’accès facultatif et peut filtrer davantage la liste des fichiers à charger en fonction d’une heure de début spécifiée.

Note

  • Cette commande SQL ne peut charger que des fichiers de données qui ont été mis en zone de préparation au cours des 7 derniers jours.

  • Cette commande SQL vérifie l’historique de chargement à la fois pour le canal et la table cible. Par conséquent, la commande met en file d’attente uniquement les fichiers qui n’ont pas déjà été chargés en utilisant soit :

    • Le même canal, à condition que le propriétaire du canal n’ait pas recréé le canal après le chargement des fichiers.

    • Une instruction COPY INTO <table>.

Important

La fonctionnalité REFRESH est destinée à une utilisation à court terme pour résoudre des problèmes spécifiques lorsque Snowpipe ne parvient pas à charger un sous-ensemble de fichiers et n’est pas destiné à une utilisation normale.

PREFIX = 'path'

Chemin d’accès (ou préfixe) ajouté à la référence de mise en zone de préparation dans la définition du canal. Le chemin d’accès limite l’ensemble des fichiers à charger. Seuls les fichiers qui commencent par le chemin d’accès spécifié sont inclus dans le chargement de données.

Par exemple, supposons que la définition du canal fasse référence à @mystage/path1/. Si la valeur path est d1/, l’instruction ALTER PIPE limite les chargements aux fichiers de la zone de préparation @mystage avec le chemin d’accès /path1/d1/. Voir les exemples pour plus d’informations.

Notez que le chemin doit être entouré de guillemets simples.

MODIFIED_AFTER = 'start_time'

Horodatage (au format ISO-8601) des fichiers de données les plus anciens à copier dans la file d’attente d’ingestion Snowpipe en fonction de la date LAST_MODIFIED (c’est-à-dire la date à laquelle un fichier a été mis en zone de préparation).

La valeur par défaut est de 7 jours.

Notes sur l’utilisation

  • Seul le propriétaire du canal (c’est-à-dire le rôle ayant le privilège OWNERSHIP sur le canal) peut définir ou annuler les propriétés d’un canal.

    Un rôle de non-propriétaire avec les privilèges minimums suivants peut actualiser un canal (en utilisant ALTER PIPE … REFRESH …) :

    Privilège

    Objet

    Remarques

    OPERATE

    Canal

    USAGE

    Définition de la zone de préparation d’un canal

    Zones de préparation externes uniquement

    READ

    Définition de la zone de préparation d’un canal

    Zones de préparation internes uniquement

    SELECT, INSERT

    Table dans la définition du canal

    Un rôle non-propriétaire avec le privilège OPERATE sur le canal peut suspendre ou reprendre un canal (en utilisant ALTER PIPE … SET PIPE_EXECUTION_PAUSED = TRUE | FALSE).

    Les opérations SQL sur les objets de schéma nécessitent également le privilège USAGE sur la base de données et le schéma qui contiennent l’objet.

  • Actuellement, il n’est pas possible de modifier les propriétés de canal suivantes à l’aide d’une instruction ALTER PIPE :

    À la place, recréez le canal à l’aide d’une instruction CREATE OR REPLACE PIPE.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Mettre en pause le canal mypipe :

alter pipe mypipe SET PIPE_EXECUTION_PAUSED = true;

Ajouter ou modifier le commentaire pour le canal mypipe :

alter pipe mypipe SET COMMENT = "Pipe for North American sales data";

Actualisation d’un canal

Préparer des exemples :

CREATE PIPE mypipe AS COPY INTO mytable FROM @mystage/path1/;

Charger les fichiers de données de la zone de préparation @mystage/path1/ et du chemin d’accès dans la table mytable, comme défini dans la définition du canal mypipe :

ALTER PIPE mypipe REFRESH;

Comme dans l’exemple précédent, mais en ajoutant d1 au chemin d’accès pour limiter la liste des fichiers à charger. Dans l’exemple actuel, l’instruction charge les fichiers à partir de la zone de préparation @mystage/path1/d1/ et du chemin d’accès :

ALTER PIPE mypipe REFRESH PREFIX='d1/';

Comme dans l’exemple précédent, mais en ne chargeant que les fichiers mis en zone de préparation après un horodatage spécifié :

ALTER PIPE mypipe REFRESH PREFIX='d1/' MODIFIED_AFTER='2018-07-30T13:56:46-07:00';
Revenir au début