PHÂN TÍCH VÀ HIỂN THỊ DỮ LIỆU

Một phần của tài liệu Xử lý phân tích trực tuyến OLAP và ứng dụng trong khai thác kho dữ liệu (Trang 82)

4.3.1 Hiển thị dữ liệu của khối

Sau khi khối đã được tạo và xử lý, người sử dụng có thể xem kết quả phân tích một cách dễ dàng bằng việc thực hiện các thao tác "cuốn lên" và "trải xuống" theo các mức trên mỗi chiều của khối đã chọn.

- Cắt lát các khối đa chiều theo các mức, các chiều tuỳ chọn - Khoan sâu xuống các mức dữ liệu chi tiết nếu cần

- Cuộn lên các mức dữ liệu tổng hợp hơn (theo phân cấp chiều)

- Cho phép thay đổi yêu cầu phân tích dữ liệu bằng cách kéo thả các chiều ở các vị trí khác nhau

- Kết quả phân tích được hiển thị một cách rõ ràng, linh hoạt và tiện ích, dễ dàng sử dụng.

Ngoài công cụ Analysis Services của HQT CSDL SQL Servers, khối còn có thể được hiển thị bằng công cụ chuyên dụng OLAPBrowser Pro, cho phép hiển thị khối bằng hình ảnh đồ hoạ trực quan, sinh động, trợ giúp đắc lực cho các nhà lãnh đạo phân tích, tìm kiếm thông tin để đưa ra các quyết định đúng đắn, chính xác. Cả hai cách hiển thị khối này sẽ được trình bày cụ thể trong phần cài đặt minh hoạ.

4.3.2 Truy vấn dữ liệu

Microsoft SQL Server OLAP cung cấp trình ứng dụng mẫu (MDX Sample Application) cho phép chúng ta thực hiện các truy vấn trên cơ sở dữ liệu đa chiều nhờ sử dụng ngôn ngữ truy vấn MDX. Với MDX, chúng ta có thể tạo và thực hiện các truy vấn, xem xét kết quả một cách uyển chuyển.

4.4. CÀI ĐẶT MINH HOẠ

Công việc thực hiện phần cài đặt khá nhiều, phạm vi luận văn không thể trình bày tất cả, em xin phép chỉ cài đặt một phần kho dữ liệu, đó là kho dữ liệu chủ đề về quản lý bán hàng hữu hình. Trong phần này, em cũng xin phép chỉ trình bày cách tạo lập dữ liệu cho bảng chiều DMSanPham và một bảng thực BANHANG_FACT.

4.4.1 Tạo kho dữ liệu thƣơng mại điện tử 4.4.1.1 Tạo lập bảng chiều

Dữ liệu của bảng chiều DMSanPham được trích chọn từ hai bảng nguồn là: Product và ProductDetail. Để tổng hợp các dữ liệu cần và đưa vào bảng DMSanPham, ta cần sử dụng đến một số bảng trung gian sau:

Sanpham_Source Lưu trữ dữ liệu được nhập từ nguồn

Sanpham_Temp Lưu trữ dữ liệu trong khi được cập nhật. Dữ liệu thay đổi bảng nguồn sẽ được sẽ được so sánh với bảng này để tìm ra các bản ghi mới, sau đó chuyển chúng tới bảng Sanpham_Staging

Sanpham_Staging Lưu trữ các bản ghi mới được cập nhật. Dữ liệu mới được đưa vào kho sau khi đã được chuyển đổi cho phù hợp với cấu trúc trong kho

Bảng 4.2 Các bảng trung gian để tải dữ liệu cho chiều DMSANPHAM Nhận xét: Cấu trúc của các bảng trung gian tương tự như bảng DMSanPham trong DW, điều này giúp quá trình tải dữ liệu vào kho được thực hiện một cách khá thuận lợi. Quá trình tải dữ liệu được thực hiện như sau:

- Chuyển dữ liệu từ hệ thống tác nghiệp (hai bảng Product và ProductDetail) tới bảng SanPham_Source được thực hiện bằng câu lệnh sau:

Insert Into [DW_TMDT].dbo.[SanPham_Source ] (MaSP, TenSP, MoTa, NuocSX, DonViTinh, NhaCC, NhomHang)

