동적 테이블의 알려진 제한 사항

이 항목에서는 다음 동적 테이블 기능에 대한 제한 사항을 설명합니다.

일반 제한 사항

동적 테이블 사용에는 다음과 같은 일반적인 제한 사항이 적용됩니다.

  • 단일 계정은 최대 4,000개의 동적 테이블을 보유할 수 있습니다.

  • 동적 테이블 정의에서

    • 100개보다 많은 테이블을 쿼리할 수 없습니다.

    • 100개보다 많은 동적 테이블을 쿼리할 수 없습니다.

  • 동적 테이블에서 데이터를 자를 수 없습니다.

  • 임시 동적 테이블을 만들 수 없습니다.

  • 동적 테이블을 사용하여 공유 데이터를 수집 하는 경우 쿼리는 공유 동적 테이블이나 업스트림 동적 테이블을 참조하는 공유 보안 뷰에서 선택할 수 없습니다.

  • 동적 테이블 새로 고침이 소유자 역할 역할을 하므로 동적 테이블에 보조 역할을 사용할 수 없습니다. 자세한 내용은 기본 역할 및 보조 역할을 사용한 적용 모델 섹션을 참조하십시오.

  • 소스 테이블의 DATA_RETENTION_TIME_IN_DAYS 오브젝트 매개 변수를 0으로 설정할 수 없습니다.

  • 동적 테이블의 정의에는 동적 SQL(예: 세션 변수 또는 익명 블록의 바인딩되지 않은 변수)를 사용할 수 없습니다.

  • 동적 테이블 정의에서 사용자 정의 테이블 함수(UDTF)에서 읽는 SELECT 블록은 열을 명시적으로 지정해야 하며 * 를 사용할 수 없습니다.

  • 동적 테이블은 입력 테이블의 MAX_DATA_EXTENSION_TIME_IN_DAYS 기간 내에 새로 고치지 않으면 부실 테이블이 될 수 있습니다. 부실해진 경우 동적 테이블은 새로 고침을 통해 다시 만들어야 합니다.

  • 동적 테이블은 현재 ACCESS_HISTORY 뷰 에서 추적을 지원하지 않습니다. 즉, 동적 테이블에서 수행되는 쿼리 및 작업은 감사 또는 모니터링 목적으로 Snowflake의 ACCESS_HISTORY에 캡처되지 않습니다.

지원되는 데이터 타입

동적 테이블은 증분 및 전체 새로 고침 모두에 대해 모든 Snowflake SQL 데이터 타입 을 지원합니다.

  • 정형 데이터 타입

  • 지리공간 데이터 타입(전체 새로 고침만 해당).

쿼리 구문에 대한 제한 사항

다음 구문은 동적 테이블에 대한 쿼리에서 현재 지원되지 않습니다. 쿼리에서 이들을 지정하면 오류가 발생합니다.

  • 외부 함수.

  • 시퀀스.

  • CURRENT_USER 에 의존하는 함수. 동적 테이블 새로 고침은 특별한 SYSTEM 사용자가 있는 소유자 역할을 수행합니다.

  • 디렉터리 테이블, 외부 테이블, 스트림 및 구체화된 뷰를 포함하는 원본.

  • 동적 테이블 또는 기타 지원되지 않는 오브젝트에 대한 뷰.

  • SQL로 작성된 사용자 정의 테이블 함수(UDTF).

  • 하위 쿼리(예: SELECT 문)를 포함하는 SQL로 작성된 사용자 정의 함수(UDF).

  • PIVOTUNPIVOT 구조는 증분 또는 전체 새로 고침에서 지원되지 않습니다.

  • SAMPLE / TABLESAMPLE 구조체는 동적 테이블 증분 또는 전체 새로 고침에서 지원되지 않습니다.

기능 간 상호 작용 지원

다음 기능 간 상호 작용은 지원되지 않습니다.

  • 동적 테이블 새로 고침에 Query Acceleration Service(QAS) 사용.

  • 공유 테이블의 데이터베이스 역할에 따른 마스킹 정책.

기능 간 상호 작용에는 다음 제한 사항이 적용됩니다.

  • 다른 장애 조치 그룹에 있는 동적 테이블과 기본 테이블로 인해 복제가 실패합니다.

증분 새로 고침 지원

이 섹션에서는 현재 동적 테이블 증분 새로 고침 에 지원되지 않는 식, 절, 함수에 대해 설명합니다. 쿼리에서 이들을 사용하는 경우 자동화된 새로 고침 프로세스에서는 전체 새로 고침을 사용하므로 더 많은 크레딧이 사용될 수 있습니다. 증분 또는 전체 새로 고침이 사용되는지 확인하기 섹션을 참조하십시오.

