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 ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER ICEBERG TABLE [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
Où :
clusteringAction ::= { CLUSTER BY ( <expr> [ , <expr> , ... ] ) /* { SUSPEND | RESUME } RECLUSTER is valid action */ | { SUSPEND | RESUME } RECLUSTER | DROP CLUSTERING KEY }
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 que Snowflake ne gère pas, 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 ests3://mybucket_us_east_1
, indiquezmetadata/v1.metadata.json
commemetadata_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 duEXTERNAL_VOLUME
.Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à
BASE_LOCATION
. Par exemple, si le chemin d’accès complet à votre fichier de métadonnées ests3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
, indiquezmetadata/v1.metadata.json
commemetadata-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 d’informations sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.
UNSET
Actuellement, cette commande permet uniquement de désactiver les éléments suivants :
TAG tag_name [ , tag_name ... ]
Actions de clustering (clusteringAction
)¶
Note
Le clustering est pris en charge uniquement pour les tables qui utilisent Snowflake comme catalogue Iceberg.
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.
Le clustering est pris en charge uniquement pour les tables qui utilisent Snowflake comme catalogue Iceberg. 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.
L’utilisation de la commande ALTER ICEBERG TABLE … REFRESH dans les transactions (implicites ou explicites) n’est pas prise en charge.
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 duEXTERNAL_VOLUME
.Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à
BASE_LOCATION
. Par exemple, si le chemin d’accès complet à votre fichier de métadonnées ests3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
, indiquezmetadata/v1.metadata.json
commemetadata-file-relative-path
.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¶
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
.
Pour actualiser une table créée à l’aide de l’ancienne syntaxe, indiquez un chemin d’accès relatif à BASE_LOCATION
. 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';
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;
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;