Orquestração de Tarefas e DAGs

Automação de Pipelines de Dados no Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Solução para Trabalho Manual: Tarefas

  • A equipe roda um script SQL manualmente toda manhã
  • Um dia perdido = sem visibilidade pro negócio
  • As tarefas do Snowflake automatizam tudo isso

Exemplo:

-- Rotina manual de hoje (frágil)
CALL logistics.refresh_ops_dashboard();
Automação de Pipelines de Dados no Snowflake

O que saber sobre Tarefas

  • Tarefas rodam SQL com agenda — sem CRON externo
  • Executam instruções SQL ou chamam procedures
  • Compute e agendamento nativos no Snowflake
CREATE TASK logistics.refresh_dashboard
  WAREHOUSE = harbr_wh
  SCHEDULE = 'USING CRON 0 6 * * * UTC'
AS CALL logistics.refresh_ops_dashboard();
Automação de Pipelines de Dados no Snowflake

Criando uma Tarefa Isolada

CREATE OR REPLACE TASK transform_delivery_summary 
  WAREHOUSE = harbr_wh 
  SCHEDULE = 'USING CRON 5 * * * * UTC' 
  AS INSERT INTO delivery_summary 

SELECT shipment_id, status, updated_at 
FROM delivery_events 
WHERE processed = FALSE; 
Automação de Pipelines de Dados no Snowflake

Com warehouse vs Serverless

Com warehouse

  • Usa um warehouse virtual nomeado
  • Cobrança mínima de 60s por execução
CREATE TASK my_task
  WAREHOUSE = harbr_wh  -- named warehouse
  SCHEDULE = '5 MINUTE'
AS INSERT INTO ...;

Serverless

  • Omitir a cláusula WAREHOUSE
  • Cobrança por segundo consumido; sem custo ocioso
CREATE TASK my_serverless_task
  -- no WAREHOUSE clause
  SCHEDULE = '5 MINUTE'
AS INSERT INTO ...;
Automação de Pipelines de Dados no Snowflake

Orquestração de Tarefas com DAG

Diagrama de DAG — ingest_raw (tarefa raiz, ícone de relógio) → clean_events (executa após ingest_raw) → build_summary (executa após clean_events)

  • DAGs: Grafos Acíclicos Dirigidos
  • A tarefa raiz define o agendamento CRON
  • Tarefas filhas declaram o predecessor com AFTER
  • Toda a cadeia é centralizada
  • DAGs controlam quando e em que ordem tudo roda
Automação de Pipelines de Dados no Snowflake

Gerenciando Estados de Tarefa

Diagrama de estados — SUSPENDED → STARTED → SUCCEEDED ou FAILED

-- Ativar uma tarefa
ALTER TASK mytask RESUME; 
-- Pausar uma tarefa
ALTER TASK mytask SUSPEND; 
-- Executar uma tarefa
EXECUTE TASK mytask SUSPEND;
Automação de Pipelines de Dados no Snowflake

Tarefas e Streams Juntos

Diagrama de pipeline CDC — delivery_events → stream captura mudanças → stream tem dados? SIM → tarefa dispara → delivery_summary atualizado / NÃO → tarefa pula

CREATE OR REPLACE TASK logistics.process_delivery_events
    WAREHOUSE = compute_wh
    SCHEDULE = '5 minute'
    WHEN SYSTEM$STREAM_HAS_DATA('logistics.delivery_events_stream')
AS
INSERT INTO logistics.processed_events
SELECT * FROM logistics.delivery_events_stream;
Automação de Pipelines de Dados no Snowflake

Vamos praticar!

Automação de Pipelines de Dados no Snowflake

Preparing Video For Download...