Automatización de canalizaciones de datos en Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake cachea resultados en tres niveles — cada uno con distinto alcance y duración

| Condición | Fallo de caché cuando… |
|---|---|
| El texto de la consulta coincide exacto | Difieren mayúsculas, espacios o alias |
| Sin funciones no reutilizables | funciones que cambian entre ejecuciones: RANDOM |
| Tablas subyacentes sin cambios | Hubo DML, reclustering o consolidación desde la última ejecución |
| Resultado persistido aún disponible | TTL de 24 h sin reutilizar, o 31 días |
| El rol tiene los privilegios requeridos | SELECT: al rol le faltan privilegios SHOW: rol distinto |

Warehouse cache
Metadata cache
Evita el pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Permite el pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Evita SELECT *
-- Lee todas las columnas
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Lee solo lo necesario
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Evita cross joins implícitos
-- Falta condición de join = cartesiano
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- JOIN explícito con condición ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automatización de canalizaciones de datos en Snowflake