Unterstützte Abfragen für dynamische Tabellen¶
Dynamische Tabellen unterstützen Standard-SQL-Ausdrücke und von Snowflake unterstützte Funktionen, einschließlich mathematischer Operationen, Zeichenfolgenfunktionen, Datumsfunktionen usw. Dieses Thema beschreibt die Ausdrücke, Konstrukte, Funktionen, Operatoren und Klauseln, die dynamische Tabellen im inkrementellen und vollständigen Aktualisierungsmodus unterstützen.
Wenn eine Abfrage Ausdrücke, Schlüsselwörter, Operatoren oder Klauseln verwendet, die für eine inkrementelle Aktualisierung nicht unterstützt werden, verwendet der automatische Aktualisierungsprozess stattdessen eine vollständige Aktualisierung, die zusätzliche Kosten verursachen kann.
Unterstützte Datentypen¶
Dynamische Tabellen unterstützen alle Snowflake-SQL-Datentypen sowohl für die inkrementelle als auch für die vollständige Aktualisierung, außer:
Strukturierte Datentypen
Geodatentypen (nur vollständige Aktualisierung).
Unterstützte Abfragen im inkrementellen und vollständigen Aktualisierungsmodus¶
Schlüsselwort |
Inkrementeller Aktualisierungsmodus |
Vollständiger Aktualisierungsmodus |
|---|---|---|
Unterstützt |
Unterstützt |
|
Nicht unterstützt |
Nicht unterstützt |
|
Quelltabellen, Ansichten, von Snowflake verwaltete Apache Iceberg™-Tabellen und andere dynamische Tabellen. Unterabfragen außerhalb von FROM-Klauseln (z. B. WHERE EXISTS) |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt. Sie können eine beliebige Anzahl von Tabellen in der Verknüpfung angeben, und Aktualisierungen aller Tabellen in der Verknüpfung werden in den Ergebnissen der Abfrage berücksichtigt. |
Unterstützt |
|
Unterstützt. Sie können eine beliebige Anzahl von Tabellen in der Verknüpfung angeben, und Aktualisierungen aller Tabellen in der Verknüpfung werden in den Ergebnissen der Abfrage berücksichtigt. |
Unterstützt |
|
LATERAL JOIN |
Nicht unterstützt. Sie können jedoch LATERAL mit FLATTEN() verwenden. Beispiel: 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;
Beachten Sie die folgende Verhaltensweise bei der Verwendung des lateralen Vereinfachens mit inkrementeller Aktualisierung:
|
Unterstützt. |
OUTER-EQUIJOIN. |
Unterstützt. Sie können eine beliebige Anzahl von Tabellen in der Verknüpfung angeben, und Aktualisierungen aller Tabellen in der Verknüpfung werden in den Ergebnissen der Abfrage berücksichtigt. |
Unterstützt |
[{LEFT | RIGHT | FULL }] OUTER JOIN |
Folgendes wird beispielsweise nicht unterstützt:
Andernfalls können Sie eine beliebige Anzahl von Tabellen in einem Outer Join angeben, und Änderungen an allen Tabellen in der Verknüpfung spiegeln sich in den Ergebnissen der Abfrage wider. |
Unterstützt |
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Nicht unterstützt |
Nicht unterstützt |
|
Nicht unterstützt |
Nicht unterstützt |
|
Skalare Aggregate |
Unterstützt |
Unterstützt |
Ausdrücke, einschließlich solcher, die deterministische integrierte Funktionen und unveränderliche benutzerdefinierte Funktionen verwenden. |
Unterstützt |
|
Mengenoperatoren (UNION, MINUS, EXCEPT, INTERSECT) |
Nicht unterstützt, außer für UNION. Bei der inkrementellen Aktualisierung funktioniert der UNION-Operator wie die Kombination der Operatoren UNION ALL und SELECT DISTINCT. |
Unterstützt |
Nicht unterstützt |
Nicht unterstützt |
|
Alle Unterabfrage-Operatoren. |
Nicht unterstützt |
Unterstützt |
Unterstützt |
Unterstützt |
|
Unterstützt, mit Ausnahme der folgenden Beschränkungen:
|
Unterstützt |
|
Unterstützt, mit Ausnahme der folgenden Beschränkungen:
|
Unterstützt |
|
Filter mit denselben Ausdrücken, die in SELECT gültig sind, werden unterstützt. Filter mit den Funktionen CURRENT_TIMESTAMP, CURRENT_TIME und CURRENT_DATE sowie deren Aliasse werden unterstützt. |
Unterstützt. Filter mit den Funktionen CURRENT_TIMESTAMP, CURRENT_TIME und CURRENT_DATE sowie deren Aliasse werden unterstützt. |
|
Unterstützt, mit Ausnahme der folgenden Beschränkungen:
|
Unterstützt |
|
Allgemeine Tabellenausdrücke (CTEs; Common Table Expressions), die inkrementelle Aktualisierungsfeatures verwenden, werden in der Unterabfrage unterstützt. WITH RECURSIVE wird nicht unterstützt. |
Unterstützt |
Unterstützte nicht-deterministische Funktionen im inkrementellen und vollständigen Aktualisierungsmodus¶
Nicht-deterministische Funktion |
Inkrementeller Aktualisierungsmodus |
Vollständiger Aktualisierungsmodus |
|---|---|---|
Nicht unterstützt |
Nicht unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
CURRENT_DATE (und Aliasse) |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
CURRENT_TIME (und Aliasse) |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
CURRENT_TIMESTAMP (und Aliasse) |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
Wird nur als Teil einer WHERE/HAVING/QUALIFY-Klausel unterstützt |
Funktionen, die auf CURRENT_USER angewiesen sind. |
Nicht unterstützt. Aktualisierungen dynamischer Tabellen fungieren als ihre Eigentümerrolle mit einem speziellen SYSTEM-Benutzer. |
Nicht unterstützt. Aktualisierungen dynamischer Tabellen fungieren als ihre Eigentümerrolle mit einem speziellen SYSTEM-Benutzer. |
Nicht unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Sequenzfunktionen (z. B. |
Nicht unterstützt |
Unterstützt |
Unterstützt in der SELECT-Klausel |
Unterstützt |
|
Flüchtige (VOLATILE) benutzerdefinierte Funktionen |
Nicht unterstützt |
Unterstützt |
Supported Snowflake Cortex AI functions¶
Sie können Snowflake Cortex AI Functions (including LLM functions) in der SELECT-Klausel für dynamische Tabellen im Modus der inkrementellen Aktualisierung verwenden. Es gelten die gleichen Einschränkungen hinsichtlich der Verfügbarkeit wie in Cortex AI functions beschrieben.
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;