ELT là gì?

Trả lời nhanh: ELT (Extract, Load, Transform) là cách tích hợp dữ liệu theo thứ tự trích xuất, nạp, rồi biến đổi. Bạn lấy dữ liệu từ hệ thống nguồn, nạp gần như nguyên bản vào kho dữ liệu đám mây hoặc data lake, sau đó dùng SQL ngay trong kho để làm sạch, nối bảng và tổng hợp.

Điểm chính

  • Khác biệt cốt lõi so với ETL nằm ở chỗ biến đổi diễn ra sau khi nạp, bằng sức tính toán của kho đích.
  • Dữ liệu thô được giữ lại, nên bạn có thể viết lại logic và chạy lại mà không phải trích xuất lần nữa.
  • ELT thường chia dữ liệu thành các lớp: thô, chuẩn hoá, mô hình nghiệp vụ.
  • Rủi ro lớn nhất là dữ liệu nhạy cảm nằm sẵn trong kho ở dạng nguyên bản, và chi phí tính toán tăng nếu truy vấn viết dở.
  • Dữ liệu cần che hoặc loại bỏ trước khi rời hệ thống nguồn thì nên dùng biến thể ETLT hoặc ETL.
Mục lục
  1. ELT là gì và đứng ở đâu trong chuỗi xử lý dữ liệu?
  2. ELT hoạt động thế nào so với ETL?
  3. Dữ liệu trong một hệ thống ELT được tổ chức thành những lớp nào?
  4. Ví dụ minh hoạ: ELT cho chuỗi cửa hàng bán lẻ
  5. Bộ công cụ ELT gồm những gì?
  6. Ưu điểm và nhược điểm của ELT
  7. ELT xử lý dữ liệu nhạy cảm thế nào?
  8. Những lỗi thường gặp khi triển khai ELT
  9. Khi nào nên chọn ELT, khi nào chọn ETL hoặc ETLT?
  10. Câu hỏi thường gặp

ELT là gì và đứng ở đâu trong chuỗi xử lý dữ liệu?

ELT là viết tắt của Extract (trích xuất), Load (nạp) và Transform (biến đổi). Theo mô tả của Databricks, dữ liệu được trích xuất từ hệ thống nguồn, nạp trực tiếp vào kho lưu trữ trung tâm, rồi mới biến đổi bên trong hệ thống đích. Thứ tự này là đặc điểm nhận diện của ELT.

Ba bước có vai trò như sau:

  • Extract: lấy dữ liệu từ cơ sở dữ liệu vận hành, ứng dụng SaaS, API, file xuất từ phần mềm kế toán hoặc ERP.
  • Load: ghi dữ liệu vào kho đích ở dạng thô hoặc chỉ chỉnh nhẹ. Kho đích có thể là kho dữ liệu doanh nghiệp hoặc data lake.
  • Transform: áp dụng quy tắc nghiệp vụ, làm sạch, tổng hợp và làm giàu dữ liệu khi nó đã nằm trong kho.

ELT là một kiểu tích hợp dữ liệu. Nó cũng là một cách sắp xếp các bước bên trong một data pipeline. Nếu bạn cần phần khái niệm chung về chuỗi trích xuất, biến đổi, nạp theo thứ tự truyền thống, hãy đọc bài quy trình ETL và so sánh với ELT. Bài này tập trung vào những gì riêng của ELT.

ELT hoạt động thế nào so với ETL?

Điểm khác nhau nằm ở nơi và thời điểm biến đổi. Theo dbt Labs, với ETL dữ liệu được biến đổi trước khi nạp, còn với ELT dữ liệu được biến đổi sau khi nạp vào kho. Hệ quả thực tế là ETL cần một máy chủ hoặc công cụ xử lý ở giữa. ELT dùng chính kho dữ liệu làm nơi tính toán.

