ALTER ICEBERG TABLE … CONVERT TO MANAGED

Convertit une table Apache Iceberg qui utilise un catalogue Iceberg externe en une table qui utilise Snowflake comme catalogue (une table Iceberg gérée par Snowflake).

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 Avant et après la conversion de table.

Voir aussi :

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

Syntaxe

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> CONVERT TO MANAGED
  [ BASE_LOCATION = '<directory_for_table_files>' ]
  [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ]
Copy

Paramètres

table_name

Identificateur de la table à convertir.

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.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

[ BASE_LOCATION = 'directory_for_table_files' ]

Chemin d’accès à un répertoire dans lequel Snowflake peut écrire des fichiers de données et de métadonnées pour la table. Spécifiez un chemin d’accès relatif à partir de l’emplacement EXTERNAL_VOLUME de la table. Pour plus d’informations, voir Répertoires de données et de métadonnées.

Vous devez spécifier une valeur pour cette propriété si l’instruction CREATE ICEBERG TABLE d’origine ne permettait pas ou n’incluait pas de BASE_LOCATION.

Ce répertoire ne peut pas être modifié après la conversion d’une table.

STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }

Spécifie la politique de sérialisation du stockage de la table. Si elle n’est pas spécifiée lors de la conversion, la table hérite de la valeur définie au niveau du schéma, de la base de données ou du compte. Si la valeur n’est spécifiée à aucun niveau, la table utilise la valeur par défaut.

Vous ne pouvez pas modifier la valeur de ce paramètre après avoir converti une table.

  • COMPATIBLE : Snowflake effectue un encodage et une compression qui garantissent l’interopérabilité avec les moteurs de calcul tiers.

  • OPTIMIZED : Snowflake effectue un encodage et une compression qui garantissent les performances optimales des tables au sein de Snowflake.

Par défaut : OPTIMIZED

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

USAGE

Intégration de catalogue

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.

  • 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

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 = 'my/relative/path/from/external_volume';
Copy