( Select a.ProductID, b.ProductName, b.ProductDescription, b.ProductCountry, b.ProductUnit, c.ProviderName, d.CateName From [TMDT].dbo.[Product] a, [TMDT].dbo.[ProductDetail] b, [TMDT].dbo.[ProvDetail] c, [TMDT].dbo.[CategoryDetail] d Where a.ProductID=b.ProductID And a.CateID=d.CateID And a.ProviderID=c.ProviderID And b.LangID=1 And C.LangID=1 And d.LangID=1)

- Chuyển dữ liệu từ bảng SanPham_Source tới bảng SanPham_Temp:

Insert Into SanPham_Temp Select * From SanPham_Source

- Vì cấu trúc các bảng không có sự khác nhau, dữ liệu của hệ tác nghiệp cũng phù hợp với các cấu trúc dữ liệu trong kho, nên trong lần tải dữ liệu đầu tiên này ta chỉ cần chuyển dữ liệu thẳng từ bảng SanPham_Temp tới bảng chiều DMSanPham trong kho:

Insert Into DMSanPham (MaSP, TenSP, MoTa, NuocSX, DonViTinh, NhaCC, NhomHang) Select (MaSP, TenSP, MoTa, NuocSX, DonViTinh, NhaCC, NhomHang) From SanPham_Temp

* Cập nhật những bản ghi mới:

- Xoá dữ liệu tồn tại trong bảng SanPham_Source

TRUNCATE TABLE SanPham_Source

- Tải tất cả dữ liệu từ hệ tác nghiệp vào bảng SanPham_Source.

- Xác định các bản ghi mới được thêm vào bằng cách so sánh nội dung của bảng SanPham_Source với nội dung ở bảng SanPham_Temp sau đó thêm các bản ghi mới tới bảng SanPham_Staging.

Insert Into SanPham_Staging

Select * From SanPham_Source Where MaSP Not In (Select MaSP From SanPham_Temp )

- Tải các bản ghi mới (trong bảng SanPham_Staging) vào bảng DMSanPham:

Insert Into DMSanPham Select * From SanPham_Staging

Các bảng chiều khác được tải vào tương tự. Tuy nhiên, ở một số bảng chiều khi tải dữ liệu vào cần thực hiện một vài thao tác để biến đổi dữ liệu cho phù hợp với cấu trúc dữ liệu trong DW.

Riêng bảng chiều thời gian là một bảng chiều đặc biệt, dữ liệu không được cập nhật định kỳ như các bảng chiều khác mà dựa trên sự phân chia thời gian chuẩn, để tải dữ liệu cho bảng này, ta phải xây dựng một thủ tục

load_dim_time để phân chia thời gian theo sự phân cấp chuẩn của nó.

4.4.1.2 Tạo bảng sự kiện

Sau khi những bản ghi của bảng chiều được tải và cập nhật, bảng sự kiện sẽ được nạp dữ liệu mới. Bảng sự kiện chứa tất cả các khoá chính của các bảng chiều và được sử dụng như là khoá ngoại trong bảng sự kiện để tạo mối liên kết với các bảng chiều. Bảng sự kiện không có khoá chính của nó mà lấy tập khoá chính của các bảng chiều làm khóa chính để phân biệt các bản ghi trong nó.

Bảng BANHANG_FACT được lấy dữ liệu chủ yếu từ các bảng nguồn Order, OderDetail và một số bảng khác. Việc tạo lập dữ liệu cho bảng BANHANG_FACT được thực hiện nhờ một số bảng trung gian để chuyển đổi dữ liệu và cập nhật dữ liệu mới. Các bảng được sử dụng bao gồm:

BanHang_Source Tạo bảng dữ liệu nguồn giả định. Dữ liệu của bảng này được lấy từ các bảng Order, OderDetail và một số bảng khác trong CSDL của hệ tác nghiệp.

BanHang_Temp Bảng lưu dữ liệu của bảng Source lần cập nhật trước, dùng để so sánh phát hiện ra những bản ghi mới.

BanHang_Staging Bảng chứa dữ liệu mới được cập nhật từ hệ thống tác nghiệp sau đó thực hiện quá trình chuyển hoá dữ liệu và thao tác khoá đại diện. Dữ liệu được chuyển tới DW sau khi mọi thao tác được thực hiện.

BANHANG_FACT Bảng sự kiện về bán hàng trong kho dữ liệu

Bảng 4.3 Các bảng được sử dụng để tải dữ liệu cho bảng BANHANG_FACT Ngoài ra để minh hoạ cho một số thao tác chuyển đổi và tải dữ liệu vào trong bảng sự kiện, cần sử dụng một số bảng chiều sau:

