A.TỔNG QUAN DỰ ÁN

KPIM đang xây dựng giải pháp quản lý và phân tích dữ liệu bằng cách tải dữ liệu từ nguồn các nguồn database cục bộ lên Microsoft Fabric. Dữ liệu này bao gồm thông tin lịch sử hoạt động của giao dịch mua hàng, được tải lên và xử lý hoàn toàn trên nền tảng Microsoft Fabric.

Quá trình tải dữ liệu được thực hiện theo hai phương pháp: Full Load và Incremental Load:

  • Full Load: Tải toàn bộ dữ liệu từ nguồn PostgreSQL lên Fabric, thường được sử dụng khi cần cập nhật toàn bộ hoặc làm mới dữ liệu trong hệ thống.
  • Incremental Load: Tải những bản ghi mới hoặc thay đổi từ PostgreSQL có transaction_date lớn hơn ngày cuối cùng đã có trên Fabric, giúp tối ưu hóa quá trình tải và cập nhật dữ liệu mà không cần phải xử lý toàn bộ.

Việc sử dụng Microsoft Fabric, mang lại hiệu suất cao và khả năng mở rộng, thay thế các kiến công cụ truyền thống và đáp ứng nhu cầu hiện đại của doanh nghiệp. Qua dự án này, KPIM khai thác tối đa dịch vụ sẵn có của Fabric, giúp hiểu rõ quá trình triển khai hệ thống quản trị dữ liệu trên nền tảng đám mây tiên tiến.

B. CHI TIẾT GIẢI PHÁP

KPIM đã triển khai giải pháp sử dụng Microsoft Fabric, một nền tảng tích hợp giúp thực hiện các tác vụ từ quản trị đến phân tích dữ liệu và tạo báo cáo. Fabric có khả năng xử lý mạnh mẽ lượng dữ liệu lớn từ nhiều nguồn khác nhau, cung cấp các dịch vụ hỗ trợ đầy đủ các vai trò như Data Engineer, Data Analyst, và Data Scientist. Giải pháp này linh hoạt, có thể mở rộng và tùy chỉnh theo nhu cầu của doanh nghiệp. KPIM cũng cung cấp chuyên viên hỗ trợ để thay đổi, mở rộng quy trình xử lý và tạo báo cáo trên nền tảng này.

Tổng quan kiến trúc hệ thống sử dụng Microsoft Fabric trong dự án này:

  • Data Source: Dữ liệu ban đầu được lấy từ PostgreSQL dưới local và tải lên Lakehouse
  • Ingestion: Quá trình ingest được sử dụng các activity có sẵn trong Pipeline. Ngoài ra, sử dụng thêm notebook cho quá trình Incremental Load.
  • Lakehouse: Là nơi lưu trữ chính trong hệ thống, Lakehouse kết hợp sức mạnh của Data Lake và Data Warehouse, cung cấp khả năng lưu trữ và xử lý dữ liệu lớn một cách linh hoạt và hiệu quả.
  • Data Pipeline: Sử dụng các Data Pipeline tích hợp trong Fabric để tự động hóa quy trình ingest dữ liệu.

Kiến trúc này tập trung vào việc sử dụng Notebook, Data Pipeline và Lakehouse trong Microsoft Fabric, giúp quá trình xử lý dữ liệu linh hoạt và dễ mở rộng. Nhờ sự kết hợp này, doanh nghiệp có thể tối ưu hóa quy trình phân tích một cách hiệu quả.

C. CÁC BƯỚC THỰC HIỆN:

1. Cài đặt On-premises data gateway

On-premises data gateway là một ứng dụng được cài đặt trên hệ thống nội bộ cá nhân có tác dụng như là cầu nối truyền dữ liệu nhanh chóng và an toàn giữa on-premises data (dữ liệu lưu trữ ở nội bộ và không có trong đám mây) với một số dịch vụ đám mây của Microsoft.

Link cài đặt: https://learn.microsoft.com/en-us/data-integration/gateway/service-gateway-install

