Automatizarea pipeline-urilor de date în Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake stochează rezultate în cache la trei niveluri — fiecare cu o durată și un domeniu diferit

| Condiție | Cache ratat când… |
|---|---|
| Textul interogării se potrivește exact | Majusculele, spațiile sau aliasurile diferă |
| Fără funcții non-reutilizabile | Funcții care se modifică între execuții: RANDOM |
| Tabelele de bază sunt nemodificate | DML, reclusterizare sau consolidare de la ultima execuție |
| Rezultatul stocat este disponibil | TTL de 24 de ore expirat fără reutilizare sau 31 de zile |
| Rolul are privilegiile necesare | SELECT: rol fără privilegii SHOW: rol diferit |

Cache de warehouse
Cache de metadate
Împiedică 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';
Evitați SELECT *
-- Reads every column
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Reads only what's needed
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Evitați join-urile încrucișate implicite
-- Missing join condition = Cartesian
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- Explicit JOIN with ON condition
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automatizarea pipeline-urilor de date în Snowflake