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

DISTINCT

Unterstützt

Unterstützt

Externe Funktionen

Nicht unterstützt

Nicht unterstützt

FROM

Quelltabellen, Ansichten, von Snowflake verwaltete Apache Iceberg™-Tabellen und andere dynamische Tabellen.

Unterabfragen außerhalb von FROM-Klauseln (z. B. WHERE EXISTS)

Unterstützt

GROUP BY

Unterstützt

Unterstützt

CROSSJOIN

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

INNERJOIN

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" } ] } ] }');
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

Beachten Sie die folgende Verhaltensweise bei der Verwendung des lateralen Vereinfachens mit inkrementeller Aktualisierung:

  • Das Auswählen der vereinfachten SEQ-Spalte aus einem lateralen Flatten-Join wird nicht unterstützt.

  • Wenn Sie den Parameter AUTO verwenden, wählt Snowflake in der Regel eine inkrementelle Aktualisierung für Abfragen mit lateralen Flatten-Join, sofern dies nicht durch andere Beschränkungen verhindert wird.

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:

  • Outer Joins, bei denen beide Seiten dieselbe Tabelle sind.

  • Outer Joins, bei denen beide Seiten eine Unterabfrage mit GROUP BY-Klauseln sind.

  • Outer Joins mit Prädikaten, die keine Gleichheitsprädikate sind.

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

ML- oder LLM-Funktionen

Nicht unterstützt

Unterstützt

PIVOT und UNPIVOT

Nicht unterstützt

Nicht unterstützt

SAMPLE / TABLESAMPLE

Nicht unterstützt

Nicht unterstützt

Skalare Aggregate

Unterstützt

Unterstützt

SELECT

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

Unterstützt

Sequenzen.

Nicht unterstützt

Nicht unterstützt

Alle Unterabfrage-Operatoren.

Nicht unterstützt

Unterstützt

UNIONALL

Unterstützt

Unterstützt

Benutzerdefinierte Funktionen (UDFs)

Unterstützt, mit Ausnahme der folgenden Beschränkungen:

  • UDFs, die in Python, Java, Scala oder Javascript geschrieben sind und den Parameter VOLATILE angeben, werden nicht unterstützt.

  • UDFs die in SQL geschrieben sind und Unterabfragen enthalten, werden nicht unterstützt (z. B. eine SELECT-Anweisung).

  • Das Ersetzen einer IMMUTABLE UDF, während sie von einer dynamischen Tabelle verwendet wird, die eine inkrementelle Aktualisierung verwendet, führt zu fehlgeschlagenen Aktualisierungen.

  • Der Import von UDFs aus einem externen Stagingbereich wird nicht unterstützt.

Unterstützt

Benutzerdefinierte Tabellenfunktionen (UDTFs)

Unterstützt, mit Ausnahme der folgenden Beschränkungen:

  • UDTFs, die in SQL geschrieben sind, werden nicht unterstützt.

  • SELECT-Blöcke, die aus UDTFs lesen, müssen explizit Spalten angeben und können nicht * verwenden.

Unterstützt

WHERE / HAVING / QUALIFY

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.

Fensterfunktionen

Unterstützt, mit Ausnahme der folgenden Beschränkungen:

  • Mehrere Fensterfunktionen in derselben dynamischen Tabellendefinition, bei denen die PARTITION BY Klauseln entweder nicht identisch sind oder in separaten Abfrageblöcken erscheinen, werden nicht unterstützt.

  • Die Verwendung der Fensterfunktionen PERCENT_RANK, DENSE_RANK, RANK mit gleitenden Fensterrahmen wird nicht unterstützt.

  • Die Verwendung von ANY_VALUE wird nicht unterstützt, da es sich um eine nicht-deterministische Funktion handelt.

Unterstützt

WITH

Allgemeine Tabellenausdrücke (CTEs), die inkrementelle Aktualisierungsfeatures verwenden, werden in der Unterabfrage unterstützt.

Unterstützt

Unterstützte nicht-deterministische Funktionen im inkrementellen und vollständigen Aktualisierungsmodus

Nicht-deterministische Funktion

Inkrementeller Aktualisierungsmodus

Vollständiger Aktualisierungsmodus

ANY_VALUE

Nicht unterstützt

Nicht unterstützt

CLASSIFY_TEXT (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

COMPLETE (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

CURRENT_ACCOUNT

Nicht unterstützt

Unterstützt

CURRENT_DATE (und Aliasse)

Unterstützt

Unterstützt

CURRENT_REGION

Nicht unterstützt

Unterstützt

CURRENT_ROLE

Nicht unterstützt

Unterstützt

CURRENT_TIME (und Aliasse)

Unterstützt

Unterstützt

CURRENT_TIMESTAMP (und Aliasse)

Unterstützt

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.

CURRENT_WAREHOUSE

Nicht unterstützt

Unterstützt

DENSE_RANK

Nicht unterstützt

Unterstützt

EMBED_TEXT_768 (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

EMBED_TEXT_1024 (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

EXTRACT_ANSWER (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

FINETUNE (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

FIRST_VALUE

Unterstützt

Unterstützt

LAST_VALUE

Unterstützt

Unterstützt

NTH_VALUE

Unterstützt

Unterstützt

RANK

Nicht unterstützt

Unterstützt

ROW_NUMBER

Nicht unterstützt

Unterstützt

SENTIMENT (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

Sequenzfunktionen (z. B. SEQ1, SEQ2)

Nicht unterstützt

Unterstützt

TRANSLATE (SNOWFLAKE.CORTEX)

Nicht unterstützt

Unterstützt

Flüchtige (VOLATILE) benutzerdefinierte Funktionen

Nicht unterstützt

Unterstützt