Sau khi tải về thành công, đăng nhập tài khoản và đặt tên cho gateway, ta được kết quả như hình dưới:

A screenshot of a computer Description automatically generated

2. Cấu hình database cục bộ

  • a. PostgreSQL

Khi một máy bên ngoài cố kết nối với PostgreSQL database, đầu tiên, nó phải qua được lớp xác thực ở mức hệ điều hành được cấu hình trong file pg_hba.conf. Các chính sách sẽ dựa trên các thông tin IP máy khách, tên người dùng database để quyết định xem máy khách có đi tiếp được hay không.

File pg_hba.conf được lưu trữ trong cùng với file postgresql.conf trong thư mục C:\Program Files\PostgreSQL\16\data.

  • Cấu hình thêm các tham số trong file pg_hba.conf

A black rectangle with white text Description automatically generated

  • Cấu hình trong file postgresql.conf:

A group of white text on a black background Description automatically generated

  • Sau khi cấu hình sau, ta thực hiện reset lại service postgresql:

  • Tạo một server mới bằng công cụ pgAdmin4 ( công cụ quản trị cơ sở dữ liệu front-end PostgreSQL):

A screenshot of a computer Description automatically generated

  • Đặt tên cho server

A screenshot of a computer Description automatically generated

  • Cấu hình connection, host name ở đây để địa chỉ ip của máy tính cá nhân

A screenshot of a computer Description automatically generated

  • Kết quả sau khi tạo thành công:

A screenshot of a computer Description automatically generated

  1. b. MSSQL Server

Đối với MSSQL Server, ta cần tạo một tài khoản login vào server và trao quyền thực thi đến database cần sử dụng.

  • Click phải vào Security> New -> Login

A screenshot of a computer Description automatically generated\

  • Đặt tên login name, chọn SQL Server authentication

A screenshot of a computer Description automatically generated

  • Chuyển sang page Server Roles, cấp role cho tài khoản, tạm thời để role sysadmin

A screenshot of a computer Description automatically generated

  • Chuyển sang page User Mapping, chọn database cần sử dụng, sau đó click OK

A screenshot of a computer Description automatically generated

Kết quả sau khi tạo thành công

3. Tạo Connections and Gateways trên Fabric

A screenshot of a computer Description automatically generated

  • Tại tab On-premises data gateways, ta thấy tên của gateway vừa tạo khi nãy đã có sẵn

A screenshot of a computer Description automatically generated

  • Chuyển qua tab Connections, ta click New để tạo một connection mới, chọn biểu tượng On-premises và điền các thông số để connect:

A white background with black text Description automatically generated

A screenshot of a computer Description automatically generatedA screenshot of a login form Description automatically generated

  • Gateway cluster name: tên của cluster vừa được tạo bằng On-premises data gateway.
  • Connection name: Đặt tên cho connection bất kì.
  • Connect type: Ta lựa chọn PostgreSQL.
  • Server: Tên server muốn kết nối tới.
  • Athentication: Nhập tài khoản và mật khẩu được tạo ở postgres local.
  • Encrypted connection: chọn None.
  • Privacy level: chọn None.
  • Kết quả sau khi tạo thành công connection

A screenshot of a computer Description automatically generated

Tạo connection tương tự với SQL Server:

A screenshot of a computer Description automatically generatedA screenshot of a computer screen Description automatically generated

  • Tại mục Server, lấy tên server name trên máy cục bộ khi login

A screenshot of a computer Description automatically generated

* Các bước tiếp theo thực hiện mẫu cho PostgreSQL (SQL Server làm tương tự)

4. Tạo pipeline thực hiện ingest data

4.1 Full Load

  • Tại workspace đang làm việc, click vào New để tạo một Data pipeline

  • Đặt tên cho pipeline

A screenshot of a computer Description automatically generated

  • Tại tab Activities, chọn Copy data -> Add to canvas

A screenshot of a computer Description automatically generated

  • Đặt tên cho activity vừa tạo

