Dynamische tabellen

Automatisering van datapijplijnen in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Dynamische tabellen vs. Streams en Tasks

Dynamische tabellen:

Screenshot 2026-05-11 at 11.14.23 am.png

  • Vereenvoudig transformaties in datapipelines met declaratieve SQL
  • Automatisch vernieuwen
  • Snowflake detecteert, plant en merge’t

Streams en tasks:

Screenshot 2026-05-11 at 11.14.13 am.png

1 * Snowflake Learning Material
Automatisering van datapijplijnen in Snowflake

Wat zijn dynamische tabellen?

Declaratieve pipeline-automatisering

  • Inhoud gedefinieerd door een SELECT-query — beschrijf het resultaat, Snowflake beheert de refresh
  • Geen streamconfiguratie, geen tasks plannen
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;
Automatisering van datapijplijnen in Snowflake

TARGET_LAG: verminder staleness

Het versheidscontract tussen jou en Snowflake

TARGET_LAG-waarde Effect
'5 minutes' Tabel is nooit ouder dan 5 minuten — ververst vaak
'1 hour' Minder vaak verversen — lagere compute-kosten
DOWNSTREAM Leid lag af van downstreampendants — ideaal voor ketens
Automatisering van datapijplijnen in Snowflake

Volledig vs. incrementeel verversen

Incrementele refresh

  • Volgt exact welke bronrijen veranderden
  • Ververst alleen getroffen rijen — sneller, goedkoper op schaal
-- Incremental-friendly: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

Volledige refresh

  • Verwerkt de hele query opnieuw
  • Vereist voor bepaalde aggregaties en set-bewerkingen
Automatisering van datapijplijnen in Snowflake

Dynamische tabellen koppelen

Pijplijndiagram — delivery_events (bron) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • Elke transformatie is een aparte dynamische tabel met eigen query
  • Vernieuwingen lopen automatisch door de keten
  • DOWNSTREAM neemt de lag van de volgende tabel over — voorkomt over-refreshen
Automatisering van datapijplijnen in Snowflake

Dynamische tabellen vs. Streams en Tasks

Dynamische tabellen: declaratief

  • Beschrijf de output; Snowflake regelt de refresh, eenvoudig beheer
  • Beste voor analytics-/rapportagelagen
-- 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;

Streams + Tasks: imperatief

  • Jij bepaalt wat draait en wanneer
  • Beste voor vertakkende complexe logica en operationele pipelines
-- You control every step
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
Automatisering van datapijplijnen 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
Automatisering van datapijplijnen in Snowflake

Laten we oefenen!

Automatisering van datapijplijnen in Snowflake

Preparing Video For Download...