동적 테이블에 대해 지원되는 쿼리

동적 테이블은 수학 연산, 문자열 함수, 날짜 함수 등을 포함한 표준 SQL 식과 Snowflake 지원 함수를 지원합니다. 이 항목에서는 증분 및 전체 새로 고침 모드에서 동적 테이블이 지원하는 식, 구조체, 함수, 연산자 및 절에 대해 설명합니다.

쿼리가 증분 새로 고침에 지원되지 않는 식, 키워드, 연산자 또는 절을 사용하는 경우 자동 새로 고침 프로세스는 대신 전체 새로 고침을 사용하므로 추가 비용이 발생 할 수 있습니다.

지원되는 데이터 타입

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

  • 정형 데이터 타입

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

증분 및 전체 새로 고침 모드에서 지원되는 쿼리

키워드

Incremental Refresh Mode

Full Refresh Mode

DISTINCT

지원됨

지원됨

외부 함수

지원되지 않음

지원되지 않음

FROM

소스 테이블, 뷰, Snowflake 관리 Apache Iceberg™ 테이블 및 기타 동적 테이블.

FROM 절 외부의 하위 쿼리(예: WHERE EXISTS)는 지원되지 않습니다.

지원됨

GROUP BY

지원됨

지원됨

CROSS JOIN

지원됨. 조인에서 원하는 수의 테이블을 지정할 수 있으며 조인의 모든 테이블에 대한 업데이트는 쿼리 결과에 반영됩니다.

지원됨

INNER JOIN

지원됨. 조인에서 원하는 수의 테이블을 지정할 수 있으며 조인의 모든 테이블에 대한 업데이트는 쿼리 결과에 반영됩니다.

지원됨

LATERAL JOIN

지원 안 됨. 그러나 FLATTEN() 과 함께 LATERAL 을 사용할 수 있습니다. 예:

CREATE TABLE persons
 AS
  SELECT column1 AS id, parse_json(column2) AS entity
  FROM values
   (12712555,
   '{ name:  { first: "John", last: "Smith"},
     contact: [
     { business:[
       { type: "phone", content:"555-1234" },
       { type: "email", content:"j.smith@example.com" } ] } ] }'),
   (98127771,
    '{ name:  { first: "Jane", last: "Doe"},
     contact: [
     { business:[
       { type: "phone", content:"555-1236" },
       { type: "email", content:"j.doe@example.com" } ] } ] }');
Copy
CREATE DYNAMIC TABLE my_dynamic_table
 TARGET_LAG = DOWNSTREAM
 WAREHOUSE = mywh
 AS
  SELECT p.id, f.value, f.path
  FROM persons p,
  LATERAL FLATTEN(input => p.entity) f;
Copy

증분 새로 고침과 함께 래터럴 데이터 스큐를 사용하는 경우 다음 동작에 유의하십시오.

  • 래터럴 데이터 스큐 조인에서 데이터 스큐 SEQ 열의 선택이 지원되지 않습니다.

  • AUTO 매개 변수를 사용할 때, 다른 제한에 의해 방해받지 않는 한, Snowflake는 일반적으로 래터럴 데이터 스큐 조인이 있는 쿼리에 대해 증분 새로 고침을 선택합니다.

지원됨.

OUTER-EQUI JOIN.

지원됨. 조인에서 원하는 수의 테이블을 지정할 수 있으며 조인의 모든 테이블에 대한 업데이트는 쿼리 결과에 반영됩니다.

지원됨

[{LEFT | RIGHT | FULL }] OUTER JOIN

다음은 지원되지 않습니다.

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

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

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

그렇지 않으면 외부 조인에서 원하는 수의 테이블을 지정할 수 있으며 조인의 모든 테이블에 대한 업데이트가 쿼리 결과에 반영됩니다.

지원됨

ML 또는 LLM 함수

SELECT 절에서 지원됩니다.

지원됨

PIVOTUNPIVOT

지원되지 않음

지원되지 않음

SAMPLE / TABLESAMPLE

지원되지 않음

지원되지 않음

스칼라 집계

지원됨

지원됨

SELECT

결정적 기본 제공 함수 및 변경이 불가능한 사용자 정의 함수 를 사용하는 식을 포함한 식.

지원됨

세트 연산자 (UNION, MINUS, EXCEPT, INTERSECT)

UNION을 제외하고 지원되지 않습니다. 증분 새로 고침에서는 UNION 세트 연산자는 UNION ALL 및 SELECT DISTINCT 연산자의 조합처럼 작동합니다.

지원됨

시퀀스.

지원되지 않음

지원되지 않음

모든 하위 쿼리 연산자.

지원되지 않음

지원됨

UNION ALL

지원됨

지원됨

사용자 정의 함수 (UDFs)

다음 제한 사항을 제외하고 지원됩니다.

  • VOLATILE 매개 변수를 지정하는 Python, Java, Scala 또는 Javascript로 작성된 UDFs 는 지원되지 않습니다.

  • 하위 쿼리를 포함하는 SQL 로 작성된 UDFs 는 지원되지 않습니다(예: SELECT 문).

  • 증분 새로 고침을 사용하는 동적 테이블이 사용 중일 때 IMMUTABLE UDF 를 교체하면 새로 고침이 실패합니다.

  • 외부 스테이지에서 UDFs 가져오기는 지원되지 않습니다.

