[Data Engineer] ETL là gì, từ khái niệm đến thực tế

[Data Engineer] ETL là gì, từ khái niệm đến thực tế
ETL là cái gì mà ai cũng nói về nó ấy nhỉ

Khi bạn bắt đầu một công việc mà có tiếp xúc nhiều với các phòng ban liên quan đến dữ liệu, mọi người thường nói rất nhiều là “ETL”.

“Cái ETL này nó đang chạy tốt mà sao phải viết lại….etc “

Vậy thực hư ETL là gì mình xin được giải thích trong bài viết sau đây

Khái niệm ETL

ETL là viết tắt của ba chữ Extract – Transform – Load . Trong các hệ thống dữ liệu, ETL là hoạt động để vận chuyển dữ liệu từ một điểm gốc (source) đến một điểm đến (destination). Thông thường, dữ liệu ở điểm gốc sẽ lớn hơn và lộn xộn hơn dữ liệu ở điểm đến do quá trình “biến đổi” (Transform) ở giữa, tuy nhiên cũng có một số trường hợp ngược lại.

ETL Bao gồm 3 quá trình trên

Để kĩ hơn mình xin nêu định nghĩa của từng phần trong ETL:

Extract

Trích xuất dữ liệu từ nguồn, cái này có thể bao gồm từ một nguồn có cấu trúc ( SQL DB) hay phi cấu trúc ( No SQL ) ,…etc . Miễn sao chúng ta có thể load được dữ liệu từ nguồn này, đọc được và thực hiện được bước tiếp theo

Transform

Sau khi đã extract được dữ liệu từ nguồn, chúng ta có 2 lựa chọn:

  • Giữ…nguyên : Như vậy là chỉ còn có EL (Extract Load bỏ transform)
  • Biến đổi dữ liệu, loại bỏ phần thừa phần dư, hay tính toán để giảm chiều dữ liệu,… (Transform)

Như vậy bước transform là bước biến đổi dữ liệu so với cái mà chúng ta đọc được từ bản gốc ở source nhé

Load

Sau khi đã transform dữ liệu rồi, thì chúng ta sẽ ghi nó vào destination , công đoạn này là Load.

Tại sao lại cần có ETL? Sao không đọc ngay từ source cho rồi?

Tại vì… không nên làm thế ?

Trong một doanh nghiệp có nhiều hệ thống khác nhau, với nhiều loại dữ liệu, định dạng và các đọc khác nhau. Có một vài vấn đề khi bạn đọc dữ liệu trực tiếp từ nguồn, mình xin kể ra một ít như sau:

  • Đọc dữ liệu trực tiếp trên server mà khách hàng dùng —-> Sập server —> Công ty lỗ
  • 10 nơi khác nhau, 10 loại server, storage khác nhau —–> Bạn code lại 10 lần —> làm không nổi
  • Data từ nguồn quá to và không đúng cái bạn cần, transform nó nhỏ lại tại đích (destination)
  • Nhiều data nhạy cảm trên nguồn, người viết ETL sẽ hạn chế rủi ro cho công ty.
Nhiều nguồn mỗi nguồn lại khác nhau….

Đó là một số vấn đề mà mình thấy các bạn có thể “thực tế” gặp phải và dẫn tới lí do phải dùng một ETL để chuẩn bị dữ liệu trước khi đọc.

Kết

Vậy là mình đã giới thiệu xong cho các bạn khái niệm cơ bản về ETL , cũng như vì sao chúng ta cần dùng ETL trong thực tế. Mong bài viết này giúp được các bạn trong quá trình học tập và làm việc. Mình sẽ chia sẻ thêm về cách triển khai ETC trên thực tế như thế nào trong các post tiếp theo

Support Tuan | Analytic

Trả lời