Automação de Pipelines de Dados no Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

O Snowflake faz cache em três níveis — cada um com escopo e duração diferentes

| Condição | Falha no cache quando… |
|---|---|
| Texto da consulta bate exatamente | Diferem maiúsculas/minúsculas, espaços ou aliases |
| Sem funções não reutilizáveis | Funções que mudam a cada execução: RANDOM |
| Tabelas de base inalteradas | DML, reclustering ou consolidação desde a última execução |
| Resultado persistente ainda disponível | TTL de 24h sem reuso, ou 31 dias |
| Função tem privilégios necessários | SELECT: função sem privilégios SHOW: função diferente |

Warehouse cache
Metadata cache
Impede pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Permite pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Evite SELECT *
-- Lê todas as colunas
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Lê só o necessário
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Evite cross joins implícitos
-- Sem condição de junção = cartesiano
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- JOIN explícito com condição ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automação de Pipelines de Dados no Snowflake