지원됨

사용자 정의 테이블 함수 (UDTFs)

다음 제한 사항을 제외하고 지원됩니다.

  • SQL 로 작성된 UDTFs 는 지원되지 않습니다.

  • UDTFs 에서 읽는 SELECT 블록은 열을 명시적으로 지정해야 하며 * 를 사용할 수 없습니다.

지원됨

WHERE / HAVING / QUALIFY

SELECT 에서 유효한 식과 동일한 필터는 지원됩니다.

CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE 함수 및 해당 별칭을 가진 필터는 지원됩니다.

지원됨.

CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE 함수 및 해당 별칭을 가진 필터는 지원됩니다.

윈도우 함수

다음 제한 사항을 제외하고 지원됩니다.

  • 슬라이딩 윈도우 프레임과 함께 PERCENT_RANK, DENSE_RANK, RANK 윈도우 함수 사용은 지원되지 않습니다.

  • ANY_VALUE 사용은 비결정적 함수이므로 지원되지 않습니다.

지원됨

WITH

하위 쿼리에서 증분 새로 고침 지원 기능을 사용하는 공통 테이블 표현식(CTEs).

WITH RECURSIVE는 지원되지 않습니다.

지원됨

증분 및 전체 새로 고침 모드에서 지원되는 비결정적 함수 지원

비결정적 함수

Incremental Refresh Mode

Full Refresh Mode

ANY_VALUE

지원되지 않음

지원되지 않음

CLASSIFY_TEXT(SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

COMPLETE (SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

CURRENT_ACCOUNT

지원되지 않음

지원됨

CURRENT_DATE (및 별칭)

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

CURRENT_REGION

지원되지 않음

지원됨

CURRENT_ROLE

지원되지 않음

지원됨

CURRENT_TIME (및 별칭)

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

CURRENT_TIMESTAMP (및 별칭)

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

WHERE/HAVING/QUALIFY 절의 일부로만 지원됩니다.

CURRENT_USER 에 의존하는 함수.

지원 안 됨. 동적 테이블 새로 고침은 특별한 SYSTEM 사용자가 있는 소유자 역할을 수행합니다.

지원 안 됨. 동적 테이블 새로 고침은 특별한 SYSTEM 사용자가 있는 소유자 역할을 수행합니다.

CURRENT_WAREHOUSE

지원되지 않음

지원됨

DENSE_RANK

지원됨

지원됨

EMBED_TEXT_768(SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

EMBED_TEXT_1024(SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

EXTRACT_ANSWER (SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

FINETUNE(SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

FIRST_VALUE

지원됨

지원됨

LAST_VALUE

지원됨

지원됨

NTH_VALUE

지원됨

지원됨

RANK

지원됨

지원됨

ROW_NUMBER

지원됨

지원됨

SENTIMENT (SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

시퀀스 함수 (예: SEQ1, SEQ2)

지원되지 않음

지원됨

TRANSLATE (SNOWFLAKE.CORTEX)

SELECT 절에서 지원됩니다.

지원됨

VOLATILE 사용자 정의 함수

지원되지 않음

지원됨

지원되는 Snowflake Cortex AISQL 함수

증분 새로 고침 모드의 동적 테이블에 대한 SELECT 절에서 :doc:`/user-guide/snowflake-cortex/aisql`을 사용할 수 있습니다. :ref:`label-cortex_llm_ai_function`에 설명된 것과 동일한 가용성 제한이 적용됩니다.

Cortex AISQL은 AI 기반 인사이트를 동적 테이블에 직접 제공하여 데이터가 업데이트될 때 자동으로 분석할 수 있도록 지원합니다. 예를 들어, 고객 리뷰, 지원 티켓 또는 설문조사 응답을 긍정적/부정으로 분류하거나 카테고리를 할당할 수 있습니다.

다음 예에서는 review_sentiment`가 AI_FILTER를 사용하여 LLM으로 리뷰를 평가합니다. Cortex AISQL은 :code:`The reviewer enjoyed the restaurant 프롬프트를 실제 리뷰 텍스트와 결합합니다. 출력 열 :code:`enjoyed`는 프롬프트를 기준으로 하는 Cortex AISQL을 사용하여 생성된 분류로, 리뷰어가 이 레스토랑을 즐겼는지 여부를 나타냅니다.

CREATE OR REPLACE TABLE reviews AS
  SELECT 'Wow... Loved this place.' AS review
  UNION ALL
  SELECT 'The pizza is not good.' AS review;

CREATE OR REPLACE DYNAMIC TABLE review_sentiment
  TARGET_LAG = DOWNSTREAM
  WAREHOUSE = mywh
  REFRESH_MODE = INCREMENTAL
  AS
    SELECT review, AI_FILTER(CONCAT('The reviewer enjoyed the restaurant', review), {'model': 'llama3.1-70b'}) AS enjoyed FROM reviews;
Copy