Динамічні таблиці

Автоматизація конвеєрів даних у Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Динамічні таблиці vs Streams і Tasks

Динамічні таблиці:

Знімок екрана 11.14.23 до полудня, 11.05.2026.png

  • Спрощують трансформації конвеєра даних завдяки декларативним SQL-операторам
  • Автоматичне оновлення
  • Snowflake виявляє, планує й зливає зміни

Streams і Tasks:

Знімок екрана 11.14.13 до полудня, 11.05.2026.png

1 * Матеріали Snowflake
Автоматизація конвеєрів даних у Snowflake

Що таке динамічні таблиці?

Декларативна автоматизація конвеєра

  • Вміст визначає запит SELECT — ви описуєте результат, Snowflake керує оновленням
  • Без налаштування streams і без розкладів 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;
Автоматизація конвеєрів даних у Snowflake

TARGET_LAG: зменшення застарівання

Контракт свіжості між вами та Snowflake

Значення TARGET_LAG Ефект
'5 minutes' Таблиця не старіша за 5 хв — часті оновлення
'1 hour' Рідші оновлення — менші обчислювальні витрати
DOWNSTREAM Лаг виводиться з нащадків — ідеально для ланцюжків
Автоматизація конвеєрів даних у Snowflake

Повне vs інкрементальне оновлення

Інкрементальне оновлення

  • Відстежує, які рядки джерела змінилися
  • Оновлює лише дотичні рядки — швидше й дешевше у масштабі
-- Дружньо до інкрементів: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

Повне оновлення

  • Перепроцесовує весь запит
  • Потрібне для окремих агрегацій і операцій над множинами
Автоматизація конвеєрів даних у Snowflake

Ланцюжок динамічних таблиць

Схема конвеєра — delivery_events (джерело) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • Кожне перетворення — окрема динамічна таблиця з власним запитом
  • Оновлення автоматично проходять по ланцюгу
  • Лаг DOWNSTREAM підлаштовується під наступну таблицю — без зайвих оновлень
Автоматизація конвеєрів даних у Snowflake

Dynamic Tables vs Streams and Tasks

Динамічні таблиці: декларативно

  • Описуєте вихід; Snowflake керує оновленням, легко підтримувати
  • Найкраще для аналітики/звітності
-- Оголосіть результат для Snowflake 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Потоки та завдання (Streams + Tasks): імперативно

  • Контроль над тим, що і коли запускається
  • Краще для розгалуженої логіки та операційних конвеєрів
-- Ви контролюєте кожен крок
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
Автоматизація конвеєрів даних у 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
Автоматизація конвеєрів даних у Snowflake

¡Vamos a practicar!

Автоматизація конвеєрів даних у Snowflake

Preparing Video For Download...