Automatisierung von Datenpipelines in Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake cached Ergebnisse auf drei Ebenen — jeweils mit anderer Reichweite und Dauer

| Bedingung | Cache-Miss, wenn … |
|---|---|
| Abfragetext exakt identisch | Groß-/Kleinschreibung, Leerzeichen oder Aliase abweichen |
| Keine nicht-wiederverwendbaren Funktionen | Funktionen ändern sich pro Lauf: RANDOM |
| Zugrunde liegende Tabellen unverändert | Seit letztem Lauf DML, Re-Clustering oder Konsolidierung |
| Persistiertes Ergebnis verfügbar | 24‑h‑TTL ohne Nutzung abgelaufen oder 31 Tage |
| Rolle hat nötige Berechtigungen | SELECT: Rolle fehlt Berechtigung; SHOW: andere Rolle |

Warehouse-Cache
Metadata Cache
Verhindert Pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Ermöglicht Pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
SELECT * vermeiden
-- Liest alle Spalten
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Liest nur das Nötige
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Implizite Cross-Joins vermeiden
-- Fehlende Join-Bedingung = kartesisch
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- Explizites JOIN mit ON-Bedingung
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automatisierung von Datenpipelines in Snowflake