What’s new: Dynamic Table

Daniel
Snowflake Korea
Published in
6 min readJul 24, 2023

Snowflake 사용자라면 꼭 사용을 검토하면 좋을 새로운 기능이 Public Preview로 발표되었습니다. 이 새로운 기능은 소스 테이블의 증분 변경 사항을 모니터링하여 복잡한 결과 테이블을 쉽게 자동으로 구축해주는 Dynamic Table 입니다.

Dynamic Table은 선언적 데이터 변환 파이프라인의 빌딩 블록입니다. Snowflake 플랫폼에서의 데이터 엔지니어링을 크게 단순화하고, 데이터 파이프라인 구축을 자동화된 방법으로 안정적이고 비용 효율적으로 구축할 수 있는 기능입니다.

기존의 데이터 파이프라인 구축 방식은 데이터 변환 단계를 일련의 작업으로 정의하고 작업 간의 종속성과 일정을 모니터링 해야 했지만, Dynamic Table은 그런 과정 필요없이 데이터 변환의 최종 상태를 SQL로 정의만 하면 복잡한 파이프라인 관리를 Snowflake에 모두 맡길 수 있습니다.

Dynamic Table 작동 방식

Dynamic Table을 생성할 때 하나 이상의 소스 테이블에서 데이터를 변환하기 위한 비지니스 로직을 SQL 쿼리로 정의합니다. 즉, 소스 테이블을 기반으로 Join, Group by 구문 등을 포함 한 Select 쿼리를 작성하고 작업을 실행 할 virtual warehouse 및 target lag (대상 지연)만 설정하면 끝입니다. 그러면 auto-refresh 프로세스가 실행되어 소스 테이블의 변경 사항을 계산하고 해당 변경 사항을 Dynamic Table에 증분 방식으로 반영합니다. 이 작업을 수행하기 위해 Dynamic Table에 설정 한 virtual warehouse 컴퓨팅 자원을 사용하며, 대상 지연 설정에 따라 데이터가 최신 상태로 유지되도록 지속적인 refresh 작업을 실행합니다.

여러 Dynamic Table로 파이프라인 연결

Dynamic Table은 일반 테이블 뿐아니라 아래 그림과 같이 다른 Dynamic Table을 쿼리하도록 설정하여 파이프라인을 연결 할 수도 있습니다.

위 그림과 같이 소스 테이블인 Staging table에서 Customer, Product, Date and Time table로 데이터를 찢어 각각의 다차원 (dimension) table을 만들고, 그런 다음 다차원 table들을 조인하여 집계하는 쿼리로 Sales Dynamic Table을 생성하여 파이프라인을 구축할 수 있습니다.

Dynamic Table이 다른 Dynamic Table을 쿼리하는 경우 auto-refresh 프로세스는 target lag가 충족되도록 적절한 시간에 upstream에 있는 모든 Dynamic Table을 먼저 업데이트 합니다.

Dynamic Table 생성 방법

Dynamic Table을 만들려면 CREATE DYNAMIC TABLE 명령을 사용하여 사용할 쿼리, 데이터의 target lag (대상 지연) 및 refresh을 수행하는 데 사용할 virtual warehouse를 지정합니다.

Dynamic Table 생성 쿼리 예시)

CREATE OR REPLACE DYNAMIC TABLE contacts
TARGET_LAG = ‘1 minute’
WAREHOUSE = compute_wh
AS
select id, concat (first_name, ‘ ‘, last_name) as name, city
from mycsvtable
;

어떤가요? 아주 간결하지 않으십니까? Dynamic Table은 데이터 파이프라인 생성 및 관리 경험을 크게 단순화하고 데이터 엔지니어링팀이 확신을 가지고 프로덕션 등급 데이터 파이프라인을 구축할 수 있는 기능을 제공합니다.

Snowsight에서 Dynamic Table 모니터링 방법

  1. 데이터베이스 스키마 안에 Dynamic Table tree 확인

2. Table Details tab에서 정의 된 쿼리 확인

3. Graph tab에서 파이프라인 구성 및 설정 확인

4. Refresh tab에서 refresh 실행 이력 및 상태 정보 확인

Dynamic Table은 앞서 설명했듯이 데이터 파이프라인 구축 시간을 크게 절약 할 뿐아니라, 대시보드 및 UI 콘솔을 통해 어떤 데이터가 변경 되었는지에 대한 세부 정보와 과거 이력까지 쉽게 모니터링 할 수 있습니다.

현재 Dynamic Table 기능은 public preview 상태이며, 모든 Snowflake account 환경에서 테스트 해 볼 수 있습니다.

--

--