動的テーブルでサポートされるクエリ¶
動的テーブルは、標準的な SQL 式と、数学演算、文字列関数、日付関数など、Snowflake がサポートする関数をサポートします。このトピックでは、動的テーブルが増分更新モードと完全更新モードでサポートする式、構文、関数、演算子、句について説明します。
インクリメンタル リフレッシュに対応していない式、キーワード、演算子、または句をクエリが使用している場合、自動リフレッシュプロセスでは代わりにフルリフレッシュが使用されますが、 追加コストが発生する可能性があります。
サポートされているデータ型¶
動的テーブルは、すべての Snowflake SQL データ型 をインクリメンタルリフレッシュとフルリフレッシュの両方でサポートしていますが、次を例外とします:
構造化データ型。
地理空間データ型(フルリフレッシュのみ)。
インクリメンタルおよびフルリフレッシュモードでのクエリに対応¶
キーワード |
インクリメンタル リフレッシュ モード |
フル リフレッシュ モード |
|---|---|---|
サポート対象 |
サポート対象 |
|
サポート対象外 |
サポート対象外 |
|
ソーステーブル、ビュー、Snowflake 管理の Apache Iceberg™ テーブル、その他の動的テーブル。 FROM 句外のサブクエリ(例: WHERE EXISTS)はサポートされていません。 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
サポートされています。結合するテーブルはいくつでも指定でき、結合内にあるすべてのテーブルの更新はクエリの結果に反映されます。 |
サポート対象 |
|
サポートされています。結合するテーブルはいくつでも指定でき、結合内にあるすべてのテーブルの更新はクエリの結果に反映されます。 |
サポート対象 |
|
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" } ] } ] }');
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;
インクリメンタル リフレッシュでラテラル フラット化を使用する場合、以下の動作に注意してください。
|
サポートされています。 |
OUTER-EQUI JOIN. |
サポートされています。結合するテーブルはいくつでも指定でき、結合内にあるすべてのテーブルの更新はクエリの結果に反映されます。 |
サポート対象 |
[{LEFT | RIGHT | FULL }] OUTER JOIN |
次はサポートされていません。
それ以外の場合、外側結合にはいくつでもテーブルを指定することができ、結合内の全てのテーブルの更新がクエリの結果に反映されます。 |
サポート対象 |
SELECT 句でサポートされています。 |
サポート対象 |
|
サポート対象外 |
サポート対象外 |
|
サポート対象外 |
サポート対象外 |
|
スカラー集計 |
サポート対象 |
サポート対象 |
サポート対象 |
||
演算子のセット (UNION, MINUS, EXCEPT, INTERSECT) |
UNION を除き、サポート対象外。増分リフレッシュでは、UNION セット演算子が UNIONALL および SELECTDISTINCT 演算子の組み合わせのように機能します。 |
サポート対象 |
サポート対象外 |
サポート対象外 |
|
すべての サブクエリ演算子。 |
サポート対象外 |
サポート対象 |
サポート対象 |
サポート対象 |
|
ユーザー定義関数 (UDFs) |
以下の制限を除きサポート: |
サポート対象 |
ユーザー定義テーブル関数 (UDTFs) |
以下の制限を除きサポート:
|
サポート対象 |
SELECT で有効な式と同じ式のフィルターがサポートされています。 CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE 関数とそのエイリアスを使ったフィルターがサポートされています。 |
サポートされています。 CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE 関数とそのエイリアスを使ったフィルターがサポートされています。 |
|
以下の制限を除きサポート:
|
サポート対象 |
|
サブクエリの機能でサポートされている増分リフレッシュを使用する 共通テーブル式(CTEs) はサポートされます。 WITH RECURSIVE はサポートされていません。 |
サポート対象 |
インクリメンタルモードとフルリフレッシュモードで非決定性関数をサポート¶
非決定性関数 |
インクリメンタル リフレッシュ モード |
フル リフレッシュ モード |
|---|---|---|
サポート対象外 |
サポート対象外 |
|
SELECT 句でサポートされています |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
サポート対象外 |
サポート対象 |
|
CURRENT_DATE (およびエイリアス) |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
サポート対象外 |
サポート対象 |
|
サポート対象外 |
サポート対象 |
|
CURRENT_TIME (およびエイリアス) |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
CURRENT_TIMESTAMP (およびエイリアス) |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
WHERE/HAVING/QUALIFY 句の一部としてのみサポートされています。 |
CURRENT_USER に依存する関数。 |
サポート対象外です。動的テーブルのリフレッシュは、特別な SYSTEM ユーザーの所有者ロールとして機能します。 |
サポート対象外です。動的テーブルのリフレッシュは、特別な SYSTEM ユーザーの所有者ロールとして機能します。 |
サポート対象外 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
サポート対象 |
サポート対象 |
|
SELECT 句でサポートされています |
サポート対象 |
|
シーケンス関数 (例: |
サポート対象外 |
サポート対象 |
SELECT 句でサポートされています |
サポート対象 |
|
VOLATILE ユーザー定義関数 |
サポート対象外 |
サポート対象 |
Supported Snowflake Cortex AI functions¶
増分リフレッシュモードの動的テーブルのSELECT 句にある Snowflake Cortex AI Functions (including LLM functions) を使用できます。Cortex AI functions で説明されているのと同じ可用性の制限が適用されます。
Cortex AI Functions let you add AI-powered insights directly to your dynamic tables, automatically analyzing data as it updates. For example, it can classify customer reviews, support tickets, or survey responses as positive/negative or assign categories.
In the following example, review_sentiment uses AI_FILTER to evaluate each review with an LLM. Cortex AI Functions combine
the prompt The reviewer enjoyed the restaurant with the actual review text. The output column enjoyed is the classification
generated using Cortex AI Functions based on the prompt, indicating whether the reviewer enjoyed the restaurant.
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;