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

Dynamische Tabelle erstellen

Erstellen dynamischer Tabellen, einschließlich der erforderlichen Berechtigungen für das Erstellen einer dynamischen Tabelle.

Dynamische Tabelle löschen

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.

Dynamische Tabellen und Änderungsverfolgung

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 in staging_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;
Copy

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
  1. Öffnen Sie in Snowsight die Detailseite der dynamischen Tabelle (Anleitung).

  2. 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;
Copy

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

  • Neue Spalte hinzugefügt.

  • Vorhandene, nicht genutzte Spalte entfernt.

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.

  • Die zugrunde liegende Basistabelle wird mit identischen Spaltennamen und -typen neu erstellt.

  • Eine Spalte der zugrunde liegenden Basistabelle wird mit demselben Namen und Typ neu erstellt.

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.

  • Eine zugrunde liegende Spalte oder ein anderes Element, das von einer dynamischen Tabelle verwendet wird, ändert sich im Namen oder auf andere Weise.

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.

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.

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.