Otomatisasi Data Pipeline di Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake melakukan cache hasil pada tiga level — masing-masing dengan cakupan dan durasi berbeda

| Kondisi | Cache Miss Ketika… |
|---|---|
| Teks query persis sama | Huruf besar/kecil, spasi, atau alias berbeda |
| Tanpa fungsi tidak-reusable | fungsi yang berubah tiap run: RANDOM |
| Tabel dasar tidak berubah | Ada DML, reclustering, atau konsolidasi sejak run terakhir |
| Hasil tersimpan masih tersedia | TTL 24 jam habis tanpa dipakai ulang, atau 31 hari |
| Role punya hak yang diperlukan | SELECT: role kurang hak SHOW: role berbeda |

Warehouse cache
Metadata cache
Mencegah pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Memungkinkan pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Hindari SELECT *
-- Membaca semua kolom
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Hanya baca yang diperlukan
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Hindari cross-join implisit
-- Tanpa kondisi join = Kartesius
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- JOIN eksplisit dengan ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Otomatisasi Data Pipeline di Snowflake