External Table และ Iceberg Table

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

External Table คืออะไร?

กรณีการใช้งาน:

  • Harbr ได้รับไฟล์จาก partner หลายสิบรายทุกวัน
  • การโหลดเข้า Snowflake ไม่คุ้มค่า

ตัวอย่าง external table

External Table

  • ข้อมูลอยู่ใน S3, GCS หรือ Azure Blob — ไม่ย้ายเข้า Snowflake
  • Snowflake เก็บ metadata: path ไฟล์, schema
  • อ่านไฟล์เมื่อ query
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การสร้าง External Table

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

เมื่อใดควรใช้ External Table

  • ข้อมูลเป็นของ partner — query ได้โดยไม่ต้องจัดการข้อมูล
  • ไฟล์ขนาดใหญ่ ใช้งานไม่บ่อย — ไม่ต้องโหลดข้อมูลที่เข้าถึงเดือนละครั้ง
  • ข้อมูลย้ายไม่ได้ตามข้อกำหนด — ไฟล์ต้องอยู่ในตำแหน่งเดิม
  • สำรวจก่อนตัดสินใจ — อ่านไฟล์ดิบก่อนเลือกโหลด
-- Query partner inventory 
SELECT supplier_id,
       COUNT(*)       AS file_count,
       SUM(quantity)  AS total_units
FROM logistics.supplier_inventory
WHERE delivery_date >= '2024-01-01'
GROUP BY supplier_id;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

External Table vs การโหลดข้อมูล

External Table

  • ไม่มีค่า storage ใน Snowflake
  • สะท้อนสถานะ cloud storage ปัจจุบันเสมอ
  • เหมาะกับข้อมูลที่ query ไม่บ่อยหรือเก็บถาวร
-- Query directly, no load needed
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

การโหลดด้วย COPY INTO

  • ประสิทธิภาพ query เต็มรูปแบบของ Snowflake
  • เหมาะกับข้อมูลที่ใช้งานบ่อยและอัปเดตอยู่เสมอ
-- Load once, query fast
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Apache Iceberg Table

  • จะอ่านข้อมูลจาก S3, Azure Blob หรือ GCS ได้อย่างถูกต้องได้อย่างไร?

    • Apache
  • Apache = รูปแบบตารางเปิด: ข้อมูลไม่ผูกกับ engine ใด ๆ

    • ไฟล์ Parquet + ชั้น metadata (time travel, ประวัติ schema, partition)
    • ความน่าเชื่อถือระดับฐานข้อมูล

ภาพหน้าจอ Apache Iceberg

1 * เนื้อหาการเรียนรู้จาก Snowflake
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

จัดการโดย Snowflake vs จัดการจากภายนอก

จัดการโดย Snowflake

  • Snowflake เป็นเจ้าของและเขียน Iceberg metadata
  • อ่านและเขียนได้ผ่าน SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

จัดการจากภายนอก

  • catalog ภายนอกเป็นเจ้าของ metadata เช่น AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

มาฝึกกันเลย!

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Preparing Video For Download...