4.2.1 Tiến trình trợ giúp quyết định dựa vào dữ liệu
Để ứng dụng OLAP, chúng ta cần xây dựng một mô hình phục vụ cho phân tích OLAP dựa trên tình huống của bài toán, các vấn đề và các mục tiêu đã xem xét. Đó chính là quá trình xác định các khối định tổ chức, định nghĩa cấu trúc các chiều và định nghĩa các công thức/ luật cần thiết cho tính toán. Trên cơ sở mô hình OLAP, CSDL OLAP đã được thiết lập, người khai thác hệ thống sẽ uốn nắn việc tìm kiếm thông tin của mình bằng cách liên tục đặt ra những yêu cầu truy vấn, thực hiện rồi nhận xét kết quả nhằm tìm hiểu dần những thông tin tiềm ẩn của dữ liệu nguồn (thu thập những vấn đề quan tâm), để tiến tới chỗ có đủ cơ sở nhận định, từ đó đưa ra những quyết định đúng đắn, mang tính chiến lược.
Tiến trình trợ giúp quyết định dựa vào dữ liệu cho bài toán cụ thể có thể được minh hoạ như sơ đồ sau [12]:
Hình 4.2 Tiến trình trợ giúp quyết định dựa vào dữ liệu
4.2.2 Xây dựng các khối OLAP 4.2.2.1 Khối (cube) 4.2.2.1 Khối (cube)
Đối tượng chính của OLAP là khối, một sự biểu diễn đa chiều của dữ liệu chi tiết và tổng thể. Khối là phần tử chính trong xử lý phân tích trực tuyến, cung cấp cơ chế truy vấn dữ liệu với thời gian trả lời nhanh và không phụ thuộc vào số lượng dữ liệu trong khối hoặc sự phức tạp của câu truy vấn.
Công việc tạo một khối gồm ba bước sau: (1). Xác định các khối
(2). Thiết kế các khối kết hợp (các thành phần dữ liệu được tính toán trước)
1. Xác định yêu cầu bài toán
1.1 Xác định các vấn đề gặp phải 1.2 Xác định các mục tiêu cần đạt đến
2. Xây dựng mô hình OLAP cho bài toán
2.1 Xác định các khối dữ liệu cơ sở
2.2 Định nghĩa cấu trúc các chiều 2.3 Định nghĩa các công thức/ luật
cần thiết cho tính toán
3. Phân tích dữ liệu - Ra quyết định
3.1 Đưa ra yêu cầu truy vấn
3.2 Nhận xét kết quả truy vấn
(3). Xử lý khối
* Xác định các khối
Một khối bao gồm: một bảng sự kiện, một hoặc nhiều bảng chiều, các đơn vị đo và các phân hoạch. Việc xác định các khối dựa trên yêu cầu phân tích của người sử dụng.
Ví dụ, kho dữ liệu thương mại điện tử có thể tạo lập nhiều khối khác nhau:
+ Khối thống kê số lượng hàng bán theo khu vực, theo thời gian.
+ Khối thống kê số lượng hàng bán theo sản phẩm của từng nhà cung cấp, theo thời gian.
+ Khối thống kê số lượt phòng đã đặt, số tiền đã thu được theo từng loại phòng của từng khách sạn theo thời gian
+ Khối thống kê số ghế đã đặt theo từng hãng bay, theo thời gian ...
Để xác định một khối, ta chọn một bảng sự kiện và các đơn vị đo lường đồng nhất (các cột theo sự quan tâm của người dùng khối) trong bảng sự kiện. Sau đó, chọn các chiều, mỗi chiều gồm một hay nhiều bảng liên quan khác. Các chiều cung cấp sự mô tả rõ ràng các đơn vị đo lường được chỉ ra bởi người dùng khối.
Ví dụ, khối phân tích, thống kê lượng hàng bán, số tiền thu được theo từng sản phẩm của từng nhà cung cấp theo thời gian bao gồm các cột chứa các đơn vị đo lường số lượng, thành tiền từ bảng BANHANG_FACT và các chiều nhà cung cấp, sản phẩm, thời gian. Khối này cho phép ngưòi dùng phân tích số lượng bán đựơc và tổng số tiền thu được thành các nhóm khác nhau theo sản phẩm, theo nhà cung cấp và theo thời gian.
Mỗi chiều có thể chứa các cấp độ để chỉ sự phân chia rõ ràng của người dùng. Mỗi cấp độ con trong chiều thường chi tiết hơn mức cha nó.
Ví dụ, chiều thời gian là một chiều phân cấp chuẩn với các cấp độ năm, quý, tháng, tuần, ngày. Chiều sản phẩm cũng có thể chia thành các cấp độ: loại
Cấp độ chiều là một công cụ mạnh để phân tích dữ liệu. Chúng cho phép người sử dụng có thể đưa ra yêu cầu về thông tin ở mức độ khái quát cao, sau đó có thể mở rộng để tìm hiểu chi tiết hơn.
* Tạo khối
Như vậy, để tạo một khối, chúng ta cần thực hiện các công việc sau: 1. Chọn bảng sự kiện cho khối cần tạo
2. Tạo các đơn vị đo (measures): Chọn các cột (có kiểu dữ liệu là kiểu số) trong bảng sự kiện để làm các đơn vị đo, đồng thời gán công thức tính toán cho từng đơn vị đo (sum, average, max, min,...)
3. Tạo lập các chiều dữ liệu: mỗi chiều tương ứng với một bảng (bảng chiều) trong sơ đồ hình sao mà bảng sự kiện ở trên là bảng trung tâm. Trong mỗi bảng chiều chọn các cột làm mức (level) của chiều đó. Chúng ta cần chọn các mức sao cho có thể đáp ứng được việc tham chiếu cuốn lên và khoan sâu theo các mức khác nhau.
4. Xử lý khối
* Xử lý khối
Quá trình xử lý khối bao gồm viêc đọc dữ liệu các bảng chiều để xác định cấp độ dữ liệu hiện tại, đọc các bảng sự kiện, tính toán các dữ liệu đặc biệt và lưu trữ dữ liệu trong khối đa chiều.
Xử lý khối là thuật ngữ dùng để chỉ sự tải trọn vẹn dữ liệu của khối. Tất cả các chiều, dữ liệu bảng sự kiện được đọc và tất cả các khối liên kết đặc biệt được tính toán.
Sau khi được xử lý, khối sẽ được cung cấp cho yêu cầu của người sử dụng.
4.2.2.2 Chiều (dimension)
Để xác định một chiều, chọn một hoặc nhiều cột trong các bảng chiều. Nếu ta chọn các cột phức tạp thì tất cả các cột này cần phải có quan hệ với nhau, chẳng hạn giá trị của chúng có thể được tổ chức theo hệ thống phân cấp đơn. Để xác định hệ thống phân cấp, sắp xếp các cột từ chung nhất tới cụ thể nhất.
Mỗi cột trong chiều góp phần vào một cấp độ cho chiều. Các cấp độ được sắp đặt theo nét riêng biệt và được tổ chức trong hệ thống cấp bậc hợp logic cho việc đào sâu (drill down). Ví dụ, chiều thời gian miêu tả ở trên cho phép người dùng khối đào sâu từ năm tới quý, từ quý tới tháng và từ tháng tới ngày.
* Chiều có phân cấp
Phân cấp làm cột sống của việc gộp dữ liệu hay nói một cách khác là dựa vào các phân cấp mà việc gộp dữ liệu mới có thể thực hiện được. Phần lớn các chiều đều có một cấu trúc đa mức hay phân cấp.
Chẳng hạn, nếu cần đưa ra những quyết định về việc bán hàng gì vào thời gian nào,... để nâng cao hiệu quả của việc kinh doanh thì chúng ta cần quan sát và phân tích dữ liệu về việc bán hàng được gộp theo nhà cung cấp, theo sản phẩm và theo thời gian, tức là chúng ta đã thực hiện một phép gộp. Khi cần đưa ra các quyết định khác thì chúng ta cần thực hiện những phép gộp tương ứng khác. Nghĩa là có nhiều tiến trình gộp. Vậy nên, các tiến trình gộp này phải được thực hiện một cách dễ dàng linh hoạt để có thể hỗ trợ những phân tích không hoạch định trước. Điều này có thể được giải quyết trên cơ sở có sự trợ giúp của những phân cấp rộng và sâu.
4.2.2.3 Các đơn vị đo lƣờng (measure)
Các trường đơn vị đo là các trường số liệu đặc thù của các bảng sự kiện. Đó chính là số liệu tổng hợp hoặc chi tiết theo các chiều khác nhau. Trong các khối phân tích, thống kê về quản lý bán hàng, có các trường sau đây thường được sử dụng làm đơn vị đo:
Bảng sự kiện Trƣờng đơn vị đo
BanHang_Fact
Đơn gia Thành Tiền Số lượng Giá trị hoá đơn
4.2.2.4 Các phân hoạch (partition)
Các phân hoạch đóng vai trò quan trọng trong các bảng khai thác khi khối lượng dữ liệu lớn. Nó cho phép phân chia dữ liệu theo một số tiêu thức nào đó.
Trong các khối dữ liệu của hệ thống thương mại điện tử, chúng ta có thể thiết kế các partition dựa vào chiều thời gian. Cụ thể, một khối có thể chứa trong mỗi phân hoạch dữ liệu của mỗi năm trước đó và các phân hoạch cho mỗi quý của năm hiện tại. Cuối năm các bảng phân hoạch của bốn quý có thể được hợp nhất trong một phân hoạch đơn cho năm đó.
4.2.2.5 Khối ảo
Có thể tạo liên kết các khối trong một khối ảo, tương tự như các bảng có thể liên kết tạo thành các khung nhìn trong một cơ sở dữ liệu quan hệ. Một khối ảo cung cấp sự truy cập tới dữ liệu trong các khối kết hợp không đòi hỏi xây dựng một khối mới, trong khi nó cho phép ta duy trì thiết kế tốt nhất cho mỗi khối riêng biệt.
Chúng ta có thể tạo ra một khối mới từ các khối đã có bằng cách sử dụng các đơn vị đo và các chiều của các khối đã có mà không cần tốn kém không gian nhớ.
Các bước để tạo một khối ảo:
1. Chọn các khối cần tạo khối ảo từ nó 2. Chọn các đơn vị đo cho khối ảo 3. Chọn các chiều cho khối ảo 4. Xử lý khối
4.3 PHÂN TÍCH VÀ HIỂN THỊ DỮ LIỆU 4.3.1 Hiển thị dữ liệu của khối 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