동적 테이블 복제하기¶
복제는 동일한 열 정의를 사용하여 새 동적 테이블을 생성하며, 데이터를 실제로 복사하지 않고 소스 동적 테이블의 모든 기존 데이터를 포함합니다.
동적 테이블을 새 동적 테이블 또는 일반 테이블로 복제할 수 있습니다.
동적 테이블을 새 동적 테이블로 복제하기¶
복제된 동적 테이블은 동적 테이블을 직접 복제하든, 동적 테이블이 포함된 데이터베이스 또는 스키마를 복제하든 관계없이 기본적으로 일시 중단됩니다. DYNAMIC_TABLE_GRAPH_HISTORY 테이블 함수의 출력에서 SCHEDULING_STATE
열은 CLONED_AUTO_SUSPENDED를 ``reason_code``로 표시합니다. 이러한 복제된 동적 테이블의 다운스트림에 생성된 모든 동적 테이블도 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> } ) ]
동적 테이블을 일반 테이블로 복제하는 작업은 :doc:`일반 테이블 복제하기</sql-reference/sql/create-clone>`와 동일한 고려 사항을 따르지만 다음과 같은 예외가 있습니다.
일반 테이블로 복제하려면 소스 동적 테이블을 :ref:`초기화<label-dynamic_tables_initialization>`해야 합니다.
동적 Apache Iceberg™ 테이블은 복제할 수 없습니다.
동적 테이블의 파이프라인 복제 모범 사례¶
파이프라인을 다시 초기화하지 않으려면 동일한 복제 명령으로 동적 테이블 파이프라인의 모든 요소를 복제합니다. 파이프라인의 모든 요소(예: 기본 테이블, 뷰, 동적 테이블)를 동일한 스키마 또는 데이터베이스에 통합하여 이를 수행할 수 있습니다.