Dynamische Tabellen klonen¶
Durch das Klonen wird eine neue dynamische Tabelle mit den gleichen Spaltendefinitionen erstellt. Sie enthält alle in der dynamischen Quelltabelle vorhandenen Daten, aber ohne die Daten tatsächlich zu kopieren.
Sie können eine dynamische Tabelle in eine neue dynamische Tabelle oder eine reguläre Tabelle klonen.
Eine dynamische Tabelle in eine neue dynamische Tabelle klonen¶
Geklonte dynamische Tabellen werden standardmäßig ausgesetzt, unabhängig davon, ob Sie eine dynamische Tabelle direkt klonen oder eine Datenbank oder ein Schema klonen, das dynamische Tabellen enthält. In der Ausgabe der Tabellenfunktion DYNAMIC_TABLE_GRAPH_HISTORY zeigt deren Spalte SCHEDULING_STATE
CLONED_AUTO_SUSPENDED als reason_code
an. Alle dynamischen Tabellen, die nachgelagert zu diesen geklonten dynamischen Tabellen erstellt wurden, werden ebenfalls mit einem reason_code
von UPSTREAM_CLONED_AUTO_SUSPENDED ausgesetzt. Weitere Informationen dazu finden Sie unter Automatisches Anhalten dynamischer Tabellen.
-- 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>
]
Sie können eine dynamische Tabelle auch so klonen, wie sie zu einem bestimmten Zeitpunkt in der Vergangenheit existierte:
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'));
Weitere Informationen dazu finden Sie unter Klonen mit Time Travel (nur Datenbanken, Schemas, Tabellen, dynamische Tabellen, Ereignistabellen und Streams).
Eine dynamische Tabelle in eine neue Tabelle klonen¶
Geklonte Tabellen erben dieselben Spaltendefinitionen und Daten der dynamischen Quelltabelle, es fehlen jedoch dynamische Tabellen-spezifische Eigenschaften. Sie behalten Zeilenzugriffs- und Maskierungsrichtlinien, Tags, Gruppierungsschlüssel und Kommentare.
-- 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> } ) ]
Das Klonen einer dynamischen Tabelle in eine reguläre Tabelle erfordert die gleichen Anforderungen wie das Klonen einer regulären Tabelle mit den folgenden Ausnahmen:
Die dynamische Quelltabelle muss initialisiert sein, um als reguläre Tabelle geklont zu werden.
Sie können dynamische Apache Iceberg™-Tabellen nicht klonen.
Best Practice für das Klonen der Pipelines von dynamischen Tabellen¶
Klonen Sie alle Elemente einer Pipeline für dynamische Tabellen mit demselben Klon-Befehl, um Neuinitialisierungen Ihrer Pipeline zu vermeiden. Sie können dies tun, indem Sie alle Elemente der Pipeline (z. B. Basistabellen, Ansichten und dynamische Tabellen) in demselben Schema oder derselben Datenbank konsolidieren.