Tabele dynamiczne

Automatyzacja potoków danych w Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Tabele dynamiczne vs strumienie i zadania

Tabele dynamiczne:

Screenshot 2026-05-11 at 11.14.23 am.png

  • Upraszczają transformacje w potoku danych za pomocą deklaratywnych instrukcji SQL
  • Automatyczny proces odświeżania
  • Snowflake wykrywa, planuje i scala zmiany

Strumienie i zadania:

Screenshot 2026-05-11 at 11.14.13 am.png

1 * Snowflake Learning Material
Automatyzacja potoków danych w Snowflake

Czym są tabele dynamiczne?

Deklaratywna automatyzacja potoku

  • Zawartość definiuje zapytanie SELECT — opisujemy wynik, Snowflake zarządza odświeżaniem
  • Bez konfiguracji strumieni ani harmonogramowania zadań
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;
Automatyzacja potoków danych w Snowflake

TARGET_LAG: ograniczanie nieaktualności danych

Kontrakt świeżości między użytkownikiem a Snowflake

Wartość TARGET_LAG Efekt
'5 minutes' Tabela ma maksymalnie 5 minut opóźnienia — częste odświeżenia
'1 hour' Rzadsze odświeżenia — mniejsze zużycie zasobów
DOWNSTREAM Opóźnienie wynika z zależności poniżej — idealne dla łańcuchów tabel
Automatyzacja potoków danych w Snowflake

Pełne vs przyrostowe odświeżanie

Odświeżanie przyrostowe

  • Śledzi dokładnie, które wiersze źródłowe uległy zmianie
  • Odświeża tylko zmienione wiersze — szybsze i tańsze przy dużej skali
-- Incremental-friendly: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

Pełne odświeżanie

  • Ponownie przetwarza całe zapytanie
  • Wymagane przy niektórych agregacjach i operacjach na zbiorach
Automatyzacja potoków danych w Snowflake

Łączenie tabel dynamicznych

Diagram potoku — delivery_events (źródło) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • Każda transformacja to osobna tabela dynamiczna z własnym zapytaniem
  • Odświeżenia są propagowane automatycznie przez łańcuch
  • Opóźnienie DOWNSTREAM dostosowuje się do potrzeb następnej tabeli — bez nadmiarowych odświeżeń
Automatyzacja potoków danych w Snowflake

Tabele dynamiczne vs strumienie i zadania

Tabele dynamiczne: deklaratywne

  • Opisują wynik; Snowflake zarządza odświeżaniem — łatwe w obsłudze
  • Najlepsze do warstw analitycznych i raportowych
-- Declare the result for Snowflake 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Strumienie i zadania: imperatywne

  • Pełna kontrola nad tym, co i kiedy jest wykonywane
  • Najlepsze do złożonej logiki i potoków operacyjnych
-- You control every step
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
Automatyzacja potoków danych w 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
Automatyzacja potoków danych w Snowflake

Czas na ćwiczenia!

Automatyzacja potoków danych w Snowflake

Preparing Video For Download...