A screenshot of a computer Description automatically generated

  • Ở tab Source, chọn các thông tin để kết nối đến data source như sau:

A screenshot of a computer Description automatically generated

  • Connection: chọn tên connection đã tạo khi nãy.
  • Connection type: Chọn PostgreSQL.
  • Use query: chọn Table.
  • Table: chọn table đã tạo sẵn trong database Postgres
  • Chuyển sang tab Destination, chọn các thông tin tương tự

A screenshot of a computer Description automatically generated

  • Connection: chọn một object storage như lakehouse hoặc warehouse đã tạo trước.
  • Root folder: chọn Tables
  • Table name: chọn table đã có trong Lakehouse hoặc có thể chọn new để tạo mới table
  • Ở tab Mapping, chọn import schemas để mapping các trường ở data source với data destination

A screenshot of a computer Description automatically generated

  • Sau khi thiết lập xong, click vào icon save

    để lưu pipeline và chọn Run để bắt đầu chạy pipeline

A screenshot of a computer Description automatically generated

  • Kết quả sau khi chạy thành công

A screenshot of a computer Description automatically generated

  • Kiểm tra dữ liệu trong lakehouse sau khi chạy xong pipeline

A screenshot of a computer Description automatically generated

4.2. Incremental Load

Incremental Load giúp chỉ tải những bản ghi mới từ data source mà có transaction_date lớn hơn transaction_date cuối cùng trong bảng data destination, thay vì phải tải toàn bộ dữ liệu. Các bước thực hiện như sau:

  • Tại workspace đang làm việc, click New tạo một Notebook mới

A screenshot of a computer Description automatically generated

  • Đổi tên notebook ở góc trái trên cùng đồng thời thêm đoạn code mẫu như trong ảnh:

A screenshot of a computer Description automatically generated

Mục đích của đoạn code trên sẽ giúp lấy ra được ngày giao dịch cuối cùng có trong bảng stg_invoice.

  • Quay lại workspace làm việc, tạo một pipeline mới:

A screenshot of a computer Description automatically generated

  • Tạo một activity Notebook

  • Sau khi tạo xong, chọn tab Setting ở notebook chọn các thông tin sau:

A screenshot of a computer Description automatically generated

  • Workspace: chọn Workspace đang làm việc.
  • Notebook: chọn notebook vừa tạo ở bước trước
  • Chuyển qua tab Activities, chọn Set variable, nối Notebook tạo trước đó với Set variable mới tạo bằng On success (icon tích xanh)

  • Tại tab settings của Set variable, click New để đặt tên biến và thêm value như trong ảnh

A screenshot of a computer Description automatically generated

Mục đích của đoạn lệnh trên sẽ giúp lấy ra được giá trị trả về của activity Notebook ở bước trước, sau đó sẽ gán giá trị này vào biến last_date.

  • Tạo activity Copy data, nối Set variable ở bước trước với Copy data bằng On success

A screenshot of a computer Description automatically generated

  • Ở tab Source của Copy Data, chọn các thông tin như hình:

A screenshot of a computer Description automatically generated

  • Connection: chọn connection đã tạo các bước trước
  • Connection type: chọn PostgrSQL
  • Use query: Query
  • Nội dung query:

select * from invoice

where transaction_date > ‘@{variables(‘last_date’)}’

Mục đích của đoạn code trên sẽ lấy về các bản ghi có transaction_date lớn hơn giá trị last_date đã được gán ở bước trước.

  • Ở tab Destination, chọn tương tự như Full Load.

A screenshot of a computer Description automatically generated

  • Kết quả chạy pipeline:

A screenshot of a computer Description automatically generated

    • Dữ liệu mới ở data source

A screenshot of a computer Description automatically generated

    • Dữ liệu ở data destination trước khi chạy pipeline

A screenshot of a computer Description automatically generated

    • Dữ liệu mới đã được tải vào data destination thành công

A screenshot of a data Description automatically generated

 

Viết bài: Nguyễn Văn Trường Tốt