동적 테이블 만들기¶
이 항목에서는 동적 테이블을 생성하기 위한 핵심 개념을 간략하게 설명합니다.
시작하기 전에 동적 테이블 생성 권한 이 있고 동적 테이블 쿼리에 사용되는 모든 오브젝트에 변경 사항 추적 이 활성화되어 있는지 확인하십시오.
동적 테이블 생성에는 몇 가지 제한 사항이 적용될 수 있습니다. 전체 목록은 동적 테이블 제한 사항 섹션을 참조하십시오.
변경 내용 추적 활성화¶
증분 새로 고침 모드를 사용하여 동적 테이블을 생성할 때 쿼리하는 테이블에 변경 내용 추적이 아직 활성화되지 않은 경우 Snowflake는 자동으로 해당 테이블에 대한 변경 내용 추적을 활성화하려고 시도합니다. 증분 새로 고침을 지원하려면 동적 테이블에서 사용하는 모든 기본 오브젝트에 대해 0이 아닌 Time Travel 보존 으로 변경 내용 추적을 활성화해야 합니다.
기본 오브젝트가 변경되면 동적 테이블도 변경됩니다. 기본 오브젝트를 다시 생성하는 경우 변경 사항 추적을 다시 활성화해야 합니다.
참고
Snowflake는 전체 새로 고침 모드로 생성된 동적 테이블에서 변경 내용 추적을 자동으로 활성화하려고 시도하지 않습니다.
특정 데이터베이스 오브젝트에 대한 변경 내용 추적을 활성화하려면 해당 오브젝트에 대해 ALTER TABLE, ALTER VIEW 및 유사한 명령을 사용합니다. 동적 테이블을 생성하는 사용자에게 모든 기본 오브젝트에 대한 변경 내용 추적을 활성화할 OWNERSHIP 권한이 있어야 합니다.
변경 내용 추적이 활성화되어 있는지 확인하려면 기본 오브젝트에 대해 SHOW VIEWS, SHOW TABLES 및 유사한 명령을 사용하고 change_tracking
열을 검사하십시오.
동적 테이블 생성을 위한 구문¶
Suppose that you want to create a dynamic table named product
that contains the product_id
and product_name
columns from the table
named staging_table
, and you decide:
You want the data in the
product
table to be at most 20 minutes behind the data instaging_table
.새로 고침 에 필요한 컴퓨팅 리소스에 대해
mywh
웨어하우스를 사용하려고 합니다.사용자는 새로 고침 모드가 자동으로 선택되기를 원합니다.
Snowflake는 개발 중에만 자동 새로 고침 모드를 사용할 것을 권장합니다. 자세한 내용은 동적 테이블 새로 고침 모드 선택 모범 사례 섹션을 참조하십시오.
사용자는 동적 테이블을 만들 때 동기식으로 새로 고치기를 원합니다.
새로 고침 모드를 자동으로 선택하고 동적 테이블을 생성 시 동기적으로 새로 고치려고 합니다.
이 동적 테이블을 생성하려면 다음 CREATE DYNAMIC TABLE SQL 문을 실행하십시오.
CREATE OR REPLACE DYNAMIC TABLE product
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
REFRESH_MODE = auto
INITIALIZE = on_create
AS
SELECT product_id, product_name FROM staging_table;
매개 변수 및 베리언트 구문의 전체 목록은 CREATE DYNAMIC TABLE 참조를 확인하십시오.
동적 테이블 만들기의 모범 사례¶
동적 테이블의 파이프라인 연결¶
새로운 동적 테이블을 정의할 때는 많은 중첩된 명령이 있는 대규모 동적 테이블을 정의하는 대신 파이프라인이 있는 작은 동적 테이블을 사용합니다.
다른 동적 테이블을 쿼리하도록 동적 테이블을 설정할 수 있습니다. 예를 들어, 데이터 파이프라인이 스테이징 테이블에서 데이터를 추출하여 다양한 차원 테이블(예: customer
, product
, date
및 time
)을 업데이트하는 시나리오를 상상해 보십시오. 또한 파이프라인은 이러한 차원 테이블의 정보를 기반으로 집계 sales
테이블을 업데이트합니다. 차원 테이블을 스테이징 테이블에 쿼리하도록 구성하고 집계 sales
테이블을 차원 테이블에 쿼리하도록 구성하면 작업 그래프와 유사한 캐스케이드 효과를 생성할 수 있습니다.
이 설정에서 집계 sales
테이블에 대한 새로 고침은 차원 테이블에 대한 새로 고침이 성공적으로 완료된 후에만 실행됩니다. 이를 통해 데이터 일관성을 보장하고 지연 목표를 충족할 수 있습니다. 자동화된 새로 고침 프로세스를 통해 원본 테이블의 모든 변경 사항은 적절한 시간에 모든 종속 테이블에서 새로 고침을 트리거합니다.

