2.2.4.1. Yêu cầu đối với dữ liệu nguồn
Yêu cầu chung đối với tất cả các dữ liệu nguồn: Mọi bảng dữ liệu nguồn cần có trường khóa chính không đổi (Nature Key). Đây là căn cứ để nhận dạng những dòng dữ liệu sẽ được lấy cho một phiên ETL.
Các bảng của dữ liệu nguồn chia thành 2 loại:
- Các bảng danh mục: là nguồn cho các bảng dimension trong DW - Các bảng chi tiết giao dịch: là nguồn cho các bảng fact trong DW
2.2.4.2. Xác định phạm vi dữ liệu nguồn cho một phiên ETL
Với phiên ETL đầu tiên (first load), phạm vi dữ liệu nguồn là toàn bộ dữ liệu lịch sử đến hiện tại. Từ phiên ETL thứ 2 trở đi, các phiên ETL được thực hiện theo chu
kỳ (hàng ngày, hàng tuần,…); mục tiêu của mỗi phiên là chuyển được các dữ liệu nguồn mới phát sinh hoặc có thay đổi trong khoảng thời gian tương ứng với chu kỳ đã xác định.
- Với từng bảng danh mục:
o Nếu bảng được thiết kế ở dạng có lưu vết các thay đổi dữ liệu: Căn cứ vào lưu vết để lọc ra những bản ghi mới hoặc thay đổi trong khoảng thời gian chu kỳ.
o Nếu bảng không có lưu vết (chỉ có dữ liệu mới nhất): Sử dụng phương pháp so sánh giữa bảng dữ liệu nguồn với bảng dữ liệu tương ứng trong DW để tìm ra các bản ghi mới hoặc có thay đổi.
o Với các bảng chi tiết giao dịch
o Các bảng giao dịch chi tiết luôn có trường thời gian thể hiện thời điểm giao dịch hoặc thời điểm lưu bản ghi giao dịch, căn cứ vào trường này xác định các bản ghi được thêm mới trong khoảng thời gian của chu kỳ.
2.2.4.3. Công đoạn ETL từ Data Source sang DSA nguồn
Đây là công đoạn chuyển đổi dữ liệu cho từng nguồn riêng, mỗi data source sẽ được chuyển vào một schema tương ứng của DSA nguồn. Những bước chính thực hiện bao gồm:
- Trên Data Source, xác định danh sách các bảng, các trường cần lấy dữ liệu
- Xác định quan hệ tham chiếu (mapping) giữa trường, bảng của DSA nguồn với trường, bảng của data source.
- Thiết kế module convert dữ liệu và chuyển dữ liệu từ data source vào DSA nguồn theo các mapping đã xác định.
- Ngay tại từng DSA nguồn sau khi dữ liệu đã được chuyển vào, tùy theo các yêu cầu nghiệp vụ cụ thể hoặc chất lượng của dữ liệu nguồn, có thể thiết kế riêng các chức năng xử lý dữ liệu trên từng DSA nguồn như:
o Làm sạch:
Loại bỏ các dữ liệu không hợp lệ.
Định dạng dữ liệu theo những format thống nhất. o Bổ sung:
Thêm dữ liệu phù hợp để đảm bảo tính toàn vẹn.
- Trên thực tế, một khó khăn thường gặp phải khi thiết kế ETL đó là chất lượng dữ liệu nguồn không tốt (không đủ, không toàn vẹn, dư thừa, sai, …). Giải pháp cần được ưu tiên là đề xuất chính sách hoặc yêu cầu đối với các hệ thống tác nghiệp để đảm bảo chất lượng dữ liệu nguồn.
- Trong trường hợp không tác động được đến dữ liệu nguồn, quá trình làm sạch và tích hợp dữ liệu có thể khá phức tạp, có những bước cần sự tham gia của người dùng nghiệp vụ. Khi đó, cần có những công cụ phần mềm chuyên dụng (thường gọi là Data Quality) phù hợp, thậm chí cũng có thể phải phát triển các ứng dụng riêng biệt để giải quyết vấn đề.
2.2.4.4. Công đoạn ETL từ các DSA nguồn sang DSA đích
Đây là công đoạn chuyển đổi dữ liệu có tính chất tích hợp, dữ liệu từ nhiều DSA nguồn (đã được làm sạch) sẽ được tích hợp về một DSA đích. Những bước chính thực hiện bao gồm:
- Xác định quan hệ tham chiếu (mapping) giữa trường, bảng của DSA đích với trường, bảng của các DSA nguồn.
- Thiết kế module chuyển dữ liệu từ các DSA nguồn sang DSA đích theo các mapping đã xác định.
- Sau khi dữ liệu đã được tích hợp về DSA đích, tùy theo các yêu cầu nghiệp vụ cụ thể, có thể thiết kế các chức năng xử lý bổ sung trên dữ liệu tích hợp.
2.2.4.5. Công đoạn ETL từ DSA đích sang EM
Đây là công đoạn chuyển đổi dữ liệu có tính chất 1:1, dữ liệu của một phiên ETL trên DSA đích (đã được hoàn tất các xử lý) sẽ được chuyển toàn bộ vào EM.
Những bước chính thực hiện bao gồm:
- Thiết kế module chuyển dữ liệu 1:1 từ DSA đích vào EM (nguồn và đích cùng cấu trúc; giữ nguyên nội dung dữ liệu).
- Dữ liệu sau khi chuyển vào EM sẽ không thay đổi nữa.
2.2.4.6. Công đoạn ETL từ EM sang các DM
Đây là công đoạn cuối của tiến trình ETL trong DW, đưa dữ liệu từ EM sang các DM. Những bước chính thực hiện bao gồm:
- Xác định các mapping giữa các trường, bảng của từng DM với các trường, bảng của EM
- Thiết kế module chuyển dữ liệu theo các mapping đã xác định.
2.2.4.7. Phương án quản lý việc thay đổi những dữ liệu nguồn
Về nguyên tắc, dữ liệu trong DW có tính bất biến, tức là đã load vào thì không thay đổi. Do đó, giải pháp đầu tiên nên áp dụng để tránh những sự thay đổi dữ liệu không thực sự cần thiết là đề xuất chính sách về mặt nghiệp vụ:
- Không cho phép sửa dữ liệu lịch sử ở nguồn - những dữ liệu mà đã được load vào DW.
- Dữ liệu nguồn cần đảm bảo được chốt (không thay đổi nữa) trước mỗi phiên ETL mới.
Tuy nhiên trên thực tế, có những tình huống thay đổi dữ liệu mang tính khách quan và cần được cập nhật vào DW, đặc biệt là với các bảng dimension. Khi đó, cần đưa ra các giải pháp kỹ thuật để xử lý.
- Đối với các bảng dimension, có 2 phương pháp thông dụng để quản lý việc thay đổi dữ liệu:
o Cập nhật trực tiếp: Cập nhật giá trị mới cho các bản ghi được xác định là thay đổi ở bảng dimension tương ứng. Trong trường hợp này, kể từ thời điểm cập nhật, kết quả truy vấn sẽ thay đổi theo giá trị mới nhất. Ví dụ: một doanh nghiệp chuyển đổi loại hình sở hữu thì các kết quả truy vấn tổng hợp theo chiều loại hình sơ hữu sẽ thay đổi và luôn trả về theo giá trị mới nhất.
SUBPLIER
Supplier_key Supplier_Name Supplier_State
001 Phlogistical Supply Company CA
SUBPLIER
Supplier_key Supplier_Name Supplier_State
001 Phlogistical Supply
Company IL
o Lưu vểt thay đổi: Với mỗi bảng dimension cần lưu vết, thiết kế một bảng lưu vết (history table) tương ứng. Trong đó:
Bảng dimension: lưu bản ghi mới nhất Bảng history: lưu các bản ghi lịch sử.
SUBPLIER
Supplier_key Supplier_Name Supplier_State
001 Phlogistical Supply Company IL
SUBPLIER_HISTORY
Supplier_key Supplier_Name Supplier_State Create_Date
Company
Nhìn chung, với hầu hết các yêu cầu phân tích thông tin thì phương pháp Cập nhật trực tiếp có đáp ứng tốt, đây cũng là phương pháp đơn giản hơn cả. Trong những trường hợp cần sự phân tích liên quan đến việc thay đổi dữ liệu lịch sử thì phương pháp Lưu vết thay đổi cầnđược áp dụng.
2.2.4.8. Quản lý tiến trình ETL
Tiến trình ETL là một chuỗi các công đoạn chuyển đổi, xử lý và vận chuyển dữ liệu từ các Data Source cho đến đích là các DM. Cần thiết kế chức năng quản lý tiến trình ETL để đảm bảo tính đồng bộ, toàn vẹn dữ liệu, nghĩa là, một phiên ETL được chỉ coi là hoàn thành khi tất cả các công đoạn bên trong đó hoàn thành, dữ liệu nguồn của một chu kỳ ETL được chuyển vào tất cả các CSDL bên trong DW (EM, các DM).
Một phiên ETL chỉ được thực hiện khi mà phiên liền trước đã hoàn thành.
Để có thể theo dõi được trạng thái thực hiện và kết quả của từng công đoạn bên trong một phiên ETL, cần thiết kế một hệ thống các bảng quản lý ETL (một phần của metadata) và các chức năng ghi log.