동적 테이블

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

동적 테이블을 생성하는 경우 기본 오브젝트에서 데이터를 변환하는 방법을 지정하는 쿼리를 정의합니다. Snowflake는 동적 테이블의 새로 고침 일정을 처리하고 쿼리를 기반으로 기본 오브젝트에 대한 변경 사항을 반영하도록 테이블을 자동으로 업데이트합니다.

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

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

기본 키: Snowflake는 안정적인 기본 키를 사용하여 동적 테이블 파이프라인에서 변경 사항을 보다 효율적으로 추적합니다. 동적 테이블에 시스템에서 파생된 기본 키가 있는 경우, 업스트림 테이블이 전체 새로 고침 모드를 사용하더라도 다운스트림 테이블은 증분 새로 고침을 사용할 수 있습니다. 자세한 내용은 동적 테이블의 기본 키 이해하기 섹션을 참조하십시오.

성능 고려 사항: 동적 테이블은 동적 테이블을 지원하는 워크로드에 증분 처리를 사용하므로 전체 테이블을 다시 계산하는 대신 변경된 데이터만 처리하여 성능을 향상할 수 있습니다. 성능은 쿼리 패턴과 데이터 구성에 따라 다릅니다. 동적 테이블 성능 최적화에 대한 지침은 동적 테이블 성능 및 최적화 섹션을 참조하세요.

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

동적 테이블의 작동 방식

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

다음 다이어그램은 이 프로세스에서 기본 오브젝트에 대한 변경 사항을 계산하고 테이블과 연결된 컴퓨팅 리소스를 사용하여 동적 테이블에 병합하는 방법을 보여줍니다.

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

목표 지연

목표 지연 을 사용하여 원하는 데이터의 최신 상태를 설정합니다. 일반적으로 테이블 데이터 최신성은 기본 테이블 데이터 최신성보다 높지 않습니다. 목표 지연을 사용하면 테이블을 새로 고치는 빈도와 데이터를 최신 상태로 유지하는 방법을 제어할 수 있습니다. 목표 지연은 새로 고침 빈도와 컴퓨팅 비용에 영향을 줍니다.

자세한 내용은 동적 테이블 목표 지연 이해하기 섹션을 참조하세요. 데이터 최신성과 성능의 균형을 맞추는 방법에 대한 지침은 동적 테이블 성능 최적화 섹션을 참조하세요.

동적 테이블 새로 고침

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

자세한 내용은 동적 테이블 초기화 및 새로 고침 이해동적 테이블 수동 새로 고침 섹션을 참조하십시오.

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

동적 테이블은 다음 시나리오에 이상적입니다.

  • 사용자 지정 코드를 작성하지 않고 쿼리 결과를 구체화하려고 합니다.

  • 수동으로 데이터 종속성을 추적하고 새로 고침 일정을 관리하는 번거로움을 없애려고 합니다. 동적 테이블을 사용하면 변환 단계를 수동으로 관리하지 않고도 파이프라인 결과를 선언적으로 정의할 수 있습니다.

  • 파이프라인에서 데이터 변환을 위해 여러 테이블을 함께 연결하려고 합니다.

  • 새로 고침 일정을 세밀하게 제어할 필요가 없으며 파이프라인의 대상 최신성을 지정하기만 하면 됩니다. Snowflake는 목표 최신성 요구 사항에 따라 예약 및 실행을 포함하여 데이터 새로 고침의 오케스트레이션을 처리합니다.

예시 사용 사례

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

  • 조인 및 집계: 빠른 쿼리를 활성화하기 위해 동적 테이블을 사용하여 느린 조인 및 집계를 점진적으로 미리 계산할 수 있습니다. 증분 새로 고침을 위해 이러한 연산자를 최적화하는 방법에 대한 지침은 증분 새로 고침을 위한 쿼리 최적화 섹션을 참조하세요.

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