Dynamische Tabellen erstellen¶
Dynamische Tabellen können ähnlich wie herkömmliche Tabellen erstellt und gelöscht werden, es gibt jedoch einige Unterschiede und Einschränkungen. Darüber hinaus können Änderungen an den zugrunde liegenden Tabellen, Ansichten und anderen dynamischen Tabellen, aus denen die Abfrage einer dynamische Tabelle besteht, zu Verhaltensänderungen führen oder dazu, dass eine bestehende dynamische Tabelle nicht mehr funktioniert. In den folgenden Abschnitten werden das Erstellen und Löschen von dynamischen Tabellen sowie einige Einschränkungen beschrieben.
Aufgabe |
Beschreibung |
---|---|
Erstellen dynamischer Tabellen, einschließlich der erforderlichen Berechtigungen für das Erstellen einer dynamischen Tabelle. |
|
Löschen dynamischer Tabellen. |
|
Derzeit nicht unterstützte Abfragekonstrukte in dynamischen Tabellen |
Nicht unterstützte Abfragekonstrukte. |
Unterstützte nicht deterministische Funktionen in dynamischen Tabellen |
Unterstützte nicht deterministische Funktionen. |
Erläuterungen zum Erstellen dynamischer Tabellen und der Änderungsverfolgung. |
Dynamische Tabelle erstellen¶
Um eine dynamische Tabelle zu erstellen, verwenden Sie den Befehl CREATE DYNAMIC TABLE, und geben Sie dabei die zu verwendende Abfrage, die Zielverzögerung der Daten sowie das Warehouse an, das zum Ausführen der Aktualisierungen verwendet werden soll.
Angenommen, Sie möchten eine dynamische Tabelle namens product
erstellen, die die Spalten product_id
und product_name
aus der Tabelle staging_table
enthält, und Sie haben folgende Ziele:
Sie möchten, dass die Daten in der Tabelle
product
höchstens 20 Minuten hinter den Daten instaging_table
zurückbleiben.Sie möchten die Computeressourcen des Warehouses
mywh
für die Aktualisierungen (inkrementell und vollständig) verwenden.
Um diese dynamische Tabelle zu erstellen, führen Sie die folgende CREATE DYNAMIC TABLE-SQL-Anweisung aus:
CREATE OR REPLACE DYNAMIC TABLE product
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
AS
SELECT product_id, product_name FROM staging_table;
Wie bei einer materialisierten Ansicht werden die Spalten in einer dynamischen Tabelle durch die Spalten bestimmt, die in der SELECT-Anweisung angegeben sind, mit der die dynamische Tabelle erstellt wurde. Bei Spalten, die Ausdrücke sind, müssen Sie Aliasse für die Spalten in der SELECT-Anweisung angeben.
Sie müssen sicherstellen, dass bei allen von der Abfrage für die dynamische Tabelle verwendeten Objekten die Änderungsverfolgung aktiviert ist. Weitere Informationen dazu finden Sie unter Dynamische Tabellen und Änderungsverfolgung unter diesem Thema.
Bemerkung
Wenn die Abfrage von einer anderen dynamischen Tabelle abhängt, finden Sie unter Aktualisieren von Daten, wenn dynamische Tabellen von anderen dynamischen Tabellen abhängen Richtlinien für die Auswahl der Zielverzögerungszeit.
Beachten Sie auch, dass der minimale Wert von TARGET_LAG bei jeder dynamischen Tabelle 1 Minute beträgt.
Erforderliche Berechtigungen zum Erstellen dynamischer Tabellen¶
Um eine dynamische Tabelle zu erstellen, müssen Sie über die folgenden Berechtigungen verfügen:
USAGE für die Datenbank und das Schema, in dem Sie die Tabelle erstellen möchten.
CREATE DYNAMIC TABLE für das Schema, in dem Sie die Tabelle erstellen möchten.
SELECT für die bestehenden Tabellen und Ansichten, die Sie für die dynamische Tabelle abfragen möchten.
USAGE für das Warehouse, mit dem Sie die Tabelle aktualisieren möchten.
Um eine dynamische Tabelle abzufragen oder eine dynamische Tabelle zu erstellen, die eine andere dynamische Tabelle abfragt, müssen Sie über die folgenden Berechtigungen verfügen:
SELECT für die dynamische Tabelle.
Dynamische Tabelle löschen¶
Um eine dynamische Tabelle zu löschen, können Sie entweder Snowsight oder SQL-Befehle verwenden.
- Snowsight
Öffnen Sie in Snowsight die Detailseite der dynamischen Tabelle (Anleitung).
Wählen Sie im Menü More in der rechten oberen Ecke der Seite die Option Drop aus.
- SQL
Verwenden Sie den Befehl DROP DYNAMIC TABLE.
So löschen Sie beispielsweise die dynamische Tabelle
product
:
DROP DYNAMIC TABLE product;
Erläuterungen zu den Auswirkungen von Änderungen an Spalten in Basistabellen¶
Die Spalten in den Basistabellen, Ansichten und den zugrunde liegenden dynamischen Tabellen können sich im Laufe der Zeit ändern. Einige Änderungen können sich auf die dynamische Tabelle selbst auswirken, während andere nur begrenzte oder gar keine Auswirkungen haben.
Wenn sich die zugrunde liegenden Objekte, die mit einer dynamischen Tabelle verbunden sind, ändern, hat dies folgende Auswirkungen:
Änderung |
Auswirkung |
---|---|
|
Keine. Wenn der Basistabelle eine neue Spalte hinzugefügt wurde oder eine nicht genutzte Spalte gelöscht wurde, werden keine Aktionen ausgeführt, und die Aktualisierungen werden wie zuvor fortgesetzt. |
|
Vollständige Aktualisierung/Neuinitialisierung: Während des nächsten Aktualisierungszyklus wird eine vollständige Aktualisierung ausgeführt, um sicherzustellen, dass keine falschen oder veralteten Daten in der dynamischen Tabelle vorhanden sind. |
|
Der Status der dynamischen Tabelle ändert sich in FAILING. Die dynamische Tabelle muss neu erstellt werden, um die Änderung zu berücksichtigen. Weitere Informationen zu Statusoptionen dynamischer Tabellen finden Sie unter Status dynamischer Tabellen. |
Einschränkungen bei dynamischen Tabellen und unterstützte Funktionen¶
Dynamische Tabellen unterscheiden sich von herkömmlichen Tabellen dadurch, dass bestimmte Abfragekonstrukte und Funktionen nicht zulässig sind. Außerdem werden Suchoptimierung, Clustering und der Abfragebeschleunigungsdienst nicht unterstützt. In den folgenden Abschnitten werden diese Einschränkungen beschrieben.
Derzeit nicht unterstützte Abfragekonstrukte in dynamischen Tabellen¶
Die folgenden Konstrukte werden derzeit in der Abfrage für eine dynamische Tabelle nicht unterstützt. Wenn Sie diese in der Abfrage für eine dynamische Tabelle angeben, tritt ein Fehler auf.
Externe Funktionen
Nicht deterministische Funktionen (außer denen, die unter Unterstützte nicht deterministische Funktionen in dynamischen Tabellen aufgeführt sind)
Quellen, zu denen externe Tabellen, Streams und materialisierte Ansichten gehören
Ansichten auf dynamische Tabellen oder andere nicht unterstützte Objekte
Unterstützte nicht deterministische Funktionen in dynamischen Tabellen¶
Die folgenden nicht deterministischen Funktionen werden in dynamischen Tabellen unterstützt. Beachten Sie, dass diese Funktionen nur für vollständige Aktualisierungen unterstützt werden.
Flüchtige (VOLATILE) benutzerdefinierte Funktionen
Sequenzfunktionen (z. B. SEQ1, SEQ2)
Die folgenden Kontextfunktionen:
Die folgenden Funktionen für Datum/Uhrzeit (zusammen mit ihren jeweiligen Aliassen):
Dynamische Tabellen und Änderungsverfolgung¶
Dynamische Tabellen werden aktualisiert, wenn sich die zugrunde liegenden Datenbankobjekte ändern. Die Änderungsverfolgung muss für alle zugrunde liegenden Objekte, die von einer dynamischen Tabelle verwendet werden, aktiviert sein.
Snowflake versucht, beim Erstellen einer dynamischen Tabelle die Änderungsverfolgung für alle zugrunde liegenden Objekte zu aktivieren. Der Benutzer, der die dynamische Tabelle erstellt, hat jedoch möglicherweise nicht alle notwendigen Berechtigungen, um die Änderungsverfolgung für alle zugrunde liegenden Objekte zu aktivieren.
Um Fehler bei der Aktualisierung von dynamischen Tabellen zu vermeiden, verwenden Sie SHOW VIEWS, SHOW TABLES und ähnliche Befehle, und prüfen Sie die Spalte CHANGE_TRACKING, um festzustellen, ob die Änderungsverfolgung für ein bestimmtes Datenbankobjekt aktiviert ist.
Verwenden Sie ALTER TABLE, ALTER VIEW und die zugehörige Dokumentation, um die Änderungsverfolgung für ein bestimmtes Datenbankobjekt zu aktivieren.