ETL: biến đổi trước khi nạp Hệ thống nguồn Máy xử lý trung gian Kho dữ liệu ELT: biến đổi sau khi nạp Hệ thống nguồn Kho: lớp thô Kho: lớp mô hình Ô vàng là nơi biến đổi diễn ra ở ETL; ở ELT việc đó nằm trong kho.
Vị trí của bước biến đổi trong ETL và ELT. Sơ đồ khái niệm, không có số liệu.

Có ba hệ quả kỹ thuật bạn nên nắm:

  • Dữ liệu gốc được giữ lại. Khi kế toán đổi cách tính doanh thu thuần, bạn sửa câu lệnh SQL rồi chạy lại trên dữ liệu thô đã có. Bạn không phải gọi lại API nguồn, vốn có thể đã xoá hoặc giới hạn lịch sử.
  • Dữ liệu sẵn sàng sớm hơn. Theo dbt Labs, ELT không cần biến đổi trước khi dữ liệu vào kho, nên dữ liệu có mặt nhanh hơn. Nhóm phân tích có thể xem dữ liệu thô trước khi mô hình hoàn chỉnh.
  • Tải tính toán dồn vào kho. Wikipedia lưu ý rằng ELT đòi hỏi engine xử lý đủ mạnh để biến đổi theo yêu cầu và trả kết quả kịp thời. Kho yếu hoặc cấu hình sai sẽ làm ELT chậm.

Dữ liệu trong một hệ thống ELT được tổ chức thành những lớp nào?

Nạp dữ liệu thô vào kho không có nghĩa là để mọi thứ lẫn lộn. Các nhóm kỹ thuật dữ liệu thường chia kho thành nhiều lớp, mỗi lớp là một schema riêng. Tên gọi khác nhau giữa các đội, nhưng cách chia phổ biến gồm ba lớp dưới đây.

Ba lớp dữ liệu trong kho ELT Lớp thô (raw) Bản sao nguyên trạng từ nguồn Lớp chuẩn hoá (staging) Đổi tên, ép kiểu, loại trùng Lớp nghiệp vụ (marts) Bảng sẵn sàng cho báo cáo
Cách chia lớp phổ biến trong kho ELT. Sơ đồ khái niệm; tên lớp có thể khác nhau tuỳ đội.
  • Lớp thô: bản sao của bảng nguồn, thường thêm cột thời điểm nạp. Lớp này chỉ ghi thêm, không sửa. Đây chính là dữ liệu thô mà mọi lần tính lại sẽ quay về.
  • Lớp chuẩn hoá: mỗi bảng thô có một bảng tương ứng, với tên cột thống nhất, kiểu dữ liệu đúng (ngày dạng chuỗi chuyển thành ngày), bản ghi trùng bị loại. Chưa nối bảng ở bước này.
  • Lớp nghiệp vụ: nối nhiều bảng, áp công thức doanh thu, tồn kho, tỷ lệ chuyển đổi. Công cụ BI hoặc dashboard chỉ nên đọc từ lớp này. Về mô hình bảng, bạn có thể tham khảo bài về data modeling.

Thực tế, các đội dùng dbt viết mỗi lớp thành các mô hình SQL dạng câu lệnh SELECT. Theo mô tả của một bài hướng dẫn về dbt, công cụ này tự quyết định tạo bảng, view hay incremental merge dựa trên cấu hình.

Ví dụ minh hoạ: ELT cho chuỗi cửa hàng bán lẻ

Ví dụ minh hoạ (giả định, không phải số liệu thật). Một chuỗi 12 cửa hàng đồ gia dụng có phần mềm bán hàng (POS) tại từng cửa hàng, một phần mềm kế toán và một sàn thương mại điện tử. Ban giám đốc muốn xem doanh thu thuần theo cửa hàng và theo ngày, đã trừ hàng trả.

  1. Extract và Load: một công cụ đồng bộ sao chép bảng đơn hàng, chi tiết đơn hàng, hàng trả từ POS, cùng file xuất từ sàn, vào schema raw. Không sửa gì ở bước này, kể cả cột có giá trị rỗng.
  2. Transform lớp chuẩn hoá: đổi cột “ngay_ban” dạng văn bản thành kiểu ngày, đổi mã cửa hàng viết hoa và viết thường lẫn lộn về một dạng, loại các dòng đơn hàng bị đồng bộ hai lần.
  3. Transform lớp nghiệp vụ: nối chi tiết đơn với hàng trả, tính doanh thu thuần, tổng hợp theo cửa hàng và ngày.