복잡한 작업 그래프에 “컨트롤러” 동적 테이블 사용¶
많은 루트와 리프가 있는 동적 테이블의 복잡한 그래프가 있고 단일 명령으로 전체 작업 그래프에서 작업(예: 지연 변경, 수동 새로 고침, 일시 중단)을 수행하려면 다음을 수행합니다.
모든 동적 테이블의
TARGET_LAG
값을DOWNSTREAM
으로 설정합니다.작업 그래프의 모든 리프에서 읽는 “컨트롤러” 동적 테이블을 만듭니다. 이 컨트롤러가 리소스를 소모하지 않도록 하려면 다음을 수행합니다.
CREATE DYNAMIC TABLE controller TARGET_LAG = <target_lag> WAREHOUSE = <warehouse> AS SELECT 1 A FROM <leaf1>, …, <leafN> LIMIT 0;
컨트롤러를 사용하여 전체 그래프를 제어합니다. 예:
작업 그래프에 대한 새로운 목표 지연을 설정합니다.
ALTER DYNAMIC TABLE controller SET TARGET_LAG = <new_target_lag>;작업 그래프를 수동으로 새로 고칩니다.
ALTER DYNAMIC TABLE controller REFRESH;
동적 테이블의 파이프라인 복제 정보¶
파이프라인을 다시 초기화하지 않으려면 동일한 복제 명령으로 동적 테이블 파이프라인의 모든 요소를 복제합니다. 파이프라인의 모든 요소(예: 기본 테이블, 뷰, 동적 테이블)를 동일한 스키마 또는 데이터베이스에 통합하여 이를 수행할 수 있습니다.
일시적 동적 테이블을 사용하여 저장소 비용 절감¶
일시적 동적 테이블은 시간이 지나도 데이터를 안정적으로 유지하고 데이터 보존 기간 내에서 Time Travel을 지원하지만, Fail-safe 기간 이후에는 데이터를 보존하지 않습니다. 기본적으로 동적 테이블 데이터는 fail-safe 저장소에 7일 동안 보관됩니다.
새로 고침 처리량이 높은 동적 테이블의 경우 저장소 사용량이 크게 늘어날 수 있습니다. 따라서 동적 테이블은 영구 테이블에서 제공하는 것과 동일한 수준의 데이터 보호 및 복구가 필요하지 않은 경우에만 일시적 테이블로 설정해야 합니다.
CREATE DYNAMIC TABLE 문을 사용하여 일시적 동적 테이블을 만들거나 기존 동적 테이블을 일시적 동적 테이블로 복제할 수 있습니다.
동적 테이블 생성 문제 해결¶
동적 테이블을 생성할 때 초기 새로 고침은 예약(ON_SCHEDULE
) 또는 생성 시 즉시(ON_CREATE
) 수행됩니다. 초기 데이터 채우기 또는 초기화 는 이 초기 새로 고침이 발생하는 시기에 따라 달라집니다. 예를 들어, ON_CREATE
의 경우 업스트림 동적 테이블의 새로 고침을 트리거하는 경우 초기화가 더 오래 걸릴 수 있습니다.
검색되는 데이터의 양에 따라 초기화하는 데 다소 시간이 걸릴 수 있습니다. 진행 상황을 보려면 다음을 수행합니다.
Snowsight 에 로그인합니다.
탐색 메뉴에서 Monitoring » Query History 를 선택합니다.
Filters 드롭다운에서 Warehouse 필터에 SQL Text 를 입력하고 CREATE DYNAMIC TABLE 필터에 웨어하우스 이름을 입력합니다.
SQL text 아래에서 동적 테이블이 있는 쿼리를 선택하고 Query Details 및 Query Profile 탭을 사용하여 진행 상황을 추적합니다.