ALTER ICEBERG TABLE

Modifie les propriétés, les colonnes ou les contraintes d’une table Iceberg existante. Lorsqu’une table Iceberg utilise une intégration de catalogue, utilisez ALTER ICEBERG TABLE pour actualiser la table en y ajoutant les nouvelles données.

Vous pouvez également utiliser ALTER ICEBERG TABLE pour convertir une table qui utilise une intégration de catalogue en une table qui utilise Snowflake comme catalogue Iceberg. Pour plus d’informations, voir Conversion d’une table Iceberg.

Cette rubrique fait référence aux tables Iceberg en les appelant simplement « tables », sauf lorsque le fait de préciser tables Iceberg permet d’éviter toute confusion.

Voir aussi :

CREATE ICEBERG TABLE , DROP ICEBERG TABLE , SHOW ICEBERG TABLES , DESCRIBE ICEBERG TABLE

Syntaxe

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> REFRESH [ '<metadata_file_relative_path>' ]

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> CONVERT TO MANAGED [ BASE_LOCATION = '<file_path>' ]

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> clusteringAction

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> SET
  TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> UNSET
  TAG <tag_name> [ , <tag_name> ... ]
Copy

Où :

clusteringAction ::=
  {
     CLUSTER BY ( <expr> [ , <expr> , ... ] )
     /* { SUSPEND | RESUME } RECLUSTER is valid action */
   | { SUSPEND | RESUME } RECLUSTER
   | DROP CLUSTERING KEY
  }
Copy

Paramètres

name

Identificateur de la table Iceberg à 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 [ 'metadata_file_relative_path' ]

Accède à un fichier de métadonnées au chemin d’accès spécifié (par rapport à l’emplacement de stockage du volume externe de la table) d’une table Iceberg non gérée par Snowflake, et met à jour les métadonnées de la table.

Utilisez cette option uniquement si votre table Iceberg utilise des fichiers Iceberg dans le stockage d’objets comme source. Omettez cette option si vous utilisez AWS Glue comme catalogue Iceberg.

Par exemple, si s3://mybucket_us_east_1/metadata/v1.metadata.json est le chemin d’accès complet à votre fichier de métadonnées et si l’emplacement de stockage du volume externe associé à la table est s3://mybucket_us_east_1, indiquez metadata/v1.metadata.json comme metadata_file_relative_path.

Note

Avant la version 7.34 de Snowflake, un paramètre nommé BASE_LOCATION (également appelé FILE_PATH dans les versions précédentes) était nécessaire pour créer une table à partir de fichiers Iceberg dans le stockage d’objets. Le paramètre spécifiait un chemin d’accès relatif à partir de l’emplacement du EXTERNAL_VOLUME de la table.

Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à l”BASE_LOCATION de la table. Par exemple, si le chemin d’accès complet à votre fichier de métadonnées est s3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json, indiquez metadata/v1.metadata.json comme metadata-file-relative-path.

CONVERT TO MANAGED

Convertit une table Iceberg en lecture seule qui utilise une intégration de catalogue en une table qui utilise Snowflake comme catalogue Iceberg. La table convertie prend en charge les opérations de lecture et d’écriture, et Snowflake prend en charge la maintenance tout au long du cycle de vie de la table, comme le compactage. Pour plus d’informations, voir Conversion d’une table Iceberg.

[ BASE_LOCATION = 'file_path' ]

Spécifie un chemin d’accès relatif à un répertoire à partir de l’emplacement du EXTERNAL_VOLUME de la table auquel Snowflake peut écrire les données et les métadonnées de la table. Vous devez spécifier une valeur pour cette propriété lors de la conversion si l’instruction CREATE ICEBERG TABLE d’origine ne permettait pas ou n’incluait pas d”BASE_LOCATION.

La valeur de ce paramètre ne peut pas être modifiée après la conversion d’une table.

SET ...

Spécifie un(e) 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) :

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.

UNSET

Actuellement, vous pouvez uniquement désactiver une balise dans cette commande :

TAG tag_name [ , tag_name ... ]

Action de clustering (clusteringAction)

