Fehlerbehebung bei übersprungenen oder fehlgeschlagenen Aktualisierungen dynamischer Tabellen

Unter diesem Thema finden Sie Informationen zur Problembehandlung bei übersprungenen oder fehlgeschlagenen Aktualisierungen. Informationen zur Diagnose einer langsamen Aktualisierung finden Sie unter Überwachen der Leistung dynamischer Tabellen.

Beachten Sie bei der Überwachung der Aktualisierungen Ihrer dynamischen Tabelle Folgendes:

Übersprungene Aktualisierungen

Dynamische Tabellen werden nach einem Zeitplan aktualisiert. Wenn eine geplante Aktualisierung beginnt, kann es in den folgenden Situationen dazu kommen, dass die Aktualisierung übersprungen wird:

  • Wenn der dynamischen Tabelle, die aktualisiert wird, eine andere dynamische Tabelle vorgelagert ist und die Aktualisierung für die vorgelagerte Tabelle fehlgeschlagen ist oder übersprungen wurde.

  • Wenn eine vorherige Aktualisierung für die dynamische Tabelle noch nicht abgeschlossen ist.

  • Wenn die Aktualisierung der dynamischen Tabelle oft länger dauert als die Zielverzögerung oder ein erheblicher Unterschied zwischen Zielverzögerung und tatsächlicher Verzögerung besteht, überspringt Snowflake möglicherweise eine Aktualisierung, um die Rate zukünftiger Auslassungen zu reduzieren.

    Wenn beispielsweise eine dynamische Tabelle eine Zielverzögerung von 1 Minute hat, aber normalerweise 1 Stunde für die Aktualisierung benötigt, passt das System die „tatsächliche Verzögerung“ entsprechend an.

    Informationen zur Verbesserung der Aktualisierungsleistung finden Sie unter Optimieren der Leistung dynamischer Tabellen.

Manuelle Aktualisierungen werden nie übersprungen, aber sie können dazu führen, dass andere geplante Aktualisierungen übersprungen werden, insbesondere wenn Sie häufige manuelle Aktualisierungen einer dynamischen Tabelle durchführen. Dies kann dazu führen, dass nachgelagerte dynamische Tabellen nicht mehr aktualisiert werden. Aus diesem Grund empfiehlt Snowflake, häufige manuelle Aktualisierungen einer dynamischen Tabelle mit nachgelagerten dynamischen Tabellen zu vermeiden, von denen erwartet wird, dass sie gemäß der Zielverzögerung aktualisiert werden.

Fehlgeschlagene Aktualisierungen

Aktualisierungsfehler werden in der Regel durch Probleme mit der Abfragedefinition der dynamischen Tabelle, durch Eingabedaten (z. B. Parsing-Fehler) oder durch Upstream-Fehler verursacht.

Fehlgeschlagene Aktualisierungen finden

Um fehlgeschlagene Aktualisierungen zu finden, fragen Sie den Aktualisierungsverlauf ab:

SELECT
  name,
  data_timestamp,
  state,
  state_code,
  state_message
FROM TABLE(INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY(
  NAME_PREFIX => 'MY_DB.MY_SCHEMA',
  ERROR_ONLY => TRUE
));
Copy

Sie können auch die Seite Refresh History in Snowsight verwenden, um fehlgeschlagene Aktualisierungen anzuzeigen. Die Spalte Source Data Timestamp zeigt den Zeitpunkt der letzten erfolgreichen Aktualisierung an. Eine fehlgeschlagene Aktualisierung erhöht diesen Wert nicht. Wenn dieser weit hinter der Zielverzögerung zurückbleibt, hängt Ihre dynamische Tabelle hinterher.

Fehlgeschlagene Aktualisierungen diagnostizieren

Verwenden Sie Query Profile für die Problembehandlung durch Auswahl von Show query profile neben jeder Aktualisierung. Dies zeigt den Ausführungsgraphen der Abfrage an.

Hervorhebung der Option „Show Query Profile“ in Snowsight.

Verwenden Sie die Graph-Ansicht in Snowsight, um Abhängigkeiten zu visualisieren. Eine ausgefallene oder angehaltene vorgelagerte dynamische Tabelle führt dazu, dass deren nachgelagerte Tabellen fehlschlagen. Weitere Informationen dazu finden Sie unter Diagramm der Tabellen anzeigen, die mit Ihren dynamischen Tabellen verbunden sind.

Ereignistabellen nach Fehlern abfragen

Sie können eine Ereignistabelle abfragen, um Aktualisierungsfehler in Ihren dynamischen Tabellen zu finden:

SELECT
  timestamp,
  resource_attributes:"snow.executable.name"::VARCHAR AS dt_name,
  resource_attributes:"snow.query.id"::VARCHAR AS query_id,
  value:message::VARCHAR AS error
FROM my_event_table
WHERE
  resource_attributes:"snow.executable.type" = 'DYNAMIC_TABLE' AND
  resource_attributes:"snow.database.name" = 'MY_DB' AND
  value:state = 'FAILED'
ORDER BY timestamp DESC;
Copy

Weitere Informationen zur Konfiguration von Ereignistabellen und zur Einrichtung von Alerts finden Sie unter Überwachung von Ereignistabellen und Warnmeldungen für dynamische Tabellen.