Xây dựng giải pháp tích hợp dữ liệu vào kho dữ liệu Báo cáo

Một phần của tài liệu Kho dữ liệu và ứng dụng xây dựng hệ thống dữ liệu trợ giúp quyết định về chính sách tiền tệ quốc gia (Trang 56)

a. Mục đích

Xây dựng được một giải pháp tích hợp dữ liệu phù hợp với các yêu cầu của bài toán nghiệp vụ. Đồng thời đáp ứng được việc mở rộng dữ liệu đầu vào (có thể thêm các CSDL tác nghiệp mới, các dạng file). Việc xây dựng giải pháp tích hợp cũng phải tính đến những khả năng thay đổi của hệ thống trong quá trình sử dụng như mã chỉ tiêu thay đổi (bổ sung hoặc bớt đi một số mã chỉ tiêu), thay đổi các đơn vị cung cấp thông tin (như tách, nhập, thành lập mới hay giải thể,… ) nhưng thông tin cung cấp vẫn đòi hỏi phải đầy đủ đến từng thời điểm yêu cầu khai thác. Mặt khác việc cập nhật thường xuyên trong CSDL tác nghiệp BCTK và Báo cáo tài chính là không thể trách khỏi nên rất có thể ngay trong thời gian tích hợp dữ liệu thì dữ liệu bên nguồn đã thay đổi. Điều này có thể dẫn đến tính tức thời của kho dữ liệu không cao.

Loading Báo cáo

thống kê Báo cáo tài

chính File Tranformation Dữ liệu nguồn Metadata DWH BCTK Dữ liệu đích Extraction

Hình 3.3 Sơ đồ tổng quát quá trình tích hợp dữ liệu vào kho dữ liệu BCTK

b. Yêu cầu tích hợp dữ liệu của hệ thống Báo cáo thống kê

Từ mục đích xác định ở trên, chúng tôi đưa ra các yêu cầu cụ thể cho việc tích hợp dữ liệu như sau:

− Tải toàn bộ dữ liệu vào DWH: đảm bảo DWH chứa đầy đủ dữ liệu lịch sử của hệ thống và mọi thay đổi trong dữ liệu nguồn đều được cập nhật vào DWH.

− Thực hiện công việc chuyển dữ liệu: tự động thực hiện việc tích hợp dữ liệu mới phát sinh theo lịch trình định sẵn (đây là các công việc thường xuyên). Chuyển các dữ liệu thay đổi đột xuất hoặc gặp lỗi trong quá trình chuyển tự động. Cần phân loại dữ liệu theo tần suất thay đổi, định kỳ phát sinh dữ liệu để có được việc đặt lịch chuyển dữ liệu hợp lý.

− Xác định được những dữ liệu bị lỗi trong quá trình chuyển đổi để thực hiện lại.

− Tham số hóa để có thể chọn việc cập nhật theo yêu cầu ví dụ như cập nhật thông tin theo một điều kiện lọc nào đó: tổ chức tín dụng, tệp BCTK, ngày dữ liệu,…

− Có thể tra cứu được dữ liệu lỗi trong quá trình tích hợp.

c. Xác định dữ liệu nguồn

− Một số dữ liệu dùng cho các bảng dimension được lấy từ các bảng danh mục tương ứng trong CSDL tác nghiệp BCTK như bảng về tên tỉnh, thành phố, bảng các loại ngoại tệ, bảng danh sách các đơn vị,… − Một số dữ liệu dùng cho các bảng dimension được lấy từ các tệp text

bao gồm Dimension về thời gian, về chỉ tiêu, về vùng miền,…

− Dữ liệu về tên các Fact, Dimension tương ứng với các chỉ tiêu từ tệp METADATA.txt. Đây là bảng siêu dữ liệu, trong đó mô tả đầy đủ mã chỉ tiêu, và các bảng Dimension về mã số thống kê mà chúng phụ thuộc cũng như các chỉ tiêu này sẽ được đổ vào bảng Fact nào. Việc định nghĩa này sẽ được định nghĩa dưới dạng tệp text và được lấy lại khi có thay đổi về mã chỉ tiêu hoặc các bảng mã thống kê.

