動的テーブルをクローンする¶
クローニングにより、データを実際にコピーすることなく、同じ列定義を使用して、ソースの動的テーブルのすべての既存データを含む新しい動的テーブルを作成します。
動的テーブルは、新しい動的テーブルまたは通常のテーブルにクローンできます。
動的テーブルを新しい動的テーブルにクローンする¶
Cloned dynamic tables, whether cloned directly or as part of a cloned database or schema, are suspended by default.
In DYNAMIC_TABLE_GRAPH_HISTORY, this appears as CLONED_AUTO_SUSPENDED in the SCHEDULING_STATE column. Any downstream dynamic tables are also suspended, shown as UPSTREAM_CLONED_AUTO_SUSPENDED. For more information, see 自動動的テーブル一時停止.
-- 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>
]
過去の特定の時点で存在していた動的テーブルをクローンすることもできます。
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'));
詳細については、 Time Travelを使用したクローニング(データベース、スキーマ、テーブル、動的テーブル、、イベントテーブル、ストリームのみ) をご参照ください。
動的テーブルを新しいテーブルにクローンする¶
クローンテーブルは、ソースの動的テーブルと同じ列定義とデータを継承しますが、動的テーブル固有のプロパティはありません。行アクセス、マスキングポリシー、タグ、クラスタリングキー、コメントを保持します。
-- 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> } ) ]
動的テーブルを通常のテーブルにクローンする場合は、次の例外を除いて 通常のテーブルのクローニング と同じ考慮事項に従います。
通常のテーブルとしてクローンされるためには、ソースの動的テーブルが 初期化済み である必要があります。
動的 Apache Iceberg™ テーブルをクローンすることはできません。
動的テーブルのクローニングパイプラインのベストプラクティス¶
パイプラインの再初期化を避けるために、同じcloneコマンドで動的テーブルパイプラインのすべての要素をクローンします。パイプラインのすべての要素(基本テーブル、表示、動的テーブルなど)を同じスキーマまたはデータベースに統合することでこれを行うことができます。