DMSANPHAM Bảng chiều danh mục các sản phẩm DIM_TIME Bảng chiều thời gian

DMPTTT Bảng chiều phương thức thanh toán

Bảng 4.4 Một số bảng chiều minh hoạ việc cập nhật dữ liệu cho bảng FACT Nhận xét về cấu trúc các bảng trung gian:

Không có sự khác nhau giữa cấu trúc của các bảng BanHang_Source, BanHang_Temp. Vì vậy, đây là một phương pháp để trích chọn dữ liệu từ hệ thống nguồn chuyển hoá thành dữ liệu không làm ảnh hưởng tới hệ thống nguồn. Bảng BanHang_Staging được sử dụng để chèn thêm chiều khoá đại diện tới những bản ghi trong bảng sự kiện. Do đó, bảng BanHang_Staging có

thêm một số trường khoá đại diện, sau khi thực hiện các thao tác chuyển đổi thì các trường khóa đại diện này sẽ được chuyển vào kho.

Quá trình chuyển dữ liệu vào bảng BANHANG_FACT được thực hiện như sau:

- Chuyển dữ liệu của các hệ tác nghiệp vào bảng BanHang_Source:

Insert into [DW_TMDT].dbo.[BanHang_Source] (MaDonHang, MaKH, MaSP, MaNCC, NgayThang, TenPTTT, MaNganHang, SoLuong,

DonGia,ThanhTien)

Select a.OrderNo, a.CustomerID, b.ProductID, b.CompanyID, a.OrderDate, a.SettleMode, a.BankCode, b.Quantity, b.UnitPrice, b.SubTotal

From [TMDT].dbo.[Order] a, [TMDT].dbo.[OrderDetail] b Where a.OrderNo=b.OrderNo

- So sánh dữ liệu trong bảng BanHang_Source và BanHang_Temp để tìm ra những bản ghi mới và đưa vào bảng BanHang_Staging:

Insert into BanHang_Staging (MaDonHang, MaKH, MaSP, MaNCC, NgayThang, TenPTTT, MaNganHang, SoLuong, DonGia,ThanhTien) Select MaDonHang, MaKH, MaSP, MaNCC, NgayThang, TenPTTT, MaNganHang, SoLuong, DonGia,ThanhTien

From BanHang_Source Where MaDonHangNot In (Select MaDonHang From BanHang_Temp)

Tại bảng BanHang_Staging, ta sẽ thực hiện các thao tác biến đổi và chuyển hoá dữ liệu cho phù hợp cấu trúc dữ liệu trong kho, cập nhật khoá đại diện cho các bảng chiều. Dữ liệu được chuyển tới DW sau khi mọi thao tác đã được thực hiện.

- Cập nhật khoá đại diện cho bảng BanHang_Staging, ví dụ với chiều thời gian và chiều phương thức thanh toán:

Update BanHang_Staging Set TimeID=B.TimeID From

BanHang_Staging A INNER JOIN Time_Dim B ON

A.NgayThang=B.NgayThang

+ Cập nhật khoá đại diện cho chiều phương thức thanh toán:

Update BanHang_Staging Set MaPTTT=B.MaPTTT From BanHang_Staging A INNER JOIN DMPTTT B ON

B.TenPTTT=A.SettleMode And B.MaNganHang=A.BankCode

- Chuyển dữ liệu từ bảng BanHang_Staging vào bảng BANHANG_FACT trong kho:

Insert into BANHANG_FACT ( MaKH, MaSP, MaNCC, TimeID, MaPTTT, SoLuong, DonGia, ThanhTien)

Select MaKH, MaSP, MaNCC, TimeID, MaPTTT, SoLuong, DonGia, ThanhTien

From BanHang_Staging

- Chuyển các bản ghi mới trong bảng BanHang_Staging vào bảng BanHang_Temp:

Insert into BanHang_Temp (MaDonHang, MaKH, MaSP, MaNCC, NgayThang, TenPTTT, MaNganHang, SoLuong, DonGia,ThanhTien) Select MaDonHang, MaKH, MaSP, MaNCC, NgayThang, TenPTTT, MaNganHang, SoLuong, DonGia,ThanhTien

From BanHang_Staging

- Xoá dữ liệu trong bảng BanHang_Staging:

TRUNCATE TABLE SanPham_Staging

- Xoá dữ liệu trong bảng BanHang_Source để chuẩn bị cho lần cập nhật tiếp theo:

TRUNCATE TABLE SanPham_Source

