동적 테이블¶
동적 테이블은 정의된 쿼리 및 대상 최신성에 따라 자동으로 새로 고쳐지는 테이블로, 수동 업데이트나 사용자 지정 예약 없이 데이터 변환 및 파이프라인 관리를 간소화합니다.
동적 테이블을 생성할 때 기본 오브젝트에서 데이터가 변환되는 방법을 지정하는 쿼리를 정의합니다. Snowflake는 동적 테이블의 새로 고침 일정을 처리하고, 쿼리를 기준으로 기본 오브젝트에 대한 변경 사항을 반영하도록 테이블을 자동으로 업데이트합니다.
주요 고려 사항 및 일반적인 모범 사례¶
불변성 제약 조건: 불변성 제약 조건을 사용하여 동적 테이블 업데이트를 제어할 수 있습니다. 제약 조건은 특정 행을 정적으로 유지하는 동시에 테이블의 나머지 부분에 대한 증분 업데이트를 가능하게 합니다. 테이블의 다른 부분에 대해 정상적인 새로 고침이 발생하도록 허용하면서 표시된 데이터에 대한 원치 않는 변경을 방지합니다. 자세한 내용은 불변성 제약 조건이 있는 동적 테이블 만들기 섹션을 참조하십시오.
성능 고려 사항: 동적 테이블은 동적 테이블을 지원하는 워크로드에 증분 처리를 사용하므로 전체 새로 고침을 수행하는 대신 변경된 데이터만 다시 계산하여 성능을 향상할 수 있습니다. 자세한 내용은 동적 테이블 성능 최적화를 위한 모범 사례 섹션을 참조하세요.
복잡한 동적 테이블 분할: 파이프라인을 작고 집중된 동적 테이블로 분할하여 성능을 개선하고 문제 해결을 간소화합니다. 자세한 내용은 동적 테이블 만들기의 모범 사례 섹션을 참조하십시오.
동적 테이블의 작동 방식¶
Snowflake는 CREATE DYNAMIC TABLE 문에 지정된 정의 쿼리를 실행하고, 동적 테이블은 자동 새로 고침 프로세스를 통해 업데이트됩니다.
다음 다이어그램은 이 프로세스에서 기본 오브젝트에 대한 변경 사항을 계산하고 테이블과 연결된 컴퓨팅 리소스를 사용하여 동적 테이블에 병합하는 방법을 보여줍니다.
목표 지연¶
*목표 지연*을 사용하여 원하는 데이터의 최신 상태를 설정합니다. 일반적으로 테이블 데이터 최신성은 기본 테이블 데이터 최신성보다 크게 뒤처지지 않습니다. 목표 지연을 사용하면 테이블을 새로 고치는 빈도와 데이터를 최신 상태로 유지하는 방법을 제어할 수 있습니다.
자세한 내용은 동적 테이블 목표 지연 이해하기 섹션을 참조하십시오.
동적 테이블 새로 고침¶
동적 테이블은 지정된 목표 지연 시간 내에서 새로 고치는 것을 목표로 합니다. 예를 들어, 목표 지연이 5분이면 동적 테이블의 데이터가 기본 테이블에 대한 데이터 업데이트보다 5분 이상 늦지 않도록 보장됩니다. 테이블을 생성할 때 새로 고침 모드를 설정하면 이후에 일정에 따라 또는 수동으로 새로 고침이 수행될 수 있습니다.
자세한 내용은 동적 테이블 초기화 및 새로 고침 이해 및 동적 테이블 수동 새로 고침 섹션을 참조하십시오.
동적 테이블을 사용하는 시점¶
동적 테이블은 다음 시나리오에 이상적입니다.
사용자 지정 코드를 작성하지 않고 쿼리 결과를 구체화하려고 합니다.
수동으로 데이터 종속성을 추적하고 새로 고침 일정을 관리하는 번거로움을 없애려고 합니다. 동적 테이블을 사용하면 변환 단계를 수동으로 관리하지 않고도 파이프라인 결과를 선언적으로 정의할 수 있습니다.
파이프라인에서 데이터 변환을 위해 여러 테이블을 함께 연결하려고 합니다.
새로 고침 일정을 세밀하게 제어할 필요가 없으며 파이프라인의 목표 최신성을 지정하기만 하면 됩니다. Snowflake는 목표 최신성 요구 사항에 따라 예약 및 실행을 포함한 데이터 새로 고침을 조율합니다.
예시 사용 사례¶
느린 변경 차원 (SCDs): 동적 테이블을 사용하여 변경 스트림에서 읽고 변경 타임스탬프에 따라 정렬된 레코드별 키를 통해 윈도우 함수를 사용하여 유형 1 및 유형 2 SCDs 를 구현할 수 있습니다. 이 방법은 순서에 맞지 않게 발생하는 삽입, 삭제 및 업데이트를 처리하여 SCDs 생성을 간소화합니다. 자세한 내용은 동적 테이블을 사용하여 느리게 변경되는 차원 섹션을 참조하십시오.
조인 및 집계: 동적 테이블을 사용하여 느린 조인과 집계를 증분 방식으로 미리 계산하여 쿼리 속도를 높일 수 있습니다.
배치에서 스트림으로 변환: 동적 테이블은 ALTER DYNAMIC TABLE 명령 한 번으로 배치에서 스트림으로 원활하게 변환할 수 있도록 지원합니다. 데이터 파이프라인에서 새로 고침 빈도를 제어하여 비용과 데이터 최신성의 균형을 맞출 수 있습니다.