動的テーブルをクローンする¶
クローニングにより、データを実際にコピーすることなく、同じ列定義を使用して、ソースの動的テーブルのすべての既存データを含む新しい動的テーブルを作成します。
動的テーブルは、新しい動的テーブルまたは通常のテーブルにクローンできます。
動的テーブルを新しい動的テーブルにクローンする¶
動的テーブルを直接クローンする場合でも、動的テーブルを含むデータベースやスキーマをクローンする場合でも、クローンされた動的テーブルはデフォルトで一時停止されます。DYNAMIC_TABLE_GRAPH_HISTORY テーブル関数の出力で、その SCHEDULING_STATE
列は reason_code
として CLONED_AUTO_SUSPENDED を表示します。これらのクローンされた動的テーブルの下流で作成された動的テーブルも、UPSTREAM_CLONED_AUTO_SUSPENDED の reason_code
で一時停止されます。詳細については、 自動動的テーブル一時停止 をご参照ください。
-- 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コマンドで動的テーブルパイプラインのすべての要素をクローンします。パイプラインのすべての要素(基本テーブル、表示、動的テーブルなど)を同じスキーマまたはデータベースに統合することでこれを行うことができます。