Cloner des tables dynamiques

Le clonage crée une nouvelle table dynamique avec les mêmes définitions de colonnes et contenant toutes les données existantes de la table dynamique source, sans réellement copier les données.

Vous pouvez cloner une table dynamique vers une nouvelle table dynamique ou vers une table ordinaire.

Cloner une table dynamique vers une nouvelle table dynamique

Les tables dynamiques clonées sont suspendues par défaut, que vous cloniez directement une table dynamique ou que vous cloniez une base de données ou un schéma contenant des tables dynamiques. Dans la sortie de la fonction de table DYNAMIC_TABLE_GRAPH_HISTORY, leur colonne SCHEDULING_STATE indique CLONED_AUTO_SUSPENDED comme reason_code. Toutes les tables dynamiques créées en aval de ces tables dynamiques clonées sont également suspendues, avec UPSTREAM_CLONED_AUTO_SUSPENDED comme reason_code. Pour plus d’informations, voir Suspension automatique de tables dynamiques.

-- Clone a dynamic table to a new dynamic table
CREATE [ OR REPLACE ] [ TRANSIENT ] DYNAMIC TABLE <name>
  CLONE <source_dynamic_table>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
  [
    COPY GRANTS
    TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
    WAREHOUSE = <warehouse_name>
  ]
Copy

Vous pouvez également cloner une table dynamique telle qu’elle existait à un moment précis dans le passé :

CREATE DYNAMIC TABLE my_cloned_dynamic_table CLONE my_dynamic_table AT (TIMESTAMP => TO_TIMESTAMP_TZ('04/05/2013 01:02:03', 'mm/dd/yyyy hh24:mi:ss'));
Copy

Pour plus d’informations, voir Clonage avec Time Travel (bases de données, schémas, tables, tables dynamiques, tables d’événements et flux uniquement).

Cloner une table dynamique vers une nouvelle table

Les tables clonées héritent des mêmes définitions de colonnes et des mêmes données que la table dynamique source, mais ne disposent pas des propriétés spécifiques aux tables dynamiques. Elles conservent les politiques d’accès aux lignes et de masquage, les balises, les clés de clustering et les commentaires.

-- Clone a dynamic table to a new table
CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] <name>
CLONE <source_dynamic_table_name>
  [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
Copy

Le clonage d’une table dynamique vers une table ordinaire suit les mêmes considérations que le clonage d’une table ordinaire, avec les exceptions suivantes :

  • La table dynamique source doit être initialisée afin d’être clonée en tant que table ordinaire.

  • Vous ne pouvez pas cloner de tables Apache Iceberg™ dynamiques.

Bonnes pratiques pour le clonage de pipelines de tables dynamiques

Clonez tous les éléments du pipeline de tables dynamiques dans la même commande clone pour éviter les réinitialisations de votre pipeline. Pour ce faire, vous pouvez consolider tous les éléments du pipeline (par exemple, les tables de base, les vues et les tables dynamiques) dans le même schéma ou la même base de données.