Automatisation des pipelines de données dans Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake met en cache les résultats à trois niveaux — chacun avec une portée et une durée différentes

| Condition | Échec du cache lorsque… |
|---|---|
| Le texte de la requête correspond exactement | Casse, espaces ou alias diffèrent |
| Aucune fonction non réutilisable | fonctions variant entre exécutions : RANDOM |
| Tables sous-jacentes inchangées | DML, reclustering ou consolidation depuis la dernière exécution |
| Résultat persistant encore dispo | TTL de 24 h écoulé sans réutilisation, ou 31 jours |
| Le rôle a les privilèges requis | SELECT : rôle sans privilèges SHOW : rôle différent |

Cache d’entrepôt
Cache des métadonnées
Empêche l’élagage :
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Permet l’élagage :
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Éviter SELECT *
-- Lit toutes les colonnes
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Ne lit que le nécessaire
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Éviter les jointures croisées implicites
-- Condition de jointure manquante = cartésien
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- JOIN explicite avec condition ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automatisation des pipelines de données dans Snowflake