Quá trình cập nhật dữ liệu vào kho được thực hiện theo định kỳ bằng cách lập lịch trong hệ thống.

4.4.2 Tạo khối

Sau khi xác định được các khối cần tạo để phục vụ cho mục đích hỗ trợ ra quyết định. Chúng ta sẽ tiến hành việc xây dựng khối. Các khối được tạo tuỳ thuộc vào yêu cầu của người sử dụng dữ liệu. Đối với công việc quản lý thương mại điện tử, một số yêu cầu thông tin để hỗ trợ việc ra quyết định cho các chiến lược thường cần là:

- Số lượng hàng bán ra, số tiền thu được của các sản phẩm, các nhóm sản phẩm theo khu vực khách hàng, theo nhà cung cấp và theo thời gian.

- Số lượng khách đã mua hàng của từng nhà cung cấp theo khu vực và theo thời gian

- Tổng số tiền đã thu được đối với các sản phẩm theo từng nhà cung cấp trong các giai đoạn khác nhau.

- Số tiền đã thanh toán theo các loại hình thanh toán khác nhau đối với mỗi nhà cung cấp hàng theo thời gian.

- Số tiền đã tham gia giao dịch theo khách hàng, nhóm khách hàng (theo khu vực, theo thành phần khách hàng, theo giới tính) trong mỗi giai đoạn khác nhau.

Với mỗi thông tin được yêu cầu, ta cần tạo một khối tương ứng để thực hiện công việc tính toán trước. Dữ liệu tổng hợp sẽ được xử lý và lưu sẵn trong các khối, khi cần ta thực hiện truy vấn và trả lời các yêu cầu được nhanh chóng hơn.

Phần sau đây sẽ minh hoạ các thao tác để tạo một khối hoàn chỉnh và hiển thị dữ liệu của khối. Khối được chọn đại diện mô tả cho thao tác tạo khối là khối phân tích "Số loại sản phẩm, số lượng bán ra, số tiền thu được và giá trị trung bình theo loại sản phẩm, theo khu vực, theo nhà cung cấp và theo thời gian", ta đặt tên khối cho này là Ban_Hang. Khối Ban_Hang có thể được dùng để trả lời cho các câu hỏi có dạng như: "Siêu thị Intimex đã bán được bao nhiêu sản phẩm và số lượng của từng loại cụ thể cho các khách hàng tại địa bàn Hà Nội trong quý 1 năm 2003?" hay "Trong mỗi quý của năm 2004, mỗi nhà cung cấp đã bán được bao nhiêu sản phẩm ở mỗi tỉnh, con số cụ thể cho từng loại sản

Để tạo khối và hiển thị dữ liệu cho khối, ta sử dụng công cụ Analysis Manager của hệ quản trị CSDL SQL, các thao tác cơ bản trên màn hình Analysis Manager như sau [8]:

(1). Đăng ký một Analysis Server

(2). Tạo một Database: tạo database để lưu chứa các khối, chẳng hạn DW_TMDT

(3). Tạo một khối:

- Mở rộng CSDL muốn tạo khối ( mở rộng DW_TMDT)

- Nhấp chuột phải vào Cubes, chọn New Cube, sau đó nhấp chuột vào Editor.

- Trong hộp thoại Choose a fact table, chọn bảng dùng làm bảng thực cho khối. Ta chọn, BANHANG_ FACT. Các cột của bảng sẽ xuất hiện. Nhấn OK

- Cube Editor xuất hiện, bảng thực sẽ nằm trong tab Schema.

* Tạo các chiều cho khối

Nhấp chuột phải vào thư mục Dimension:

- Chọn Existing Dimension: chọn các Dimension chia sẽ đã có (trong Shared Dimension ).

- Hoặc chọn New Dimension: định nghĩa những Dimension mới cho khối.

Tạo chiều mới cho khối:

- Nhấp chuột phải vào thư mục Shared Dimension, chọn New Dimension, sau đó nhấp chuột vào Editor.

- Trong hộp thoại Choose A Dimension Table, chọn bảng dùng làm chiều cho Dimension đó.

- Có thể thêm nhiều bảng vào Dimension bằng cách sử dụng hộp thoại Select Table.

- Sau khi chọn hoặc định nghĩa một dimension, bảng dimension của nó sẽ xuất hiện trong tab Schema của Cube Editor, với kết nối giữa bảng dimension và

bảng thực được biểu diễn bởi một đường nối. Một bảng dimension có thể kết nối với một bảng dimension khác để hình thành một sơ đồ liên kết.