− Dữ liệu dùng cho các bảng Fact (báo cáo thống kê theo bộ mã chỉ tiêu) được lấy từ bảng dữ liệu: TBLTHONGKE trong CSDL BCTK hoặc TBLCANDOI trong CSDL Báo cáo tài chính.

d. Một số vấn đề có thể gặp trong quá trình tích hợp dữ liệu

− Do dữ liệu đầu vào là các kho dữ liệu tác nghiệp, thu thập dữ liệu từ các đơn vị, các chi nhánh gửi lên (qua tệp text) và chưa qua xử lý. Do vậy dữ liệu có thể có giá trị NULL, sai kiểu,…

− Nguồn dữ liệu có thể thay đổi như về chỉ tiêu, đơn vị,… mà các dữ liệu tham chiếu như bảng mã chỉ tiêu, bảng mã đơn vị chưa được cập nhật kịp thời.

− Dữ liệu mới phát sinh ngay trong quá trình thực hiện tích hợp dữ liệu. − Các sự cố liên quan đến phần cứng: mất điện, hỏng hóc,…xảy ra − Do tác động trực tiếp của con người.

Trên thực tế có 2 giải pháp giúp cho việc tích hợp dữ liệu Full replacement

Incremental.

- Full replacement

Thực hiện cập nhật lại toàn bộ dữ liệu mỗi khi khi tích hợp. Phương pháp này mất nhiều thời gian và chi phí, do đó chỉ được áp dụng cho kho dữ liệu nhỏ.

- Incremental

Giải pháp này thực hiện cập nhật dữ liệu mới phát sinh cho DWH, do đó thích hợp cho các kho dữ liệu lớn. Có 2 cách thức áp dụng:

+ Thực hiện tích hợp dựa trên dữ liệu nguồn

 Phụ thuộc vào dữ liệu nguồn

 Giảm được thời gian tích hợp (do lọc được khối lượng dữ liệu nguồn) (adsbygoogle = window.adsbygoogle || []).push({});

+ Dựa vào dữ liệu đích khi tích hợp

 Không phụ thuộc vào dữ liệu nguồn

 Sao chép toàn bộ dữ liệu nguồn và đích vào vùng đệm, sau đó thực hiện đồng bộ dữ liệu.

 Mất nhiều thời gian để thực hiện

Trên cơ sở những mô tả của bài toán nghiệp vụ và căn cứ vào yêu cầu tích hợp dữ liệu ở trên, ta nhận thấy việc chọn tích hợp dữ liệu cho DWH BCTK theo giải pháp Incremental và cách thực hiện tích hợp dựa trên dữ liệu nguồn là tối ưu nhất vì kho dữ liệu BCTK rất lớn. Với việc chọn giải pháp này, các bảng dữ liệu nguồn phải có 1 trường timestamp để lưu vết thời gian khi dữ liệu được cập nhật. Khi thực hiện, công cụ tích hợp sẽ dựa vào trường này để lọc dữ liệu mới phát sinh như sau:

− Sử dụng bảng trạng thái để lưu timestamp.

− Lấy timestamp của bảng trạng thái làm điểm khởi đầu cho quá trình thực hiện.

− Lưu vết timestamp khi thực hiện xong để làm điểm khởi đầu cho lần thực hiện sau.

Tuy nhiên, giải pháp trên cũng còn lỗ hổng trong quá trình thực hiện, đó là có thể làm mất dữ liệu giữa 2 lần thực hiện khi có dữ liệu phát sinh trong quá trình thực hiện. Do vậy cần có phương án khắc phục theo các cách sau:

− Lock the table: khóa bảng dữ liệu nguồn khi thực hiện tích hợp dữ liệu.

