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 |
Nicht unterstützt |
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 |
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), 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 |
---|---|---|
Nicht unterstützt |
Nicht unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
CURRENT_DATE (und Aliasse) |
Unterstützt |
Unterstützt |
Nicht unterstützt |
Unterstützt |
|
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. |
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Nicht unterstützt |
Unterstützt |
|
Sequenzfunktionen (z. B. |
Nicht unterstützt |
Unterstützt |
Nicht unterstützt |
Unterstützt |
|
Flüchtige (VOLATILE) benutzerdefinierte Funktionen |
Nicht unterstützt |
Unterstützt |