Tạo các cấp độ trong Dimension

Cách đơn giản nhất là: Tạo cấp độ cao nhất và chung nhất trước, sau đó tạo các cấp độ ở các cấp thấp hơn và chi tiết hơn; nếu không một hộp thoại sẽ xuất hiện mỗi khi thêm một cấp độ mới. Đối với mỗi cấp độ muốn tạo:

+ Trong menu Insert, nhấp chuột vào Level

+ Trong hộp thoại Select Level, chọn cột mà cấp độ dựa vào, sau đó nhấp chuột vào OK. Các cấp độ sẽ xuất hiện trong cây phân cấp.

Với khối Ban_Hang, ta cần tạo các chiều theo SANPHAM, KHACHHANG, THOIGIAN, NHACUNGCAP. Với một bảng chiều có thể có nhiều sự phân cấp (nhiều Dimensions ) khác nhau. Ví dụ, với bảng chiều KHACHHANG, ta có thể thống kê theo khu vực khách hàng (quốc gia, tỉnh, quận, huyện), thành phần (cán bộ, công nhân, học sinh, sinh viên), độ tuổi (thanh niên, người cao tuổi, trung niên) hay theo giới tính (nam, nữ),...

- Trong cây Cube Editor, nhấp chuột phải vào Measure, chọn New Measure. Sử dụng các cột trong bảng thực như là các phép đo.

- Mở rộng thanh thuộc tính Properties, trong giá trị Source Column, gõ vào biểu thức chứa các cột. Chọn Function tương ứng cho biểu thức khi tổng hợp.

- Ghi lại phép đo đã tạo.

Trong khối này ta cần thực hiện một số phép đo là số sản phẩm (So SP), số lượng bán ra (So Luong), số tiền thu được (Thanh Tien) và một thành viên được tính toán là giá trị trung bình thu được trên mỗi sản phẩm (Gia_tri_TB) theo các chiều, do đó, phép đo của khối sẽ dựa trên trường MaSP, trường Soluong và trường Thanhtien của bảng BANHANG_FACT.

- Hàm thực hiện đối với phép đo So SP là hàm Distinct count trên trường MaSP

- Hàm thực hiện đối với phép đo So Luong là hàm Sum trên trường Soluong

- Hàm thực hiện đối với phép đo Thanh Tien là hàm Sum trên trường Thanhtien

- Thành viên được tính toán (Gia_tri_TB) sẽ được tính theo CT :

Gia_tri_TB = Thanh Tien / So Luong

Phép đo Gia_tri_TB được thực hiện bằng cách nhấn phải chuột vào Calculated Members, sau đó nhập công thức tính toán và ghi lại tên cho phép đo.

Hình 4.4 Các phép đo của khối

Sau khi hoàn tất mọi thao tác, cần ghi lại khối với tên mới đặt cho khối. - Để thiết kế các thống kê cho khối, trong menu Tools, nhấp chuột vào Design Storage. Wizard thiết kế lưu trữ xuất hiện sẽ giúp thực hiện các thống kê.

- Cần xử lý khối trước khi người sử dụng cuối có thể xem được dữ liệu của nó. Để thực hiện xử lý khối, trong menu Tools, nhấp chuột vào Process Cube...Tuỳ thuộc vào kích thước dữ liệu, việc xử lý khối có thể mất thời gian khá lâu.

Với khối Ban_Hang, xử lý, tính toán khoảng hơn 1.000.000 bản ghi trên máy Pentium IV, tốc độ 2.4 MHz, RAM 128 MB thì thời gian để tải dữ liệu và xử lý khối tính từ khi bắt đầu cho tới khi kết thúc là 1 phút 50 giây.

Hình 4.5 Tiến trình xử lý khối Ban_Hang

Khi khối đã được xử lý xong, ta có thể xem dữ liệu của khối bằng cách nhấp chuột vào mục Data bên dưới cửa sổ thiết kế. Muốn thay đổi góc nhìn theo một chiều dữ liệu nào, chỉ cần kéo chiều đó vào vùng tên cột hoặc dòng bên dưới. Thứ tự của chiều ảnh hưởng đến cách hiển thị kết quả. Muốn bớt đi một chiều có thể kéo chiều đó từ vùng kết quả bên dưới lên vùng phía trên. Với một

Một phần của tài liệu Xử lý phân tích trực tuyến OLAP và ứng dụng trong khai thác kho dữ liệu (Trang 82)