動的テーブルでサポートされるクエリ

動的テーブルは、標準的な SQL 式と、数学演算、文字列関数、日付関数など、Snowflake がサポートする関数をサポートします。このトピックでは、動的テーブルが増分更新モードと完全更新モードでサポートする式、構文、関数、演算子、句について説明します。

インクリメンタル リフレッシュに対応していない式、キーワード、演算子、または句をクエリが使用している場合、自動リフレッシュプロセスでは代わりにフルリフレッシュが使用されますが、 追加コストが発生する可能性があります

サポートされているデータ型

動的テーブルは、すべての Snowflake SQL データ型 をインクリメンタルリフレッシュとフルリフレッシュの両方でサポートしていますが、次を例外とします:

  • 構造化データ型。

  • 地理空間データ型(フルリフレッシュのみ)。

インクリメンタルおよびフルリフレッシュモードでのクエリに対応

キーワード

インクリメンタル リフレッシュ モード

フル リフレッシュ モード

DISTINCT

サポート対象

サポート対象

外部関数

サポート対象外

サポート対象外

FROM

ソーステーブル、ビュー、Snowflake 管理の Apache Iceberg™ テーブル、その他の動的テーブル。

FROM 句外のサブクエリ(例: WHERE EXISTS)はサポートされていません。

サポート対象

GROUP BY

サポート対象

サポート対象

CROSS JOIN

サポートされています。結合するテーブルはいくつでも指定でき、結合内にあるすべてのテーブルの更新はクエリの結果に反映されます。

サポート対象

INNER JOIN

サポートされています。結合するテーブルはいくつでも指定でき、結合内にあるすべてのテーブルの更新はクエリの結果に反映されます。

サポート対象

LATERAL JOIN

サポート対象外です。ただし、 LATERAL は FLATTEN() と一緒に使うことができます。例:

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 句でサポートされています。

サポート対象

PIVOT および UNPIVOT

サポート対象外

サポート対象外

SAMPLE / TABLESAMPLE

サポート対象外

サポート対象外

スカラー集計

サポート対象

サポート対象

SELECT

決定論的組み込み関数や 不変 ユーザー定義関数 を使用した式を含む式。

サポート対象

演算子のセット (UNION, MINUS, EXCEPT, INTERSECT)

UNION を除き、サポート対象外。増分リフレッシュでは、UNION セット演算子が UNIONALL および SELECTDISTINCT 演算子の組み合わせのように機能します。

サポート対象

シーケンス

サポート対象外

サポート対象外

すべての サブクエリ演算子

サポート対象外

サポート対象

UNION ALL

サポート対象

サポート対象

ユーザー定義関数 (UDFs)

以下の制限を除きサポート:

  • UDFs Python、Java、Scala、Javascriptで書かれたもので、 VOLATILE パラメーターを指定するものはサポートされていません。

  • 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 はサポートされていません。

サポート対象

インクリメンタルモードとフルリフレッシュモードで非決定性関数をサポート

非決定性関数

インクリメンタル リフレッシュ モード

フル リフレッシュ モード

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 句でサポートされています

サポート対象

シーケンス関数 (例: SEQ1SEQ2

サポート対象外

サポート対象

TRANSLATE (SNOWFLAKE.CORTEX)

SELECT 句でサポートされています

サポート対象

VOLATILE ユーザー定義関数

サポート対象外

サポート対象

サポートされているSnowflake Cortex AISQL 関数

増分リフレッシュモードの動的テーブルのSELECT 句にある Snowflake Cortex AISQL (LLM 関数を含む) を使用できます。AISQL 関数 で説明されているのと同じ可用性の制限が適用されます。

Cortex AISQL によって、AI 駆動型インサイトを動的テーブルに直接追加でき、データ更新時にデータが自動的に分析されます。たとえば、顧客レビュー、サポートチケット、アンケート結果をポジティブ/ネガティブに分類したり、カテゴリを割り当てたりできます。

次の例では、review_sentiment が AI_FILTER を使用して LLM で各レビューを評価します。Cortex AISQL は、プロンプト The reviewer enjoyed the restaurant を実際のレビューテキストと組み合わせます。出力列 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