Tabelas Dinâmicas

Automação de Pipelines de Dados no Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Tabelas Dinâmicas vs Streams e Tasks

Tabelas dinâmicas:

Captura de tela 11/05/2026 às 11:14:23

  • Simplificam transformações do pipeline com SQL declarativo
  • Processo de refresh automático
  • Snowflake detecta, agenda e faz merge

Streams e tasks:

Captura de tela 11/05/2026 às 11:14:13

1 * Snowflake Learning Material
Automação de Pipelines de Dados no Snowflake

O que são Tabelas Dinâmicas?

Automação declarativa de pipeline

  • Conteúdo definido por uma query SELECT — descreva o resultado; a Snowflake cuida do refresh
  • Sem configurar streams, sem tasks para agendar
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;
Automação de Pipelines de Dados no Snowflake

TARGET_LAG: Reduza a defasagem

O contrato de frescor entre você e a Snowflake

Valor de TARGET_LAG Efeito
'5 minutes' Tabela nunca fica mais de 5 min defasada — atualiza com frequência
'1 hour' Atualiza menos — menor consumo de compute
DOWNSTREAM Infere do dependente a jusante — ideal para tabelas encadeadas
Automação de Pipelines de Dados no Snowflake

Refresh completo vs incremental

Refresh incremental

  • Rastreia exatamente quais linhas de origem mudaram
  • Atualiza só as linhas afetadas — mais rápido e barato em escala
-- Compatível com incremental: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

Refresh completo

  • Reprocessa a query inteira
  • Necessário para certas agregações e operações de conjunto
Automação de Pipelines de Dados no Snowflake

Encadeando Tabelas Dinâmicas

Diagrama do pipeline — delivery_events (origem) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • Cada transformação é uma tabela dinâmica com sua própria query
  • Atualizações se propagam automaticamente na cadeia
  • Lag DOWNSTREAM segue a próxima tabela — evita atualizar em excesso
Automação de Pipelines de Dados no Snowflake

Tabelas Dinâmicas vs Streams e Tasks

Tabelas dinâmicas: declarativas

  • Descreva o resultado; a Snowflake gerencia o refresh, fácil de manter
  • Melhor para camadas de analytics/relatórios
-- Declare o resultado para a Snowflake 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Streams + Tasks: imperativas

  • Controle o que roda e quando
  • Melhor para lógica complexa ramificada e pipelines operacionais
-- Você controla cada etapa
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
Automação de Pipelines de Dados no 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
Automação de Pipelines de Dados no Snowflake

Vamos praticar!

Automação de Pipelines de Dados no Snowflake

Preparing Video For Download...