− Reconciliation: áp dụng một tiến trình khác để lấy dữ liệu thay đổi trong quá trình thực hiện.

− Pre-sampling

 Sử dụng start timestamp và end timestamp

 Thực hiện tải tất cả dữ liệu nằm trong khoảng start timestamp và end timestamp

 Start timestamp của lần thực hiện là end timestamp của lần thực hiện trước

 End timestamp là timestamp mới nhất của dữ liệu nguồn.

Áp dụng cho việc tích hợp dữ liệu vào DWH BCTK, chúng ta đưa giải pháp cụ thể như sau:

− Chọn giải pháp sử dụng cơ chế Slowly Changing Dimension (cách thức cập nhật dữ liệu cho các bảng dimension) theo cách tạo một bản ghi mới dùng để phân tách rõ ràng dữ liệu lịch sử và dữ liệu hiện tại. − Đối với database: sử dụng tích hợp dữ liệu theo cách incremental,

dùng Start time và End Time và cờ trạng thái.

− Đối với tệp dữ liệu: sử dụng cờ trạng thái: none, started, done

Trong đó yêu cầu: trường NgayNhap của bảng TBLTHONGKE và TBLCANDOI cần phải lưu giá trị của thời điểm cập nhật lần cuối để đảm bảo cho việc lấy dữ liệu được đầy đủ cần tạo thêm 2 bảng trạng thái:

JOBEXECUTION : Lưu trạng thái của quá trình lấy dữ liệu từ nguồn vào

DWH. Mục đích của việc này để theo dõi biết được hiện tại quá trình lấy dữ liệu vào DWH đang ở giai đoạn nào trong cả quá trình và trong quá trình lấy dữ liệu này mà gặp lỗi thì xác định được cần tiến hành lại từ giai đoạn nào. Bảng trạng thái này gồm 3 bản ghi lưu trạng thái của 3 giai đoạn:

− Lấy dữ liệu từ nguồn vào Staging

− Lấy dữ liệu từ Staging vào T_ATOMIC_DATA (Bảng này chứa tất cả

các chỉ tiêu báo cáo của tất cả các đơn vị, giống như bảng TBLTHONGKE)

− Lấy dữ liệu từ bảng T_ATOMIC_DATA vào DWH (các bảng fact)

Cấu trúc:

− JOB_NAME: tên giai đoạn

− EXTRACTLOW: cận dưới (adsbygoogle = window.adsbygoogle || []).push({});

− EXTRACTHIGH: cận trên

− STATUS: Trạng thái của giai đoạn (none, started, done)

RESOURCE_FILE : Lưu trạng thái của các tệp dữ liệu nguồn phục vụ cho quá trình lấy dữ liệu vào DWH. Mỗi tệp dữ liệu gồm 1 bản ghi gồm có các thông tin sau:

− FILE_NAME: tên tệp dữ liệu

− STATUS: trạng thái của tệp (none, started, done)

f. Cơ chế thực hiện tích hợp

Thực hiện tích hợp theo 2 cơ chế:

− Theo lịch trình lập sẵn: sử dụng tích hợp dữ liệu phát sinh hàng ngày, dữ liệu của các chỉ tiêu, tỷ giá của đồng tiền Việt Nam với các ngoại tệ khác.

− Tác động trực tiếp của con người:

 Sử dụng để tích hợp loại dữ liệu ít thay đổi: dimensions, time dimension,…

 Thực hiện cập nhật theo các điều kiện lọc khi có nhu cầu:  Cập nhật lại dữ liệu lỗi của lần thực hiện trước.

 Cập nhật lại dữ liệu sai logic

 Các nhu cầu khác: metadata tích hợp dữ liệu

Một phần của tài liệu Kho dữ liệu và ứng dụng xây dựng hệ thống dữ liệu trợ giúp quyết định về chính sách tiền tệ quốc gia (Trang 56)