Bảng External và Iceberg

Tự động hóa Data Pipeline trong Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Bảng External là gì?

Tình huống sử dụng:

  • Harbr nhận tệp từ hàng chục đối tác mỗi ngày
  • Tải vào Snowflake là không hợp lý

bảng external.png

Bảng External

  • Dữ liệu nằm trong S3, GCS hoặc Azure Blob — không chuyển vào Snowflake
  • Snowflake lưu siêu dữ liệu: đường dẫn tệp, schema
  • Đọc tệp khi truy vấn
Tự động hóa Data Pipeline trong Snowflake

Tạo bảng External

CREATE EXTERNAL TABLE logistics.supplier_inventory
  WITH LOCATION = @harbr_stage/inventory/
  FILE_FORMAT = (TYPE = 'PARQUET')
  AUTO_REFRESH = TRUE;
Tự động hóa Data Pipeline trong Snowflake

Khi nào dùng bảng External

  • Dữ liệu do đối tác sở hữu — truy vấn mà không phải quản lý dữ liệu
  • Tệp lớn, truy vấn ít — tránh tải dữ liệu chỉ truy cập mỗi tháng một lần
  • Không được di chuyển vì tuân thủ — tệp phải ở nguyên vị trí gốc
  • Khám phá trước khi cam kết — đọc tệp thô rồi quyết định có tải không
-- 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;
Tự động hóa Data Pipeline trong Snowflake

Bảng External vs Tải dữ liệu

Bảng External

  • Không tốn lưu trữ Snowflake
  • Luôn phản ánh trạng thái hiện tại của cloud storage
  • Tốt cho dữ liệu lưu trữ, ít truy vấn
-- Truy vấn trực tiếp, không cần load
SELECT * FROM 
logistics.supplier_inventory
WHERE supplier_id = 'SUP-042';

Tải bằng COPY INTO

  • Hiệu năng truy vấn Snowflake tối đa
  • Tốt cho dữ liệu truy vấn thường xuyên, thời gian thực
-- Tải một lần, truy vấn nhanh
COPY INTO logistics.delivery_events
FROM @harbr_stage/events/;
Tự động hóa Data Pipeline trong Snowflake

Bảng Apache Iceberg

  • Làm sao đọc dữ liệu đúng từ S3, Azure Blob hoặc GCS?

    • Apache
  • Apache = Định dạng bảng mở: dữ liệu không khóa vào bất kỳ engine nào

    • Tệp Parquet + lớp siêu dữ liệu (time travel, lịch sử schema, phân vùng)
    • Độ tin cậy cấp cơ sở dữ liệu

Ảnh chụp màn hình 2026-05-11 lúc 12:14:31 CH.png

1 * Tài liệu học Snowflake
Tự động hóa Data Pipeline trong Snowflake

Snowflake quản lý vs Bên ngoài quản lý

Do Snowflake quản lý

  • Snowflake sở hữu và ghi siêu dữ liệu Iceberg
  • Truy cập đọc-ghi đầy đủ từ SQL
CREATE ICEBERG TABLE 
logistics.shipments
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  BASE_LOCATION = 'iceberg/shipments/';

Do bên ngoài quản lý

  • Catalog bên ngoài sở hữu siêu dữ liệu - AWS Glue, Apache Polaris
CREATE ICEBERG TABLE 
logistics.partner_data
  CATALOG = 'glue_catalog'
  EXTERNAL_VOLUME = 'harbr_s3_vol'
  CATALOG_TABLE_NAME = 
  'partner.deliveries';
Tự động hóa Data Pipeline trong Snowflake

Ayo berlatih!

Tự động hóa Data Pipeline trong Snowflake

Preparing Video For Download...