동적 테이블

동적 테이블은 정의된 쿼리 및 대상 최신성에 따라 자동으로 새로 고쳐지는 테이블로, 수동 업데이트나 사용자 지정 예약 없이 데이터 변환 및 파이프라인 관리를 간소화합니다.

When you create a dynamic table, you define a query that specifies how data should be transformed from base objects. Snowflake handles the refresh schedule of the dynamic table and updates the table automatically to reflect the changes made to the base objects based on the query.

주요 고려 사항 및 일반적인 모범 사례

불변성 제약 조건: 불변성 제약 조건을 사용하여 동적 테이블 업데이트를 제어할 수 있습니다. 제약 조건은 특정 행을 정적으로 유지하는 동시에 테이블의 나머지 부분에 대한 증분 업데이트를 가능하게 합니다. 테이블의 다른 부분에 대해 정상적인 새로 고침이 발생하도록 허용하면서 표시된 데이터에 대한 원치 않는 변경을 방지합니다. 자세한 내용은 불변성 제약 조건이 있는 동적 테이블 만들기 섹션을 참조하십시오.

Performance considerations: Dynamic tables use incremental processing for workloads that support it, which can improve performance by recomputing only the data that has changed, rather than performing a full refresh. For more information, see 동적 테이블 성능 최적화를 위한 모범 사례.

복잡한 동적 테이블 분할: 파이프라인을 작고 집중된 동적 테이블로 분할하여 성능을 개선하고 문제 해결을 간소화합니다. 자세한 내용은 동적 테이블 만들기의 모범 사례 섹션을 참조하십시오.

동적 테이블의 작동 방식

Snowflake는 CREATE DYNAMIC TABLE 문에 지정된 정의 쿼리를 실행하고, 동적 테이블은 자동 새로 고침 프로세스를 통해 업데이트됩니다.

The following diagram shows how this process computes the changes made to the base objects and merges them into the dynamic table by using compute resources associated with the table.

기본 오브젝트와 동적 테이블 간의 자동화된 새로 고침 프로세스의 시각적 표현

목표 지연

*목표 지연*을 사용하여 원하는 데이터의 최신 상태를 설정합니다. 일반적으로 테이블 데이터 최신성은 기본 테이블 데이터 최신성보다 크게 뒤처지지 않습니다. 목표 지연을 사용하면 테이블을 새로 고치는 빈도와 데이터를 최신 상태로 유지하는 방법을 제어할 수 있습니다.

For more information, see 동적 테이블 목표 지연 이해하기.

Dynamic table refresh

동적 테이블은 지정된 목표 지연 시간 내에서 새로 고치는 것을 목표로 합니다. 예를 들어, 목표 지연이 5분이면 동적 테이블의 데이터가 기본 테이블에 대한 데이터 업데이트보다 5분 이상 늦지 않도록 보장됩니다. 테이블을 생성할 때 새로 고침 모드를 설정하면 이후에 일정에 따라 또는 수동으로 새로 고침이 수행될 수 있습니다.

For more information, see 동적 테이블 초기화 및 새로 고침 이해 and 동적 테이블 수동 새로 고침.

동적 테이블을 사용하는 시점

Dynamic tables are ideal for the following scenarios:

  • You want to materialize query results without writing custom code.

  • You want to avoid manually tracking data dependencies and managing refresh schedules. Dynamic tables enable you to define pipeline outcomes declaratively, without managing transformation steps manually.

  • You want to chain together multiple tables for data transformations in a pipeline.

  • You don’t need fine-grained control over refresh schedules, and you only need to specify a target freshness for the pipeline. Snowflake handles the orchestration of data refreshes, including scheduling and execution, based on your target freshness requirements.

예시 사용 사례

  • 느린 변경 차원 (SCDs): 동적 테이블을 사용하여 변경 스트림에서 읽고 변경 타임스탬프에 따라 정렬된 레코드별 키를 통해 윈도우 함수를 사용하여 유형 1 및 유형 2 SCDs 를 구현할 수 있습니다. 이 방법은 순서에 맞지 않게 발생하는 삽입, 삭제 및 업데이트를 처리하여 SCDs 생성을 간소화합니다. 자세한 내용은 동적 테이블을 사용하여 느리게 변경되는 차원 섹션을 참조하십시오.

  • 조인 및 집계: 동적 테이블을 사용하여 느린 조인과 집계를 증분 방식으로 미리 계산하여 쿼리 속도를 높일 수 있습니다.

  • 배치에서 스트림으로 변환: 동적 테이블은 ALTER DYNAMIC TABLE 명령 한 번으로 배치에서 스트림으로 원활하게 변환할 수 있도록 지원합니다. 데이터 파이프라인에서 새로 고침 빈도를 제어하여 비용과 데이터 최신성의 균형을 맞출 수 있습니다.