Automatizace datových pipeline ve Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake ukládá výsledky do cache na třech úrovních — každá má jiný rozsah a dobu platnosti

| Podmínka | Cache není použita, pokud… |
|---|---|
| Text dotazu se přesně shoduje | Liší se velikost písmen, mezery nebo aliasy |
| Žádné neopakované funkce | Funkce měnící se mezi spuštěními: RANDOM |
| Podkladové tabulky se nezměnily | DML, reclusterování nebo konsolidace od posledního spuštění |
| Uložený výsledek je stále dostupný | Vypršelo 24hodinové TTL bez opětovného použití nebo 31 dní |
| Role má požadovaná oprávnění | SELECT: role nemá oprávnění; SHOW: jiná role |

Cache skladu
Metadata cache
Zabraňuje ořezávání:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Umožňuje ořezávání:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Vyhněte se 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';
Vyhněte se implicitním křížovým spojením
-- 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;
Automatizace datových pipeline ve Snowflake