Aller au contenu principal

Cloner une table Iceberg gérée

Vous pouvez créer une copie complète et indépendante d’une table Iceberg gérée à l’aide de DEEP CLONE. Un clone profond copie à la fois les fichiers de données et les métadonnées de la table vers une nouvelle table Iceberg gérée dans Unity Catalog.

Les tables Iceberg gérées ne prennent en charge que le clonage en profondeur. Le clonage superficiel et la conversion de format pendant le clonage ne sont pas pris en charge.

Méthodes de clonage pour les tables Iceberg

L’opération de clonage que vous utilisez dépend de vos types de tables source et cible :

Source

Cible

Opérations

Géré Iceberg

Géré Iceberg

DEEP CLONE.

Iceberg étranger

Géré Iceberg

DEEP CLONE. Consultez Cloner une table Iceberg étrangère vers une table Iceberg gérée.

Parquet ou Iceberg externe

Delta Lake géré ou externe

Clonage incrémentiel. Voir Clonage incrémentiel des tables Parquet et Apache Iceberg vers Delta Lake.

Source

Cible

Opérations

Géré Iceberg

Géré Iceberg

DEEP CLONE.

Iceberg étranger

Géré Iceberg

DEEP CLONE. Consultez Cloner une table Iceberg étrangère vers une table Iceberg gérée.

Parquet ou Iceberg externe

Delta Lake géré ou externe

Clonage incrémentiel. Voir Clonage incrémentiel des tables Parquet et Apache Iceberg vers Delta Lake.

Pour créer une table Iceberg gérée à partir des résultats de requête au lieu de cloner une table existante, utilisez CREATE TABLE ... AS SELECT. Voir CREATE TABLE [USING].

SHALLOW CLONE n'est pas pris en charge pour les tables Iceberg. Consulter Limitations.

Exigences

Pour cloner profondément une table Iceberg gérée, vous avez besoin de :

  • Databricks Runtime 16.4 LTS ou version ultérieure.
  • SELECT privilèges sur la table source.
  • Si vous remplacez une table existante, CREATE TABLE privilèges sur le schéma cible, ou MODIFY privilèges sur la table cible.
  • L'optimisation prédictive activée sur le catalogue ou le schéma cible.

Cloner en profondeur une table Iceberg gérée

Utilisez CREATE TABLE ... DEEP CLONE pour copier une table Iceberg gérée :

SQL
CREATE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Pour remplacer une table cible existante :

SQL
CREATE OR REPLACE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Pour créer la cible uniquement si elle n’existe pas déjà :

SQL
CREATE TABLE IF NOT EXISTS <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Pour la syntaxe complète de CREATE TABLE CLONE, consultez CREATE TABLE CLONE.

Archiver une table de production

Pour créer un instantané indépendant d'une table de production à des fins d'archivage ou de conformité :

SQL
CREATE TABLE prod_catalog.archive.orders_snapshot_may2026
DEEP CLONE prod_catalog.main.orders;

Copier une table vers un environnement de développement

Pour cloner une table de production vers un catalogue de développement pour une expérimentation sûre sans affecter les données de production :

SQL
CREATE OR REPLACE TABLE dev_catalog.test.orders
DEEP CLONE prod_catalog.main.orders;

Cloner une table Iceberg étrangère vers une table Iceberg gérée

Vous pouvez utiliser DEEP CLONE pour migrer une table Iceberg étrangère vers Unity Catalog en tant que table Iceberg gérée. Le clone copie toutes les données et métadonnées dans le stockage Unity Catalog. Les fichiers d'origine gérés par le catalogue externe ne sont pas réutilisés.

SQL
CREATE TABLE <uc-catalog>.<schema>.<target-table>
DEEP CLONE <foreign-catalog>.<schema>.<source-table>;

Une fois le clonage terminé, la table cible est une table Iceberg entièrement managée dans Unity Catalog, indépendante du catalogue source.

remarque

La migration sans copie à partir d'un catalogue étranger n'est pas prise en charge. Consulter Limitations.

Définir les propriétés de la table sur un clone en profondeur

Vous ne pouvez pas définir les propriétés de table Iceberg dans l'instruction DEEP CLONE. Pour ajouter ou remplacer des propriétés sur la table clonée, utilisez ALTER TABLE SET TBLPROPERTIES une fois le clonage terminé.

Par exemple, pour définir des propriétés personnalisées afin d'enregistrer la source d'un clone utilisé comme instantané :

SQL
CREATE TABLE prod_catalog.archive.orders_snapshot
DEEP CLONE prod_catalog.main.orders;

ALTER TABLE prod_catalog.archive.orders_snapshot
SET TBLPROPERTIES (
'archive.source' = 'prod_catalog.main.orders',
'archive.created_date' = '2026-05-11'
);

Comportement de clonage

Considérations importantes concernant le comportement du clonage en profondeur :

  • Un clone profond est une copie complète et indépendante de la table source. Les modifications apportées au clone n'affectent pas la source, et les modifications apportées à la source n'affectent pas le clone.
  • Un clone profond a un historique d'instantanés indépendant. Le time travel sur le clone utilise l'historique du clone, pas l'historique de la source.
  • Le schéma, les informations de partitionnement et les propriétés de la table sont copiés vers le clone profond. Les tags Unity Catalog ne sont pas copiés.
  • Après sa création, Unity Catalog gère le clone indépendamment avec une optimisation prédictive.

Limitations

  • Le clonage superficiel n'est pas pris en charge pour les tables Iceberg gérées.
  • Unity Catalog ne prend pas en charge la conversion sans copie des tables Iceberg externes en tables Iceberg gérées. Vous devez utiliser DEEP CLONE. Toutes les données sont copiées vers le stockage Unity Catalog pendant l'opération de clonage.
  • Les clones profonds ne copient pas l'historique des tables, ce qui affecte les requêtes time travel.
  • Vous ne pouvez pas modifier le format de la table pendant le clonage. La cible est toujours une table Iceberg gérée.
  • Vous ne pouvez pas définir les propriétés de la table pendant le clonage. Utilisez ALTER TABLE SET TBLPROPERTIES une fois que le clone en profondeur est terminé. Consultez Définir les propriétés de la table sur un clone en profondeur.