Dynamische Tabellen im Vergleich zu Streams und Aufgaben und zu materialisierten Ansichten

Wie Streams und Aufgaben bieten auch dynamische Tabellen eine Möglichkeit, Daten in Ihrer Pipeline zu transformieren:

Dynamische Tabellen im Vergleich zu Streams und Aufgaben

Obwohl dynamische Tabellen einen ähnlichen Zweck wie Aufgaben erfüllen, gibt es wichtige Unterschiede:

Comparison between streams/tasks and dynamic tables

Streams und Aufgaben

Dynamische Tabellen

Aufgaben verwenden einen imperativen Ansatz: Sie schreiben prozeduralen Code, um Daten aus Basistabellen zu transformieren.

Dynamische Tabellen verwenden einen deklarativen Ansatz: Sie schreiben eine Abfrage, in der Sie das gewünschte Ergebnis angeben, und die Daten werden aus den in der Abfrage verwendeten Basistabellen abgerufen und umgewandelt.

Sie definieren einen Zeitplan für die Ausführung des Codes, der die Daten transformiert.

Ein automatischer Aktualisierungsprozess bestimmt den Zeitplan für die Ausführung der Aktualisierungen. Der Prozess erstellt den Zeitplan für diese Aktualisierungen, sodass der angestrebte Grad an Aktualität (Verzögerung) erreicht wird.

Der prozedurale Code kann Aufrufe zu nicht deterministischem Code, gespeicherten Prozeduren und anderen Aufgaben enthalten. Der prozedurale Code kann Aufrufe von UDFs und externe Funktionen enthalten.

Obwohl die SELECT-Anweisung für eine dynamische Tabelle Verknüpfungen, Aggregationen, Fensterfunktionen und andere SQL-Funktionen und -Konstruktionen enthalten kann, kann die Anweisung keine Aufrufe von gespeicherten Prozeduren und Aufgaben enthalten. Derzeit kann die SELECT-Anweisung auch keine Aufrufe von externen Funktionen enthalten.

Diese Einschränkung ist auf die Art und Weise zurückzuführen, in der dynamische Tabellen aktualisiert werden. Um die Daten zu aktualisieren, analysiert ein automatisierter Prozess die SELECT-Anweisung für die dynamische Tabelle, um den besten Ansatz zur Aktualisierung der Daten zu bestimmen. Der automatisierte Prozess kann dies für bestimmte Typen von Abfragen nicht ermitteln.

Die vollständige Liste der Einschränkungen für die SELECT-Anweisung finden Sie unter Abfragetypen, die inkrementelle Aktualisierungen unterstützen und Derzeit nicht unterstützte Abfragekonstrukte in dynamischen Tabellen.

Aufgaben können Streams verwenden, um Daten in Zieltabellen inkrementell zu aktualisieren. Sie können diese Aufgaben so planen, dass sie in regelmäßigen Abständen ausgeführt werden.

Ein automatischer Aktualisierungsprozess führt regelmäßig inkrementelle Aktualisierungen der dynamischen Tabellen durch. Der Prozess bestimmt den Zeitplan auf Basis einer von Ihnen festgelegten Aktualität der Daten.

Dynamische Tabellen im Vergleich zu materialisierten Ansichten

Dynamische Tabellen haben einige Ähnlichkeiten mit materialisierten Ansichten, da beide die Ergebnisse einer Abfrage materialisieren. Es gibt jedoch wichtige Unterschiede:

Materialisierte Ansichten

Dynamische Tabellen

Materialisierte Ansichten dienen dazu, die Abfrageleistung transparent zu verbessern.

Wenn Sie z. B. die Basistabelle abfragen, kann die Abfrageoptimierung in Snowflake die Abfrage automatisch umschreiben, um stattdessen die materialisierte Ansicht abzufragen.

Dynamische Tabellen sind für den Aufbau mehrstufiger Datenpipelines konzipiert.

Obwohl dynamische Tabellen die Abfrageleistung verbessern können, schreibt die Abfrageoptimierung in Snowflake nicht automatisch Abfragen um, um dynamische Tabellen zu verwenden. Eine dynamische Tabelle wird nur dann in einer Abfrage verwendet, wenn Sie die dynamische Tabelle in der Abfrage angeben.

Eine materialisierte Ansicht kann nur eine einzige Basistabelle verwenden. Eine materialisierte Ansicht kann nicht auf einer komplexen Abfrage basieren (d. h. einer Abfrage mit Joins oder verschachtelten Ansichten).

Eine dynamische Tabelle kann auf einer komplexen Abfrage basieren, die auch Joins und Unions enthalten kann.

Daten, auf die über materialisierte Ansichten zugegriffen wird, sind immer aktuell. Wenn die Daten in der Basistabelle durch eine DML-Operation geändert wurden, aktualisiert Snowflake entweder die materialisierte Ansicht oder verwendet die aktualisierten Daten aus der Basistabelle.

Die Daten sind bis zur Zielverzögerungszeit für die dynamische Tabelle aktuell.

Die Wartung von materialisierten Ansichten wird automatisch von einem separaten Computedienst verwaltet, einschließlich der Aktualisierungslogik, zusammen mit der Verarbeitung aller Aktualisierungen, was in der Regel mit zusätzlichen Kosten verbunden ist.