CLUSTER BY ( expr [ , expr , ... ] )

Spécifie (ou modifie) une ou plusieurs colonnes de table ou expressions de colonne en tant que clé de clustering pour la table. Il s’agit des colonnes/expressions pour lesquelles le clustering est assuré par le Clustering automatique.

Pour en savoir plus sur le clustering, voir Clés de clustering et tables en cluster.

SUSPEND | RESUME RECLUSTER

Active ou désactive Clustering automatique pour la table.

DROP CLUSTERING KEY

Détruit la clé de clustering pour la table.

Pour plus d’informations sur les clés de clustering et le reclustering à proprement parler, voir Fonctionnement des structures de table dans Snowflake.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

OWNERSHIP

Table Iceberg

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

USAGE

Volume externe

Nécessaire pour actualiser manuellement les métadonnées de la table.

USAGE

Format de fichier

Nécessaire pour actualiser manuellement les métadonnées de la table.

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

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

  • Pour ajouter un clustering à une table Iceberg, vous devez également disposer du privilège USAGE ou OWNERSHIP sur le schéma et la base de données qui contiennent la table.

  • La commande suivante peut être utilisée dans des transactions explicites (via BEGINCOMMIT) : ALTER ICEBERG TABLE ... REFRESH ['metadata_file_relative_pathname']

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

  • Avant la version 7.34 de Snowflake, un paramètre nommé BASE_LOCATION (également appelé FILE_PATH dans les versions précédentes) était nécessaire pour créer une table à partir de fichiers Iceberg dans le stockage d’objets. Le paramètre spécifiait un chemin d’accès relatif à partir de l’emplacement du EXTERNAL_VOLUME de la table.

    Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à l”BASE_LOCATION de la table. Par exemple, si le chemin d’accès complet à votre fichier de métadonnées est s3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json, indiquez metadata/v1.metadata.json comme metadata-file-relative-path.

  • Regarding metadata:

    Attention

    Customers should ensure that no personal data (other than for a User object), sensitive data, export-controlled data, or other regulated data is entered as metadata when using the Snowflake service. For more information, see Champs de métadonnées dans Snowflake.

Exemples

Actualiser manuellement les métadonnées de table des tables qui utilisent une intégration de catalogue

Fichiers Iceberg dans le stockage d’objets

Cet exemple actualise manuellement les métadonnées de la table en fonction des modifications apportées à un nouveau fichier de métadonnées. Dans cet exemple, le chemin d’accès complet au fichier de métadonnées est <external-volume-storage-base-url>/path/to/metadata/v2.metadata.json.

Note

Avant la version 7.34 de Snowflake, un paramètre nommé BASE_LOCATION (également appelé FILE_PATH dans les versions précédentes) était nécessaire pour créer une table à partir de fichiers Iceberg dans le stockage d’objets. Le paramètre spécifiait un chemin d’accès relatif à partir de l’emplacement du EXTERNAL_VOLUME de la table.

Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à l”BASE_LOCATION de la table. Par exemple, si le chemin d’accès complet à votre fichier de métadonnées est s3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json, indiquez metadata/v1.metadata.json comme metadata-file-relative-path.

ALTER ICEBERG TABLE my_iceberg_table REFRESH 'path/to/metadata/v2.metadata.json';
Copy

AWS Glue

Cet exemple actualise manuellement les métadonnées d’une table qui utilise AWS Glue comme catalogue Iceberg. Lorsque vous utilisez AWS Glue comme catalogue Iceberg, vous ne spécifiez pas de chemin d’accès au fichier de métadonnées dans la commande d’actualisation.

ALTER ICEBERG TABLE myIcebergTable REFRESH;
Copy

Conversion d’une table Iceberg

L’exemple suivant utilise l’instruction ALTER ICEBERG TABLE … CONVERT TO MANAGED pour convertir une table non gérée par Snowflake en une table qui utilise Snowflake comme catalogue Iceberg.

ALTER ICEBERG TABLE myTable CONVERT TO MANAGED
  BASE_LOCATION = myBaseLocation;
Copy