동적 테이블 만들기

이 항목에서는 초기화 프로세스 중에 발생하는 사항과 함께 동적 테이블 생성의 주요 개념에 대해 간략하게 설명합니다.

시작하기 전에 동적 테이블 생성 권한 이 있고 동적 테이블 쿼리에 사용되는 모든 오브젝트에 변경 사항 추적 이 활성화되어 있는지 확인하십시오.

동적 테이블 생성에는 몇 가지 제한 사항이 적용될 수 있습니다. 전체 목록은 동적 테이블의 알려진 제한 사항 섹션을 참조하십시오.

변경 내용 추적 활성화

Snowflake는 동적 테이블이 생성될 때 모든 기본 오브젝트에 대한 변경 내용 추적 활성화를 자동으로 시도합니다. 기본 데이터베이스 오브젝트가 변경되면 동적 테이블도 변경됩니다. 오브젝트를 다시 생성하는 경우 변경 내용 추적을 다시 활성화해야 합니다.

증분 새로 고침을 사용하여 동적 테이블을 생성할 때 쿼리하는 테이블에 변경 내용 추적이 아직 활성화되지 않은 경우 Snowflake는 자동으로 해당 테이블에 대한 변경 내용 추적을 활성화하려고 시도합니다. 증분 새로 고침을 지원하려면 동적 테이블에서 사용하는 모든 기본 오브젝트에 대해 0이 아닌 Time Travel 보존 으로 변경 내용 추적을 활성화해야 합니다.

특정 데이터베이스 오브젝트에 대한 변경 내용 추적을 활성화하려면 해당 오브젝트에 대해 ALTER TABLE, ALTER VIEW 및 유사한 명령을 사용하십시오. 동적 테이블을 생성하는 사용자에게 모든 기본 오브젝트에 대한 변경 내용 추적을 활성화할 OWNERSHIP 권한이 있어야 합니다. 변경 내용 추적이 활성화되어 있는지 확인하려면 기본 오브젝트에 대해 SHOW VIEWS, SHOW TABLES 및 유사한 명령을 사용하고 change_tracking 열을 검사하십시오.

동적 테이블 생성을 위한 구문

staging_table 이라는 테이블의 product_idproduct_name 열이 포함된 product 라는 동적 테이블을 생성하고 다음과 같이 결정한다고 가정합니다.

  • product 테이블의 데이터가 staging_table 에 있는 데이터보다 지연되는 시간을 최대 20분으로 제한하고자 합니다.

  • 새로 고침 에 필요한 컴퓨팅 리소스에 대해 mywh 웨어하우스를 사용하려고 합니다.

  • 새로 고침 유형을 자동으로 선택하고 동적 테이블을 생성 시 동기적으로 새로 고치려고 합니다.

이 동적 테이블을 생성하려면 다음 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;
Copy

매개 변수 및 베리언트 구문의 전체 목록은 CREATE DYNAMIC TABLE 참조를 확인하십시오.

동적 테이블 초기화

CREATE DYNAMIC TABLE 문을 사용하여 동적 테이블을 생성하면 초기 새로 고침이 예약된 시간에 또는 생성 시 동기적으로 수행됩니다. 초기 데이터 채우기 또는 초기화 는 이 초기 새로 고침이 발생하는 시기에 따라 달라집니다.

동적 테이블은 지정된 목표 지연 을 기반으로 새로 고침을 수행하며, 이 지연에 따라 동적 테이블 콘텐츠가 기본 테이블 업데이트보다 지연되도록 허용되는 최대 시간이 설정됩니다. 생성 시 동기적으로 새로 고치도록 동적 테이블을 지정하면 테이블이 즉시 초기화됩니다. 그러나 동적 테이블이 예약된 시간에 새로 고쳐지도록 설정되어 있으면 목표 지연에 지정된 시간 내에 초기화됩니다.

예를 들어, 목표 지연이 30분인 동적 테이블 DT1을 생각해 보십시오. DT1의 초기 데이터 채우기는 다음과 같이 발생할 수 있습니다.

  1. DT1이 생성 시 동기적으로 새로 고쳐지도록 설정된 경우(기본값)에는 생성 시에 초기화됩니다.

  2. DT1이 예약된 시간에 새로 고쳐지도록 설정된 경우 목표 지연에 지정된 시간 내에 초기화됩니다.

다운스트림 종속성과 관련된 시나리오에서는 동적 테이블이 변경됩니다. DT1에 다운스트림 목표 지연이 있고 DT2에 30분의 목표 지연이 있고 DT1에 종속되는 동적 테이블 DT1 및 DT2를 고려해 보십시오. 다운스트림 목표 지연이 있는 DT1은 DT2와 같은 종속 동적 테이블을 새로 고칠 때만 새로 고칩니다.

이 맥락에서 DT1의 경우 다음과 같습니다.

  1. 생성 시 동기적으로 새로 고치도록 설정하면 생성 시 새로 고쳐지고 초기화됩니다. 초기화에 실패하면 테이블 생성 프로세스가 중지되고 잘못된 정의에 대한 즉각적인 피드백이 제공됩니다.

  2. 예약된 시간에 새로 고치도록 구성된 경우 종속 테이블인 DT2가 새로 고쳐지는 시기에 따라 초기화가 달라집니다.

검색되는 데이터의 양에 따라 초기화하는 데 다소 시간이 걸릴 수 있습니다. 진행 상황을 추적하려면 DYNAMIC_TABLE_REFRESH_HISTORY 함수를 사용하여 새로 고침 기록을 쿼리하면 됩니다.

기본 테이블의 열 변경 사항의 영향 이해하기

기본 테이블, 뷰, 기본 동적 테이블의 열은 시간이 지남에 따라 변경될 수 있습니다. 일부 변경 사항은 동적 테이블 자체에 영향을 줄 수 있는 반면, 다른 변경 사항은 영향이 제한적이거나 전혀 없을 수 있습니다.

동적 테이블과 연결된 기본 오브젝트가 변경되면 다음 동작이 적용됩니다.

변경

영향

  • 새 열이 추가됨

  • 사용하지 않는 기존 열이 제거되었습니다.

없습니다. 기본 테이블에 새 열이 추가되거나 사용되지 않은 열이 삭제되면 아무런 작업도 이루어지지 않고 이전과 같이 새로 고침이 계속됩니다.

  • 기초가 되는 기본 테이블이 동일한 열 이름과 유형으로 다시 생성됩니다.

  • 기본 테이블 열이 동일한 이름과 유형으로 다시 생성됩니다.

전체 새로 고침/재초기화: 다음 새로 고침 주기 동안 동적 테이블에 부정확하거나 오래된 데이터가 없도록 전체 새로 고침이 수행됩니다.

  • 동적 테이블에서 사용하는 기본 열 또는 기타 요소의 이름이 변경되거나 다른 방식으로 변경됩니다.

동적 테이블의 상태는 FAILING으로 변경됩니다. 변경 사항에 대응하려면 동적 테이블을 다시 만들어야 합니다. 동적 테이블 상태에 대한 자세한 내용은 동적 테이블 상태 섹션을 참조하십시오.