Một mô hình ở lớp chuẩn hoá có thể trông như sau. Đây là SQL minh hoạ, tên bảng và cột do người viết đặt:

CREATE OR REPLACE VIEW staging.stg_don_hang AS
SELECT
  id AS ma_don,
  UPPER(TRIM(ma_cua_hang)) AS ma_cua_hang,
  CAST(ngay_ban AS DATE) AS ngay_ban,
  tong_tien
FROM raw.pos_don_hang
WHERE id IS NOT NULL;

Giả sử sau này kế toán yêu cầu loại thuế VAT khỏi doanh thu. Bạn chỉ sửa mô hình lớp nghiệp vụ rồi chạy lại. Dữ liệu POS không phải trích xuất thêm lần nào. Nếu dùng ETL kiểu cũ, logic nằm trong công cụ trung gian và thường phải chạy lại cả chuỗi.

Bộ công cụ ELT gồm những gì?

ELT không phải một sản phẩm đơn lẻ. Nó là cách ghép các thành phần, mỗi thành phần lo một phần việc. Dưới đây là các nhóm công cụ thường gặp. Danh sách chỉ nhằm mô tả, không xếp hạng hay khuyến nghị.

Thành phần Việc phụ trách Ví dụ công cụ
Trích xuất và nạp Đồng bộ dữ liệu từ nguồn vào kho, xử lý thay đổi cấu trúc cột Fivetran, Airbyte
Kho đích Lưu dữ liệu và cung cấp sức tính toán Snowflake, BigQuery, Redshift, Databricks
Biến đổi Viết, kiểm thử, ghi tài liệu cho các mô hình SQL dbt
Điều phối Lên lịch, xử lý thứ tự phụ thuộc và chạy lại khi lỗi Airflow
Báo cáo Đọc từ lớp nghiệp vụ để hiển thị Power BI, Tableau

Về vai trò của dbt, chính dbt Labs mô tả rằng công cụ này không trích xuất hay nạp dữ liệu, mà biến đổi dữ liệu đã nằm trong kho. Nghĩa là bạn vẫn cần một công cụ khác lo bước Extract và Load. Một ví dụ về bộ ghép khác là Airbyte cho đội có nhân lực kỹ thuật và ngân sách hạn chế, Fivetran cho đội muốn kết nối chạy sẵn, theo một bài so sánh stack trên ModelDock.

Về chi phí, kho đám mây thường tính tiền theo sức tính toán bạn dùng. Một bài hướng dẫn về dbt cho biết khi chạy biến đổi trong kho thì bạn chỉ trả cho phần compute đã dùng. Điều này có hai mặt: không phải mua máy chủ xử lý riêng, nhưng truy vấn viết kém sẽ tạo hoá đơn cao. Bảng giá thay đổi theo nhà cung cấp và theo thời điểm, nên bạn cần xem trang giá chính thức khi lập kế hoạch.

Ưu điểm và nhược điểm của ELT

Khía cạnh Ưu điểm Nhược điểm
Tốc độ có dữ liệu Dữ liệu vào kho ngay, nhóm phân tích xem sớm Dữ liệu thô chưa sạch, người dùng không biết dễ dùng nhầm
Linh hoạt Sửa logic rồi chạy lại trên dữ liệu đã có Logic dễ phân tán thành hàng trăm câu SQL nếu không có quy ước
Hạ tầng Không cần máy chủ xử lý trung gian Phụ thuộc vào kho đích, khó đổi nhà cung cấp
Chi phí Tính theo mức dùng, kho co giãn khi cần Truy vấn nặng hoặc chạy lại toàn bộ dễ làm chi phí vượt dự kiến
Bảo mật Phân quyền theo schema trong một nơi Dữ liệu nhạy cảm nằm nguyên bản trong kho
Chất lượng Kiểm thử SQL tự động sau khi nạp Lỗi chỉ lộ ra sau khi dữ liệu đã vào kho

