Automatisering av datapipelines i Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake cachelagrar resultat på tre nivåer — var och en med olika omfång och varaktighet

| Villkor | Cache-miss när… |
|---|---|
| Frågetexten matchar exakt | Skiftläge, blanksteg eller alias skiljer sig |
| Inga icke-återanvändbara funktioner | Funktioner som ändras mellan körningar: RANDOM |
| Underliggande tabeller är oförändrade | DML, omkluster eller konsolidering sedan senaste körning |
| Sparat resultat är fortfarande tillgängligt | 24-timmars TTL löpt ut utan återanvändning, eller 31 dagar |
| Rollen har nödvändiga behörigheter | SELECT: rollen saknar behörighet SHOW: annan roll |

Lagercache
Metadatachache
Förhindrar pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Tillåter pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Undvik 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';
Undvik implicita korsjoinar
-- 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;
Automatisering av datapipelines i Snowflake