Catégories :

Table, vue et séquence DDL

ALTER EXTERNAL TABLE

Modifie les propriétés, les colonnes ou les contraintes d’une table externe existante.

Voir aussi :

CREATE EXTERNAL TABLE , DROP EXTERNAL TABLE , SHOW EXTERNAL TABLES

Dans ce chapitre :

Syntaxe

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REFRESH [ '<relative-path>' ]

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> ADD FILES ( '<path>/[<filename>]' [ , [ '<path>/[<filename>'] ] )

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REMOVE FILES ( '<path>/[<filename>]' [ , [ '<path>/[<filename>]' ] )

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> SET
  [ AUTO_REFRESH = { TRUE | FALSE } ]
  [ TAG <TAG_NAME> = '<string_literal>' [ , <TAG_NAME> = '<string_literal>' ... ] ]

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> UNSET
  TAG <TAG_NAME> [ , <TAG_NAME> ... ]

Paramètres

nom

Identificateur de la table externe à 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.

REFRESH [ 'chemin-relatif' ]

Accède aux fichiers de données mis en zone de préparation, et référencés dans la définition de table externe et met à jour les métadonnées de la table :

  • Les nouveaux fichiers dans le chemin sont ajoutés aux métadonnées de la table.

  • Les modifications apportées aux fichiers dans le chemin sont mises à jour dans les métadonnées de la table.

  • Les fichiers qui ne figurent plus dans le chemin sont supprimés des métadonnées de la table.

Spécifiez éventuellement un chemin relatif pour actualiser les métadonnées pour un sous-ensemble spécifique des fichiers de données.

L’utilisation de ce paramètre ne doit être effectuée qu’une seule fois, lors de la création de la table externe. Cette étape synchronise les métadonnées avec le dernier ensemble de fichiers associés dans la zone de préparation et le chemin dans la définition de la table externe. De plus, cette zone de préparation permet de s’assurer que la table externe peut lire les fichiers de données dans la zone de préparation et le chemin spécifiés, et qu’aucun fichier n’a été oublié dans la définition de la table externe.

ADD FILES

Ajoute la liste de fichiers séparés par des virgules spécifiée aux métadonnées de la table externe. En règle générale, les paramètres ADD FILES et REMOVE FILES sont utilisés pour actualiser manuellement les métadonnées d’une table externe (c’est-à-dire lorsque AUTO_REFRESH = FALSE). Les références de fichier sont exprimées sous forme de chemins relatifs vers [WITH] LOCATION dans la définition de table externe. Pour plus d’informations, voir CREATE EXTERNAL TABLE.

Répertoriez le chemin et le nom de fichier de chaque fichier.

L’instruction ALTER EXTERNAL TABLE actualise automatiquement les métadonnées de la table externe et ajoute les fichiers, s’ils sont présents dans l’emplacement de stockage spécifié.

REMOVE FILES

Supprime la liste de fichiers séparés par des virgules spécifiée des métadonnées de la table externe. En règle générale, les paramètres ADD FILES et REMOVE FILES sont utilisés pour actualiser manuellement les métadonnées d’une table externe (c’est-à-dire lorsque AUTO_REFRESH = FALSE). Les références de fichier sont exprimées sous forme de chemins relatifs vers [WITH] LOCATION dans la définition de table externe. Pour plus d’informations, voir CREATE EXTERNAL TABLE.

Répertoriez le chemin et le nom de fichier de chaque fichier.

L’instruction ALTER EXTERNAL TABLE actualise automatiquement les métadonnées de la table externe et supprime les fichiers.

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour la table externe (séparée par des espaces, des virgules ou de nouvelles lignes).

AUTO_REFRESH = TRUE | FALSE

Spécifie si Snowflake doit activer le déclenchement des actualisations automatiques des métadonnées de la table externe lorsque de nouveaux fichiers de données ou des fichiers de données mis à jour sont disponibles dans la zone de préparation externe nommée spécifiée dans le paramètre [ WITH ] LOCATION =.

Note

  • Vous devez configurer une notification d’événement pour votre emplacement de stockage (Amazon S3 ou Microsoft Azure) pour notifier Snowflake lorsque des données nouvelles ou mises à jour sont disponibles pour être lues dans les métadonnées de la table externe. Pour plus d’informations, voir Actualisation automatique des tables externes Amazon S3 (S3) ou Actualisation automatique des tables externes pour Azure Blob Storage (Azure).

  • Actuellement, la possibilité d’actualiser automatiquement les métadonnées n’est pas disponible pour les tables externes faisant référence à des zones de préparation de Google Cloud Storage.

    Comme solution de contournement, nous suggérons de suivre nos bonnes pratiques pour mettre en zone de préparation vos fichiers de données et d’exécuter de façon intermittente une instruction ALTER EXTERNAL TABLE … REFRESH pour enregistrer les fichiers manquants. Pour des performances satisfaisantes, nous recommandons également d’utiliser un préfixe de chemin sélectif avec ALTER EXTERNAL TABLE pour réduire le nombre de fichiers qui doivent être répertoriés et vérifiés s’ils ont déjà été enregistrés (par exemple, nom_compartiment/YYYY/MM/DD/ ou même nom_compartiment/YYYY/MM/DD/HH/ en fonction de votre volume).

TRUE

Snowflake permet de déclencher des actualisations automatiques des métadonnées de la table externe.

FALSE

Snowflake n’active pas le déclenchement d’actualisations automatiques des métadonnées de la table externe. Vous devez actualiser manuellement les métadonnées de la table externe avec ALTER EXTERNAL TABLE … REFRESH pour synchroniser les métadonnées avec la liste actuelle des fichiers dans le chemin de la zone de préparation.

Par défaut : TRUE

TAG TAG_NAME = 'litéral_chaine' [ , TAG_NAME = '<string_literal>' ... ]

Spécifie le nom de la balise (c’est-à-dire la clé) et la valeur 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.

UNSET

  • TAG TAG_NAME [ , TAG_NAME ... ]

Notes sur l’utilisation

  • Seul le propriétaire de la table externe (c’est-à-dire le rôle doté du privilège OWNERSHIP sur la table externe) ou d’un niveau supérieur peut exécuter cette commande.

  • Les commandes suivantes peuvent être utilisées dans des transactions explicites (en utilisant BEGINCOMMIT) :

    • ALTER EXTERNAL TABLE ... REFRESH

    • ALTER EXTERNAL TABLE ... ADD FILES

    • ALTER EXTERNAL TABLE ... REMOVE FILES

    Les transactions explicites peuvent être utilisées pour garantir un état cohérent lors du remplacement manuel de fichiers mis à jour dans des métadonnées d’une table externe.

  • Ajoutez ou supprimez des colonnes dans une table externe à l’aide de la syntaxe suivante :

    Ajouter une colonne
    ALTER TABLE <name> ADD COLUMN ( <col_name> <col_type> AS <expr> ) [, ...]
    
    Renommer une colonne
    ALTER TABLE <name> RENAME COLUMN <col_name> to <new_col_name>
    
    Détruire une colonne
    ALTER TABLE <name> DROP COLUMN <col_name>
    

    Note

    Les colonnes VALUE et METADATA$FILENAME par défaut ne peuvent pas être détruites.

    Voir la rubrique ALTER TABLE pour consulter des exemples.

  • Pour ajouter et supprimer une politique d’accès aux lignes sur une table externe, utilisez la commande ALTER TABLE .

Exemples

Actualiser manuellement l’ensemble des métadonnées de table externe en fonction des modifications apportées aux fichiers de données référencés :

ALTER EXTERNAL TABLE exttable_json REFRESH;

Semblable au premier exemple, mais actualiser manuellement seulement un chemin des métadonnées pour une table externe :

CREATE OR REPLACE STAGE mystage
  URL='<cloud_platform>://twitter_feed/logs/'
  .. ;

-- Create the external table
-- 'daily' path includes paths in </YYYY/MM/DD/> format
CREATE OR REPLACE EXTERNAL TABLE daily_tweets
  WITH LOCATION = @twitter_feed/daily/;

-- Refresh the metadata for a single day of data files by date
ALTER EXTERNAL TABLE exttable_part REFRESH '2018/08/05/';

Ajouter une liste explicite de fichiers aux métadonnées d’une table externe :

ALTER EXTERNAL TABLE exttable1 ADD FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');

Supprimer une liste explicite de fichiers des métadonnées d’une table externe :

ALTER EXTERNAL TABLE exttable1 REMOVE FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');

Remplacer un fichier journal mis à jour en décembre 2019 dans les métadonnées d’une table externe dans une transaction explicite :

BEGIN;

ALTER EXTERNAL TABLE extable1 REMOVE FILES ('2019/12/log1.json.gz');

ALTER EXTERNAL TABLE extable1 ADD FILES ('2019/12/log1.json.gz');

COMMIT;