Nạp dữ liệu vào Snowflake: Stage, COPY & Snowpipe
Trước khi phân tích, dữ liệu phải vào kho. Snowflake nhận đủ định dạng phổ biến — CSV, JSON, Parquet, Avro, ORC, XML — theo hai cách chính: nạp hàng loạt (batch) bằng COPY, và nạp liên tục (gần thời gian thực) bằng Snowpipe.
Stage — “bãi tập kết” dữ liệu
Phần tiêu đề “Stage — “bãi tập kết” dữ liệu”Stage là nơi Snowflake đọc file để nạp. Có hai loại:
- Internal stage: vùng lưu trữ do Snowflake quản lý (bạn
PUTfile lên). - External stage: trỏ thẳng tới kho object đám mây của bạn — Amazon S3, Azure Blob, Google Cloud Storage — Snowflake đọc trực tiếp, không cần chép vào trong.
flowchart LR SRC["File nguồn<br/>CSV · JSON · Parquet"] --> STG["Stage<br/>(internal / external)"] STG -->|"COPY INTO"| TBL["Bảng trong Snowflake"] STG -->|"Snowpipe<br/>(tự động, liên tục)"| TBL
Nạp hàng loạt với COPY INTO
Phần tiêu đề “Nạp hàng loạt với COPY INTO”Lệnh COPY INTO đọc file từ stage và nạp vào bảng — chạy trên một virtual warehouse, song song hóa tự động, xử lý được khối lượng lớn:
COPY INTO doanh_thuFROM @my_stage/2026/FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1)ON_ERROR = 'CONTINUE';Snowflake ghi nhớ file đã nạp, nên chạy lại COPY sẽ không nạp trùng — an toàn cho pipeline lặp lại. Tham số ON_ERROR cho phép bỏ qua dòng lỗi hoặc dừng tùy chính sách của bạn.
Nạp liên tục với Snowpipe
Phần tiêu đề “Nạp liên tục với Snowpipe”Khi dữ liệu đổ về liên tục (log, giao dịch, sự kiện IoT), bạn không muốn chạy COPY thủ công mỗi lần. Snowpipe lắng nghe stage và tự nạp file mới ngay khi nó xuất hiện — gần thời gian thực, theo cơ chế serverless (Snowflake tự cấp compute, tính tiền theo lượng nạp, không cần warehouse luôn bật).
| COPY (hàng loạt) | Snowpipe (liên tục) | |
|---|---|---|
| Kích hoạt | Bạn chạy lệnh / lịch | Tự động khi có file mới |
| Độ trễ | Theo lịch (phút–giờ) | Gần thời gian thực |
| Compute | Virtual warehouse | Serverless (Snowflake lo) |
| Hợp với | Tải định kỳ, ETL đêm | Streaming, log, sự kiện |
Còn biến đổi dữ liệu (Transform)?
Phần tiêu đề “Còn biến đổi dữ liệu (Transform)?”Sau khi nạp dữ liệu thô, bạn biến đổi nó ngay trong Snowflake bằng SQL (mô hình ELT: Extract–Load–Transform). Với logic phức tạp, dùng Snowpark (Python/Java/Scala) hoặc tích hợp công cụ như dbt. Cách này tận dụng sức mạnh của Snowflake và không kéo dữ liệu ra ngoài.