스트림 및 작업과 구체화된 뷰와 비교한 동적 테이블¶
스트림 및 작업과 마찬가지로, 동적 테이블은 파이프라인에서 데이터를 변환하는 방법을 제공합니다.
스트림 및 작업과 비교한 동적 테이블¶
동적 테이블은 작업과 비교 시 유사한 목적을 수행하지만 다음과 같은 중요한 차이점이 있습니다.
스트림 및 작업 |
동적 테이블 |
---|---|
작업에서는 명령적 접근 방식을 사용합니다. 즉, 기본 테이블에서 데이터를 변환하는 프로시저 코드를 작성합니다. |
동적 테이블은 선언적 접근 방식을 사용합니다. 즉, 원하는 결과를 지정하는 쿼리를 작성하면 쿼리에 사용되는 기본 테이블에서 데이터가 검색 및 변환됩니다. |
데이터를 변환하는 코드를 실행하기 위한 일정을 정의합니다. |
자동 새로 고침 프로세스는 새로 고침을 수행하는 일정을 결정합니다. 이 프로세스에서는 지정된 목표 수준의 최신성(지연)을 충족하도록 이러한 새로 고침을 예약합니다. |
프로시저 코드에는 비결정적 코드, 저장 프로시저, 기타 작업에 대한 호출이 포함될 수 있습니다. 프로시저 코드는 UDF와 외부 함수에 대한 호출을 포함할 수 있습니다. |
동적 테이블에 대한 SELECT 문은 조인, 집계, 윈도우 함수, 기타 SQL 함수 및 구성을 포함할 수 있지만, 이 문은 저장 프로시저와 작업에 대한 호출을 포함할 수 없습니다. 현재, SELECT 문은 외부 함수에 대한 호출도 포함할 수 없습니다. 이 제한은 동적 테이블을 새로 고치는 방식 때문입니다. 데이터를 새로 고치기 위해 자동화된 프로세스는 동적 테이블에 대한 SELECT 문을 분석하여 데이터를 새로 고치는 최상의 접근 방식을 결정합니다. 어떤 유형의 쿼리에 대해서는 자동화된 프로세스로 이를 결정할 수 없습니다. SELECT 문에 대한 제한 사항의 전체 목록은 증분 새로 고침에서 지원되는 쿼리 및 일반 제한 사항 섹션을 참조하십시오. |
작업은 스트림을 사용하여 대상 테이블의 데이터를 증분 방식으로 새로 고칠 수 있습니다. 이러한 작업을 정기적으로 실행하도록 예약할 수 있습니다. |
자동화된 새로 고침 프로세스는 정기적으로 동적 테이블의 증분 새로 고침을 수행합니다. 이 프로세스는 사용자가 지정하는 데이터의 목표 “최신성”을 기반으로 일정을 결정합니다. |
구체화된 뷰와 비교한 동적 테이블¶
동적 테이블과 구체화된 뷰는 둘 다 쿼리의 결과를 구체화 한다는 점에서 유사점이 있습니다. 하지만 다음과 같은 중요한 차이점이 있습니다.
구체화된 뷰 |
동적 테이블 |
---|---|
구체화된 뷰는 쿼리 성능을 투명하게 향상하도록 설계되었습니다. 예를 들어 기본 테이블을 쿼리하면 Snowflake의 쿼리 최적화 프로그램이 쿼리를 자동으로 다시 작성하여 구체화된 뷰를 대신 쿼리할 수 있습니다. |
동적 테이블은 다단계 데이터 파이프라인을 만들도록 설계되었습니다. 동적 테이블은 쿼리 성능을 향상할 수 있지만 Snowflake의 쿼리 최적화 프로그램은 동적 테이블을 사용하도록 쿼리를 자동으로 다시 작성하지 않습니다. 동적 테이블은 쿼리에서 동적 테이블을 지정할 경우에만 쿼리에 사용됩니다. |
구체화된 뷰는 단일 기본 테이블만 사용할 수 있습니다. 구체화된 뷰는 복잡한 쿼리(즉, 조인 또는 중첩된 뷰가 있는 쿼리)를 기반으로 할 수 없습니다. |
동적 테이블은 조인과 유니온이 있는 쿼리를 포함한 복잡한 쿼리를 기반으로 할 수 있습니다. |
구체화된 뷰를 통해 액세스한 데이터는 항상 최신입니다. DML 작업이 기본 테이블의 데이터를 변경하는 경우 Snowflake는 구체화된 뷰를 업데이트하거나 기본 테이블에서 업데이트된 데이터를 사용합니다. |
데이터는 동적 테이블의 목표 지연 시간까지 최신 상태입니다. 구체화된 뷰 유지 관리는 업데이트에 대한 컴퓨팅과 함께 새로 고침 논리를 포함한 별도의 컴퓨팅 서비스를 통해 자동으로 관리되며 일반적으로 추가 비용이 발생합니다. |