Cloner une table gérée qui utilise Iceberg
Vous pouvez créer une copie complète et indépendante d’une table gérée qui utilise Iceberg avec DEEP CLONE. Un clone complet (deep clone) copie à la fois les fichiers de données et les métadonnées de la table vers une nouvelle table gérée utilisant Iceberg dans Unity Catalog.
Les tables gérées utilisant Iceberg prennent uniquement en charge le clonage profond (deep clone). Le clonage superficiel (shallow clone) 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 |
|---|---|---|
Table gérée utilisant Iceberg | Table gérée utilisant Iceberg |
|
Iceberg étranger | Table gérée utilisant Iceberg |
|
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 gérée utilisant Iceberg à partir des résultats de query 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 en profondeur une table gérée à l'aide d'Iceberg, vous devez :
- Databricks Runtime 16.4 LTS ou version ultérieure.
SELECTprivilèges sur la table source.- Si vous remplacez une table existante,
CREATE TABLEprivilèges sur le schéma cible, ouMODIFYprivilèges sur la table cible. - L'optimisation prédictive activée sur le catalogue ou le schéma cible.
Deep clone a managed table using Iceberg
Utilisez CREATE TABLE ... DEEP CLONE pour copier une table gérée à l'aide d'Iceberg :
CREATE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;
Pour remplacer une table cible existante :
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à :
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é :
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 :
CREATE OR REPLACE TABLE dev_catalog.test.orders
DEEP CLONE prod_catalog.main.orders;
Cloner une table Iceberg étrangère vers une table gérée à l'aide d'Iceberg
Vous pouvez utiliser DEEP CLONE pour migrer une table Iceberg étrangère vers Unity Catalog en tant que table gérée utilisant Iceberg. Le clone copie l’ensemble des données et des métadonnées dans le stockage de Unity Catalog. Les fichiers d’origine gérés par le catalogue externe ne sont pas réutilisés.
CREATE TABLE <uc-catalog>.<schema>.<target-table>
DEEP CLONE <foreign-catalog>.<schema>.<source-table>;
After the clone completes, the target table is a table entièrement managé using Iceberg in Unity Catalog, independent of the source catalog.
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é :
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 gérées utilisant Iceberg.
- Unity Catalog ne prend pas en charge la conversion sans copie (« zero-copy ») de tables Iceberg étrangères en tables gérées utilisant Iceberg. Vous devez utiliser
DEEP CLONE. Toutes les données sont copiées vers le stockage de 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.
- You can't change the table format during cloning. The target is always a managed table using Iceberg.
- Vous ne pouvez pas définir les propriétés de la table pendant le clonage. Utilisez
ALTER TABLE SET TBLPROPERTIESune fois que le clone en profondeur est terminé. Consultez Définir les propriétés de la table sur un clone en profondeur.