ELT xử lý dữ liệu nhạy cảm thế nào?

Đây là điểm các bài hướng dẫn thường bỏ qua. Vì ELT nạp dữ liệu nguyên trạng, bảng khách hàng có thể mang theo số điện thoại, địa chỉ, số căn cước vào lớp thô. Nếu dữ liệu này đi vào kho dùng chung mà không kiểm soát, nhiều người có quyền đọc schema raw sẽ thấy nó.

Có ba cách xử lý, thường kết hợp:

  • Không nạp cột không cần. Khi cấu hình đồng bộ, bỏ chọn cột số căn cước nếu báo cáo không dùng đến. Đây là bước rẻ và hiệu quả nhất.
  • Phân quyền theo lớp. Schema raw chỉ mở cho nhóm kỹ thuật dữ liệu. Nhóm phân tích và công cụ BI chỉ đọc lớp nghiệp vụ.
  • Che hoặc băm trường định danh. Với những trường như số điện thoại, bạn áp dụng che dữ liệu ở lớp chuẩn hoá để các lớp sau chỉ thấy bản đã che hoặc đã băm. Nếu bản nguồn bắt buộc phải che trước khi rời máy chủ, bạn chuyển sang mô hình ETLT: che ở bước trích xuất, phần biến đổi còn lại làm trong kho.

Với dữ liệu cá nhân, điểm cần rà trong ELT là khâu nạp. Bạn phải biết cột nào chứa thông tin định danh trước khi bật đồng bộ, và ghi lại mục đích dùng từng cột. Việc này khó làm ngược lại sau khi lớp thô đã chứa dữ liệu của hàng triệu khách. Nội dung này chỉ có tính tham khảo, không phải tư vấn pháp lý.

Những lỗi thường gặp khi triển khai ELT

  • Cho người dùng cuối đọc thẳng lớp thô. Con số doanh thu trên dashboard bị lệch vì bản ghi trùng hoặc đơn huỷ chưa được loại. Cách xử lý: chỉ cấp quyền đọc cho lớp nghiệp vụ, và đặt tên schema rõ ràng.
  • Chạy lại toàn bộ bảng mỗi đêm. Bảng đơn hàng 3 năm phải tính lại dù chỉ có vài nghìn dòng mới. Cách xử lý: dùng mô hình tăng dần (incremental), chỉ xử lý dòng mới hoặc dòng thay đổi. Một bài hướng dẫn mô tả rằng như vậy chỉ dữ liệu mới hoặc mới cập nhật được xử lý, giảm tải cho kho và chạy nhanh hơn.
  • Nguồn đổi tên cột mà không báo. Phần mềm kế toán cập nhật phiên bản, cột “so_hd” thành “so_hoa_don”, mô hình SQL báo lỗi hoặc trả về rỗng. Cách xử lý: thêm kiểm thử cột bắt buộc tồn tại ở lớp chuẩn hoá và cảnh báo khi lệch. Bạn có thể bổ sung kiểm tra chất lượng dữ liệu ở đây.
  • Logic doanh thu bị viết ở nhiều nơi. Mỗi nhóm có một công thức riêng. Cách xử lý: đặt công thức ở một mô hình duy nhất ở lớp nghiệp vụ và để các báo cáo cùng đọc nó.
  • Không biết một cột đi từ đâu ra. Khi số liệu bị nghi ngờ, không ai lần ngược được. Cách xử lý: dùng công cụ ghi quan hệ phụ thuộc giữa các mô hình, hoặc xem truy vết nguồn gốc dữ liệu để biết cách ghi nhận.

Khi nào nên chọn ELT, khi nào chọn ETL hoặc ETLT?

Hai câu hỏi quyết định lựa chọn là: dữ liệu có phải xử lý trước khi rời nguồn không, và kho đích có đủ linh hoạt để tính toán không.

