Automazione delle pipeline di dati in Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake memorizza in cache i risultati a tre livelli — ciascuno con ambito e durata diversi

| Condizione | Cache miss quando… |
|---|---|
| Il testo della query coincide esattamente | Differiscono maiuscole, spazi o alias |
| Nessuna funzione non riutilizzabile | funzioni che cambiano a ogni esecuzione: RANDOM |
| Tabelle sottostanti invariate | DML, reclustering o consolidamento dall’ultima esecuzione |
| Risultato persistito ancora disponibile | TTL di 24 ore senza riuso, o 31 giorni |
| Il ruolo ha i privilegi richiesti | SELECT: ruolo senza privilegi SHOW: ruolo diverso |

Warehouse cache
Metadata cache
Impedisce il pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Consente il pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Evita SELECT *
-- Legge tutte le colonne
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Legge solo il necessario
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Evita i cross join impliciti
-- Manca la condizione di join = cartesiano
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- JOIN esplicito con condizione ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automazione delle pipeline di dati in Snowflake