Diagnose häufiger Probleme bei der Automatisierung dynamischer Tabellen

Dieses Thema befasst sich mit Lösungen für die Problembehandlung bei dynamischen Tabellen, die nicht wie erwartet aktualisiert werden:

Einige Aktionen können eingeschränkt sein, einerseits aufgrund von Beschränkungen bei der Verwendung dynamischer Tabellen und andererseits, weil Sie nicht über die erforderlichen Berechtigungen verfügen. Weitere Informationen dazu finden Sie unter Beschränkungen für dynamische Tabellen und Zugriffssteuerung für dynamische Tabellen.

Wenn Sie ein Problem feststellen, das hier nicht aufgeführt ist, wenden Sie sich an den Snowflake-Support.

Problem

Lösung

Meine dynamische Tabelle verwendet eine vollständige Aktualisierung anstelle einer inkrementellen Aktualisierung.

Der tatsächliche Aktualisierungsmodus einer dynamischen Tabelle wird zum Zeitpunkt der Erstellung festgelegt und ist danach unveränderlich. Wenn nicht explizit angegeben, ist der Aktualisierungsmodus standardmäßig auf AUTO eingestellt, wodurch der Aktualisierungsmodus auf der Grundlage verschiedener Faktoren wie der Abfragekomplexität oder nicht unterstützter Konstrukte, Operatoren oder Funktionen ausgewählt wird.

Um eine konsistente Verhaltensweise in allen Snowflake-Releases zu gewährleisten, legen Sie Aktualisierungsmodus aller dynamischen Tabellen explizit fest. Wenn Sie z. B. möchten, dass Ihre dynamischen Tabellen nur inkrementell aktualisiert werden, müssen Sie den Aktualisierungsmodus beim Erstellen der Tabellen explizit auf INCREMENTAL festlegen und dabei bedenken, dass es einige Beschränkungen bei der Verwendung der inkrementellen Aktualisierung geben kann. Weitere Informationen dazu finden Sie unter Best Practices für die Auswahl von Aktualisierungsmodi für dynamische Tabellen.

Wenn Sie eine Rolle mit den erforderlichen Berechtigungen verwenden, können Sie den Aktualisierungsmodus mit einer der folgenden Methoden überprüfen:

  • Mit SQL: Führen Sie die SHOW DYNAMIC TABLES-Anweisung aus: In der Ausgabe zeigt die Spalte text den vom Benutzer angegebenen Aktualisierungsmodus, die Spalte refresh_mode den tatsächlichen Aktualisierungsmodus und die Spalte refresh_mode_reason zeigt, warum der tatsächliche Aktualisierungsmodus gewählt wurde.

  • Mit Snowsight: Wählen Sie im Navigationsmenü Monitoring » Dynamic Tables aus, und wählen Sie dann Ihre dynamische Tabelle aus. Sie können den Aktualisierungsmodus für die dynamische Tabelle auf der Registerkarte Table Details einsehen.

Die inkrementelle Aktualisierung meiner dynamischen Tabelle ist langsam.

Die Aktualisierungsleistung einer dynamischen Tabelle hängt von bestimmten Annahmen über den Workload oder die Daten ab, die verarbeitet werden.

Verwenden Sie Refresh History, um die Varianz zu sehen oder Ausreißer zu erkennen:

  1. Melden Sie sich bei Snowsight an.

  2. Navigieren Sie zu Monitoring » Dynamic Tables.

  3. Wählen Sie Ihre dynamische Tabelle aus, und gehen Sie auf die Registerkarte Refresh History.

  4. Verwenden Sie zur Fehlersuche die Aktualisierungsdauer Ihrer dynamischen Tabelle über die letzten 24 Stunden.

Meine dynamische Tabelle führt eine leere Aktualisierung durch, aber ich sehe Kosten.

Aktualisierungen, die keine neuen Nettozeilen erzeugen (d. h. keine hinzugefügten, aktualisierten oder gelöschten Zeilen), verbrauchen Warehouse-Ressourcen, wenn sie mit Änderungen in einem der Upstream-Objekte verbunden sind, auf die die dynamische Tabelle verweist.

Wenn zum Beispiel das zugehörige virtuelle Warehouse angehalten wird und keine Änderungen an den Basisobjekten festgestellt werden, wird das angehaltene virtuelle Warehouse nicht wieder fortgesetzt und es werden keine Credits verbraucht. Dies wird als NO_DATA-Aktualisierung bezeichnet. Werden hingegen Änderungen festgestellt, wird das virtuelle Warehouse automatisch fortgesetzt, um die Aktualisierungen zu verarbeiten, was Warehouse-Ressourcen verbraucht, selbst wenn das Nettoergebnis null Zeilen für die dynamische Tabelle ist.

Wenn Sie Kosten sehen, aber keine Änderungen an Ihrer dynamischen Tabelle vorgenommen haben, könnte das an einer Änderung in Ihrer Quelltabelle liegen. Auf der Registerkarte Refresh History in Snowsight können Sie überprüfen, ob virtuelle Warehouses Credits verbraucht haben:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Monitoring » Dynamic Tables aus.

  3. Wählen Sie Ihre dynamische Tabelle aus, und gehen Sie auf die Registerkarte Refresh History.

  4. Aktivieren Sie das Kontrollkästchen Warehouse used only, um die Aktualisierungen anzuzeigen, die auf das Warehouse angewendet wurden.

Weitere Informationen dazu finden Sie unter Erläuterungen zu den Kosten von dynamischen Tabellen.

Meine dynamische Tabelle wird neu initialisiert.

Ihre dynamische Tabelle wird möglicherweise aus einem der folgenden Gründe neu initialisiert:

  • Eine oder mehrere der Eingaben der dynamischen Tabelle werden ersetzt. Wenn Ihre dynamische Tabelle z. B. in einer Ansicht definiert ist und Sie die Ansicht ersetzen, muss die dynamische Tabelle neu initialisiert werden.

  • Wenn sich das Schema der Eingaben geändert hat und Ihre dynamische Tabelle sich auf die geänderten Spalten stützt.

  • Datenzugriffsrichtlinien werden zu den Eingaben der dynamischen Tabelle hinzugefügt, entfernt oder geändert.

  • Geklonte inkrementelle dynamische Tabellen müssen bei ihrer ersten Aktualisierung nach dem Erstellen neu initialisiert werden.

  • Replizierte dynamische Tabellen mit inkrementeller Aktualisierung werden nach dem Failover neu initialisiert, bevor die inkrementelle Aktualisierung fortgesetzt wird.

Allgemeine Informationen zur Initialisierung finden Sie unter Erläuterungen zur Initialisierung dynamischer Tabellen.