Chọn mô hình tích hợp ELT Nạp thô, biến đổi trong kho ETLT Che trước, phần còn lại trong kho ETL nhẹ Dữ liệu nhỏ, kho đơn giản ETL Xử lý trước khi vào kho Ít cần xử lý trước Cần xử lý trước Trục dọc: kho thấp đến linh hoạt (dưới lên trên)
Ma trận khái niệm để chọn giữa ELT, ETLT và ETL. Không có số liệu.

Cách đọc ma trận:

  • ELT: kho đám mây có sức tính toán co giãn và nguồn không chứa trường cần che. Đây là trường hợp ELT phát huy rõ nhất, như ví dụ chuỗi bán lẻ ở trên.
  • ETLT: kho linh hoạt, nhưng một số trường phải che, băm hoặc loại khỏi dữ liệu trước khi rời nguồn. Phần che làm sớm, phần còn lại làm sau khi nạp.
  • ETL: kho đích là hệ thống cũ, sức tính toán hạn chế, hoặc dữ liệu phải được chuẩn hoá nghiêm ngặt trước khi vào. Theo Databricks, ETL từng phổ biến vì nó phù hợp với các ràng buộc của kho dữ liệu cũ đặt tại chỗ.
  • ETL nhẹ hoặc làm tay: dữ liệu nhỏ, chỉ vài bảng tính. Dựng cả bộ công cụ ELT khi đó thường tốn công hơn lợi ích.

Hai dấu hiệu bạn chưa nên chuyển sang ELT: kho đích còn chưa chọn, hoặc phần lớn dữ liệu vẫn nằm trong file Excel do từng phòng ban tự giữ. Khi đó việc cần làm trước là gom dữ liệu về một nơi có cấu trúc, tham khảo thêm về data lake và kho dữ liệu để chọn đích.

Câu hỏi thường gặp

ELT là gì trong dữ liệu, nói ngắn gọn?

ELT là quy trình trích xuất dữ liệu từ nguồn, nạp vào kho đích gần như nguyên bản, rồi biến đổi bằng SQL ngay trong kho. Biến đổi diễn ra sau khi nạp, khác với ETL.

ELT có thay thế hoàn toàn ETL không?

Không. ELT phổ biến khi kho đích là nền tảng đám mây có sức tính toán lớn. Nhưng ETL vẫn hợp lý khi kho đích hạn chế hoặc khi dữ liệu phải được xử lý, che hoặc loại bỏ trước khi vào kho. Nhiều tổ chức dùng cả hai cho các luồng khác nhau.

dbt có phải là công cụ ELT không?

dbt chỉ phụ trách chữ T. Theo chính dbt Labs, công cụ này là chữ T trong ELT. Bạn cần thêm một công cụ khác để trích xuất và nạp dữ liệu vào kho.

Doanh nghiệp nhỏ có cần ELT không?

Tuỳ nguồn dữ liệu. Nếu báo cáo chỉ lấy từ một hai phần mềm và số dòng nhỏ, một bảng tính hoặc truy vấn trực tiếp có thể đủ. ELT bắt đầu có lợi khi bạn cần gộp nhiều nguồn như POS, kế toán, sàn thương mại điện tử và muốn tính lại số liệu cũ khi công thức thay đổi.

ELT khác data pipeline ở điểm nào?

Data pipeline là khái niệm rộng: mọi chuỗi bước chuyển dữ liệu từ nơi này sang nơi khác. ELT là một kiểu sắp xếp bước trong pipeline, với biến đổi đặt sau khi nạp. Pipeline cũng có thể là luồng thời gian thực hoặc luồng ETL.

Reverse ETL có phải là ELT đảo ngược không?

Không. Reverse ETL đưa dữ liệu đã xử lý từ kho trở lại các ứng dụng vận hành như CRM hoặc công cụ marketing. Đây là bước sau ELT, được trình bày riêng trong bài Reverse ETL.

VBPO cập nhật tin tức và kiến thức công nghệ cho doanh nghiệp Việt Nam. Xem thêm các bài cùng chuyên mục Dữ liệu & phân tích.