การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake แคชผลลัพธ์ สามระดับ — แต่ละระดับมีขอบเขตและระยะเวลาต่างกัน

| เงื่อนไข | Cache Miss เมื่อ… |
|---|---|
| ข้อความ Query ตรงกันทุกประการ | ตัวพิมพ์ เว้นวรรค หรือ Alias ต่างกัน |
| ไม่มีฟังก์ชันที่ใช้ซ้ำไม่ได้ | ฟังก์ชันที่เปลี่ยนระหว่างรัน: RANDOM |
| ตารางต้นทางไม่มีการเปลี่ยนแปลง | DML, Reclustering หรือการรวมข้อมูลหลังรันล่าสุด |
| ผลลัพธ์ที่บันทึกยังใช้งานได้ | TTL 24 ชั่วโมงหมดโดยไม่มีการใช้งาน หรือครบ 31 วัน |
| Role มีสิทธิ์ที่จำเป็น | SELECT: Role ไม่มีสิทธิ์ SHOW: Role ต่างกัน |

Warehouse Cache
Metadata Cache
ป้องกันการ Pruning:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
อนุญาตให้ Pruning:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
หลีกเลี่ยง 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';
หลีกเลี่ยง Implicit Cross-join
-- 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;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake