Dynamische Tabellen

Dynamische Tabellen sind Tabellen, die auf der Grundlage einer definierten Abfrage und Zielaktualität automatisch aktualisiert werden. Dies vereinfacht die Datenumwandlung und das Pipeline-Management, ohne dass manuelle Aktualisierungen oder eine benutzerdefinierte Planung erforderlich sind.

Wenn Sie eine dynamische Tabelle erstellen, definieren Sie eine Abfrage, die angibt, wie Daten aus Basisobjekten transformiert werden sollen. Snowflake verwaltet den Aktualisierungszeitplan der dynamischen Tabelle und aktualisiert die Tabelle automatisch, um die Änderungen widerzuspiegeln, die aufgrund der Abfrage an den Basisobjekten vorgenommen wurden.

Wichtige Hinweise und allgemeine Best Practices

Immutability constraints: Use immutability constraints to let you control dynamic table updates. The constraints keep specific rows static while enabling incremental updates to the rest of the table. They prevent unwanted changes to marked data while they let normal refreshes occur for other parts of the table. For more information, see Erläuterungen zu Unveränderlichkeitseinschränkungen.

Performance considerations: Dynamic tables use incremental processing for workloads that support it, which can improve performance by processing only changed data instead of recomputing entire tables. Performance depends on your query patterns and data organization. For guidance on optimizing dynamic table performance, see Leistung und Optimierung dynamischer Tabellen.

Aufschlüsseln komplexer dynamischer Tabellen: Teilen Sie Ihre Pipeline in kleinere, fokussierte dynamische Tabellen auf, um die Leistung zu verbessern und die Problembehandlung zu vereinfachen. Weitere Informationen dazu finden Sie unter Best Practices für das Erstellen dynamischer Tabellen.

Funktionsweise von dynamischen Tabellen

Snowflake führt die in Ihrer CREATE DYNAMIC TABLE-Anweisung angegebene Definitionsabfrage aus, und Ihre dynamischen Tabellen werden durch einen automatischen Aktualisierungsprozess aktualisiert.

Das folgende Diagramm zeigt, wie dieser Prozess die Änderungen an den Basisobjekten berechnet und sie in der dynamischen Tabelle zusammenführt, indem die mit der Tabelle verbundenen Computeressourcen verwendet werden.

Visuelle Darstellung des automatischen Aktualisierungsprozesses zwischen Basisobjekten und dynamischen Tabellen

Zielverzögerung

Use target lag to set how fresh you want your data to be. Usually, the table data freshness won’t be more than that far behind the base table data freshness. With target lag, you control how often the table refreshes and how up-to-date the data stays. Target lag affects refresh frequency and compute costs.

For more information, see Die Zielverzögerung dynamischer Tabellen verstehen. For guidance on balancing data freshness with performance, see Optimieren der Leistung dynamischer Tabellen.

Aktualisierung dynamischer Tabellen

Dynamische Tabellen sind bestrebt, innerhalb der von Ihnen festgelegten Zielverzögerung aktualisiert zu werden. Eine Zielverzögerung von 5 Minuten stellt beispielsweise sicher, dass die Daten in der dynamischen Tabelle nicht mehr als 5 Minuten hinter den Datenaktualisierungen der Basistabelle zurückbleiben. Sie legen den Aktualisierungsmodus fest, wenn Sie die Tabelle erstellen. Danach können die Aktualisierungen nach einem Zeitplan oder manuell erfolgen.

Weitere Informationen dazu finden Sie unter Initialisierung und Aktualisierung dynamischer Tabellen verstehen und Dynamische Tabellen manuell aktualisieren.

Einsatzszenarios für dynamische Tabellen

Dynamische Tabellen sind ideal für die folgenden Szenarien:

  • Sie möchten Abfrageergebnisse materialisieren, ohne benutzerdefinierten Code zu schreiben.

  • Sie möchten das manuelle Verfolgen von Datenabhängigkeiten und das Verwalten von Aktualisierungszeitplänen vermeiden. Mit dynamischen Tabellen können Sie die Ergebnisse von Pipelines deklarativ definieren, ohne Transformationsschritte manuell verwalten zu müssen.

  • Sie möchten mehrere Tabellen für Datentransformationen in einer Pipeline miteinander verketten.

  • Sie benötigen keine fein abgestufte Kontrolle über die Aktualisierungszeitpläne, und Sie müssen nur eine Zielaktualität für die Pipeline angeben. Snowflake übernimmt die Orchestrierung von Datenaktualisierungen, einschließlich Planung und Ausführung, auf der Grundlage Ihrer Anforderungen an die Aktualität von Zielen.

Beispielhafte Anwendungsfälle

  • Langsam wechselnde Dimensionen (SCDs): Dynamische Tabellen können verwendet werden, um SDCs vom Typ 1 und Typ 2 zu implementieren, indem sie aus einem Änderungsstream lesen und mithilfe von Fensterfunktionen nach über nach Änderungszeitpunkt geordneten Schlüsseln arbeiten. Diese Methode behandelt Einfügungen, Löschungen und Aktualisierungen, die nicht in der richtigen Reihenfolge erfolgen, und vereinfacht so die Erstellung von SCDs. Weitere Informationen dazu finden Sie unter Slowly Changing Dimensions mit dynamischen Tabellen.

  • Joins and aggregations: To enable fast queries, you can use dynamic tables to incrementally precompute slow joins and aggregations. For guidance on optimizing these operators for incremental refresh, see Optimieren von Abfragen für inkrementelle Aktualisierungen.

  • Übergänge von Batch zu Streaming: Dynamische Tabellen unterstützen nahtlose Übergänge von Batch zu Streaming mit einem einzigen ALTER DYNAMIC TABLE-Befehl. Sie können die Aktualisierungshäufigkeit in Ihrer Pipeline steuern, um ein Gleichgewicht zwischen Kosten und Aktualität der Daten herzustellen.