Dynamische Tabellen

Automatisierung von Datenpipelines in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Dynamische Tabellen vs. Streams und Tasks

Dynamische Tabellen:

Screenshot 2026-05-11 um 11:14:23 Uhr.png

  • Transformations-Pipelines per deklarativem SQL vereinfachen
  • Automatischer Refresh-Prozess
  • Snowflake erkennt, plant und merged

Streams und Tasks:

Screenshot 2026-05-11 um 11:14:13 Uhr.png

1 * Snowflake Lernmaterial
Automatisierung von Datenpipelines in Snowflake

Was sind dynamische Tabellen?

Deklarative Pipeline-Automatisierung

  • Inhalt per SELECT-Query definiert — Ergebnis beschreiben, Snowflake managt das Refresh
  • Keine Stream-Konfiguration, keine geplanten Tasks
CREATE DYNAMIC TABLE logistics.delivery_summary
  TARGET_LAG = '1 hour'
  WAREHOUSE = harbr_wh
AS
  SELECT region, COUNT(*) AS shipments,
         AVG(delivery_days) AS avg_days
  FROM logistics.shipments GROUP BY region;
Automatisierung von Datenpipelines in Snowflake

TARGET_LAG: Weniger Staleness

Der Freshness-Vertrag zwischen dir und Snowflake

TARGET_LAG-Wert Effekt
'5 minutes' Tabelle ist nie älter als 5 Minuten – häufige Refreshs
'1 hour' Selteneres Refresh – geringerer Compute-Verbrauch
DOWNSTREAM Lag von Downstream-Abhängigkeiten ableiten – ideal für verkettete Tabellen
Automatisierung von Datenpipelines in Snowflake

Vollständig vs. inkrementell aktualisieren

Inkrementelles Refresh

  • Verfolgt exakt geänderte Quellzeilen
  • Aktualisiert nur betroffene Zeilen — schneller, günstiger im Scale
-- Inkrementell-freundlich: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

Vollständiges Refresh

  • Verarbeitet die gesamte Query neu
  • Erforderlich für bestimmte Aggregationen und Mengenoperationen
Automatisierung von Datenpipelines in Snowflake

Dynamische Tabellen verketten

Pipeline-Diagramm — delivery_events (Quelle) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • Jede Transformation ist eine eigene dynamische Tabelle mit eigener Query
  • Aktualisierungen propagieren automatisch durch die Kette
  • DOWNSTREAM-Lag übernimmt Bedarf der Folgetabelle – kein Über-Refresh
Automatisierung von Datenpipelines in Snowflake

Dynamische Tabellen vs. Streams und Tasks

Dynamische Tabellen: deklarativ

  • Ergebnis beschreiben; Snowflake steuert das Refresh, einfach zu verwalten
  • Am besten für Analytics-/Reporting-Layer
-- Ergebnis für Snowflake deklarieren 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Streams + Tasks: imperativ

  • Du steuerst, was wann läuft
  • Am besten für verzweigte, komplexe Logik und Betriebs-Pipelines
-- Du kontrollierst jeden Schritt
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
Automatisierung von Datenpipelines in Snowflake

DYNAMIC_TABLE_REFRESH_HISTORY

SELECT name, state, refresh_start_time, refresh_end_time
FROM TABLE (
    INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
      NAME_PREFIX => 'HARBR_DB.DELIVERY_SUMMARY.', ERROR_ONLY => TRUE
    )
  )
ORDER BY name, data_timestamp;
NAME TRIGGER STATE START END
DELIVERY_SUMMARY SCHEDULED SUCCEEDED 2026-03-01 05:00:00 2024-03-01 05:00:08
DELIVERY_SUMMARY SCHEDULED FAILED 2026-03-01 04:00:00 2024-03-01 04:00:03
Automatisierung von Datenpipelines in Snowflake

Lass uns üben!

Automatisierung von Datenpipelines in Snowflake

Preparing Video For Download...