비결정 함수는 증분 새로 고침에서 지원되지 않지만 일부 비결정 함수는 전체 새로 고침에서 지원됩니다.

동적 테이블을 만들 때 새로 고침 모드의 기본값은 동적 테이블의 증분 새로 고침을 선택하는 AUTO 입니다. CREATE DYNAMIC TABLE 문이 증분 새로 고침을 지원하지 않는 경우 전체 새로 고침이 새로 고침 모드로 자동 선택됩니다.

사용 사례에 가장 적합한 새로 고침 모드를 결정하려면 새로 고침 모드와 자동 권장 사항을 실험해 보십시오. Snowflake 릴리스 전반에서 일관적인 동작을 위해 모든 동적 테이블에서 새로 고침 모드를 명시적으로 설정하십시오. 예를 들어, 동적 테이블을 점진적으로만 새로 고치려면 테이블을 만들 때 새로 고침 모드를 명시적으로 INCREMENTAL 로 설정해야 합니다. 자세한 내용은 모든 프로덕션 동적 테이블에 대한 새로 고침 모드 설정 섹션을 참조하십시오.

동적 테이블의 새로 고침 모드를 확인하려면 동적 테이블 새로 고침 모드 보기 섹션을 참조하십시오.

지원되지 않는 구문, 연산자 및 함수

동적 테이블은 현재 일부 구조체, 연산자 및 함수에 대한 증분 새로 고침을 지원하지 않습니다. 쿼리에서 다음을 지정하면 전체 새로 고침을 통해 동적 테이블이 업데이트됩니다.

  • 세트 연산자:

    • UNION, MINUS, EXCEPT, INTERSECT.

  • UNION [ ALL ] 의 다음 사용:

    • 테이블과 그 자체 또는 그 자체의 복제본의 UNION ALL.

    • GROUP BY 또는 DISTINCT와 다른 GROUP BY 또는 DISTINCT 사이의 UNION ALL.

  • 모든 하위 쿼리 연산자.

  • 다음과 같은 외부 조인 (왼쪽, 오른쪽 또는 전체) 패턴:

    • 양쪽이 동일한 테이블인 외부 조인.

    • 양쪽이 모두 GROUP BY 절이 있는 하위 쿼리인 외부 조인.

    • 같지 않은 조건자를 가진 외부 조인.

  • 윈도우 함수 의 다음 사용:

    • 동일한 동적 테이블 정의에 여러 개의 윈도우 함수가 있는 경우 PARTITION BY 절이 동일하지 않거나 별도의 쿼리 블록에 나타납니다.

    • 슬라이딩 윈도우 프레임과 함께 윈도우 함수 PERCENT_RANK, DENSE_RANK, RANK 사용하기.

    • 비결정 함수이므로 ANY_VALUE 사용.

  • 다음은 사용자 정의 함수 (UDF)의 용도입니다.

    • Python, Java, Scala 또는 Javascript로 작성된 UDFs 및 UDTFs와 VOLATILE 매개 변수를 지정합니다.

    • 하위 쿼리가 포함된 SQL UDFs.

  • LATERAL 조인, FLATTEN()이 포함된 LATERAL 사용 제외.

  • ML 또는 LLM 함수.

증분 새로 고침 관련 추가 제한 사항

마스킹 및 행 액세스 정책

동적 테이블의 마스킹 또는 행 액세스 정책은 새로 고침 모드에 영향을 주지 않습니다 그러나 소스 테이블에 적용된 정책은 새로 고침 모드에 영향을 미칠 수 있습니다.

  • 소스 테이블의 정책이 CURRENT_ROLE 함수를 사용하는 경우 증분 새로 고침이 지원됩니다.

  • 소스 테이블의 정책에서 다른 함수, INFORMATION_SCHEMA 뷰를 사용하거나 테이블을 쿼리하는 경우(예: 매핑 테이블 조회) 증분 새로 고침이 지원되지 않습니다.

복제

증분 새로 고침을 사용하는 복제된 동적 테이블은 장애 조치 후 테이블의 증분 새로 고침을 재개하기 전에 다시 초기화됩니다.

자세한 내용은 복제 및 동적 테이블 섹션을 참조하십시오.

복제

복제된 증분 동적 테이블 은 생성된 후 처음 새로 고침을 수행하는 동안 다시 초기화해야 할 수도 있습니다.

삭제된 기본 테이블이 있는 다른 동적 테이블에서 동적 테이블을 복제하는 경우, 복제본은 일시 중단되고 다시 시작하거나 새로 고칠 수 없습니다.