Mục lục
Lời cảm ơn. . 2
Mục lục . 3
Bảng các kí hiệu, chữ viết tắt . 6
Bảng danh mục các bảng biểu 7
Bảng danh mục các hình vẽ . . 8
Tóm tắt nội dung luận văn . . 10
Mở đầu . . 11
Cơ sở lý thuyết . 15
Chương 1 Công nghệ OLAP . 15
1.1 Giới thiệu về Data Warehouse . 15
1.1.1 Định nghĩa . 15
1.1.2 Ý nghĩa của Data Warehouse . 16
1.1.3 Đặc điểm của Data Warehouse . 16
1.1.4 Cấu trúc của Data Warehouse . . 19
1.2 Tổng quan về OLAP . . 19
1.2.1 Giới thiệu 19
1.2.2 Đặc điểm của OLAP: 21
1.3 Các mô hình OLAP 21
1.3.1 MOLAP (Multidimensional OLAP) . 21
1.3.2 ROLAP (Relational OLAP) . 22
1.3.3 HOLAP (Hybrid OLAP) 25
1.3.4 So sánh các mô hình . 26
Chương 2 OLAP trong MS SQL Server Analysis Service (SSAS) 27
2.1. Kiến trúc các thành phần OLAP trong SSAS . . 27
2.1.1 Cube . . 27
2.1.2 Dimension . 29
2.1.3 Measure . 31
2.1.4 Fact table (Fact) . . 31
2.1.5 Slice . . 32
2.1.6 Partition . . 33
2.1.7 Role . 33
2.1.8 Schedule (Lập lịch) . 34
2.2. Quy trình thiết kế các đối tượng trong SSAS . 35
2.2.1 Sơ lược về quy trình xây dựng Data Warehouse 35
2.2.1.1 Quy trình chung 35
2.2.1.2 Công cụ thực hiện: 37
2.2.2 Quy trình tạo Cube: 37
Chương 3 Component Pivot Table trong Excel 43
3.1. Pivot Table 43
3.1.1 Giới thiệu 43
3.1.2 Cách sử dụng 43
3.2. PivotChart . 46
3.3. Giới thiệu một số công cụ hỗ trợ OLAP tương tự như Pivot Table của Excel . 47
3.3.1 RadarCube OLAP 47
3.3.2 Data Dynamics Analysis . 48
3.3.3 ComponentOne OLAP for WinForm . 49
3.3.4 Devexpress ASPxPivotGrid . 49
3.4 So sánh Pivot Table với các công cụ khác: . 50
Ưu điểm: 50
Nhược điểm: . 50
Kết luận: 51
Chương 4 Các thư viện lập trình liên quan đến SSAS . 52
4.1. AMO . 52
4.2. ADOMD.NET . 53
4.3. SMO 53
4.4. MDX . 55
4.4.1 Cấu trúc chung 55
4.4.2 Ví dụ mẫu 55
4.4.3 Lưu ý . 56
Chương 5 Xây dựng công cụ Web hỗ trợ phân tích dữ liệu cho các ứng dụng OLTP58
5.1. Phân tích, thiết kế 58
5.1.1 Phân tích . 58
5.1.1.1 Quy trình xử lý nghiệp vụ: . 58
5.1.1.2 Yêu cầu chức năng: 60
5.1.1.3 Mô hình quan niệm dữ liệu: 66
5.1.2 Thiết kế . 72
5.1.2.1 Dữ liệu: . 72
5.1.2.2 Kiến trúc module: . 79
5.1.2.3 Hệ thống giao diện: 80
5.2. Cài đặt, lập trình . . 88
Đánh giá, bàn luận về kết quả . 89
Kết luận - Hướng phát triển . 91
Các kết quả đã đạt được . 91
1. Về lý thuyết 91
2. Về thực nghiệm 91
Danh mục tài liệu tham khảo 93
Tóm tắt nội dung luận văn
¾ Tìm hiểu tổng quan về công nghệ OLAP
¾ Tìm hiểu OLAP trong MS SQL Server Analysis Service (SSAS) ¾ Tìm hiểu về component Pivot Table trong Excel
ã Pivot Table
ã PivotChart
¾ Tìm hiểu các thư viện lập trình liên quan đến SSAS: MDX, AMO, SMO,
ADOMD.NET, .
¾ Xây dựng công cụ hỗ trợ phân tích dữ liệu cho các ứng dụng OLTP
94 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4728 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu công nghệ OLAP và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
truy vấn này trong hệ thống OLTP sẽ không thể cho kết quả
hoặc sẽ mất rất nhiều thời gian.
1.2.2 Đặc điểm của OLAP:
¾ Được biết đến như là một phần của kho dữ liệu
¾ Cung cấp các báo cáo, phân tích tiền tính toán, các đồ thị, biểu đồ
¾ Cho phép phân tích trực tuyến dữ liệu
¾ Thăm dò sự tương tác dữ liệu
¾ Cung cấp các giao diện đa dạng cho người dùng
¾ Cung cấp khả năng phân tích dữ liệu phức tạp bằng phương thức đơn giản
1.3 Các mô hình OLAP
1.3.1 MOLAP (Multidimensional OLAP)
¾ Mô hình MOLAP lưu trữ dữ liệu cơ sở (là dữ liệu từ các bảng của kho dữ liệu)
và thông tin tổng hợp (là các độ đo được tính toán từ các bảng) trong các khối
¾
¾
¾
1
¾
Dữ liệu đ
Dữ liệu t
nhật lại n
MOLAP
Ví dụ: tổ
.3.2 RO
Mô hình
trong các
ược tìm th
rong MOL
hững dữ l
thích hợ
ng hợp do
LAP (R
OLAP qu
bảng qua
Hình 8
ấy tại điểm
AP cần ph
iệu mới tro
p cho các
anh thu củ
elationa
an hệ (RO
n hệ
22
: Mô hình d
giao của
ải được p
ng Data W
truy vấn t
a từng chi
l OLAP
LAP) lưu
ữ liệu MO
các chiều
rocess sau
arehouse
ổng hợp d
nhánh tron
)
trữ dữ liệ
LAP
một thời g
.
ữ liệu the
g vòng 2 n
u cơ sở và
ian nhất đ
o thời gia
ăm trở lại
thông tin
ịnh để cập
n dài.
.
tổng hợp
¾
¾
Dữ liệu đ
Có 2 kiể
• L
ch
ược tìm th
u mô hình
ược đồ hìn
iều
Hình 9
ấy tại điểm
dữ liệu:
h sao (sta
23
: Mô hình
giao của
r): mỗi mộ
dữ liệu RO
1 cột và 1
t chiều ch
LAP
một hàng
ỉ được xâ
y dựng từ một bảng
24
Hình 10: Lược đồ hình sao
• Lược đồ hình bông tuyết (snowflake): mỗi chiều được xây dựng từ nhiều
bảng chiều
Hình 11: Lược đồ hình bông tuyết
¾ ROLAP thích hợp cho các truy vấn dữ liệu theo thời gian thực (xảy ra
thường xuyên và đòi hỏi độ chính xác tức thời).
Ví dụ: xem thông tin chứng khoán
25
1.3.3 HOLAP (Hybrid OLAP)
¾ Là mô hình OLAP lai (HOLAP) là sự kết hợp giữa MOLAP và ROLAP.
Hình 12: Mô hình dữ liệu HOLAP
¾ HOLAP là mô hình lai giữa MOLAP và HOLAP, kết hợp những ưu điểm và
loại bỏ những khuyết điểm của 2 mô hình trên nhằm tạo ra một mô hình tối ưu
¾ Lợi ích của việc lưu trữ trong cấu trúc HOLAP là:
• Lưu dữ liệu tổng hợp trong Cube (theo MOLAP) để tăng tốc độ xử lý các
truy vấn phức tạp
• Lưu trữ dữ liệu cơ sở trong các bảng quan hệ (theo ROLAP) nhằm tiết
kiệm không gian lưu trữ
Ví dụ: Trong một công ty chứng khoán:
Dữ liệu về thông tin nhân viên, doanh thu của 2 năm trở về trước
=> lưu trong cube
Dữ liệu về thông tin chứng khoán, giá cổ phiếu hằng ngày
=> lưu trong bảng quan hệ
Ö Tối ưu hóa được vấn đề lưu trữ và xử lý của hệ thống.
26
1.3.4 So sánh các mô hình
MOLAP ROLAP HOLAP
Số chiều >2 2 >2
Lưu trữ dữ liệu cơ sở Khối Bảng quan hệ Bảng quan hệ
Lưu trữ thông tin tổng hợp Khối Bảng quan hệ Khối
Hiệu suất thực hiện truy vấn Nhanh nhất Chậm nhất Nhanh
Tiêu thụ không gian lưu trữ Nhiều Thấp Trung bình
Chi phí bảo trì Cao Thấp Trung bình
Bảng 1: So sánh các mô hình OLAP
Î KẾT LUẬN:
Chọn mô hình nào cần dựa vào hiệu suất, mục đích khai thác, và lượng dữ
liệu,… (ví dụ MOLAP: thích hợp với data marts <50 GB, ROLAP: lượng dữ liệu
có thể lớn hơn)
27
Chương 2 OLAP trong MS SQL Server Analysis
Service (SSAS)
Giới thiệu sơ lược về SSAS
¾ Từ trước đến nay, SQL Server được biết đến với vai trò là một hệ quản trị cơ sở
dữ liệu có trách nhiệm hỗ trợ quản lí, lưu trữ dữ liệu với Database Engine. Tuy
nhiên, từ phiên bản SQL Server 2005 đến SQL Server 2008 và mới nhất là SQL
Server 2008 R2, thì bộ SQL Server đã được tích hợp nhiều gói dịch vụ hỗ trợ
việc tích hợp và khai thác khả năng tiềm tàng của một cơ sở dữ liệu như SQL
Server Integrating Services, SQL Server Analysis Services và SQL Server
Reporting Services.
¾ Analysis Services là một dịch vụ hỗ trợ mạnh mẽ việc phân tích, khai thác thông
tin tiềm tàng bên trong của một hệ cơ sở dữ liệu.
¾ Analysis Services là công cụ dễ sử dụng, tích hợp và linh động giúp định nghĩa
các chiều, xây dựng các khối dữ liệu đa chiều và cung cấp các chương trình ứng
dụng truy xuất tới các khối này.
2.1. Kiến trúc các thành phần OLAP trong SSAS
2.1.1 Cube
¾ Cube (Khối) là phần tử chính trong xử lý phân tích trực tuyến, là tập con
(subset) dữ liệu từ kho dữ liệu, được tổ chức và tổng hợp trong các cấu trúc đa
chiều.
¾ Cube dùng các dimensions, fact table và các measure để mô tả dữ liệu trong
cube.
Ví dụ : một cube 3 chiều
¾
¾
Một cub
• N
• V
• T
Một cub
• L
• M
• K
• K
V
e có thể có
ếu có nhiề
ề mặt lý th
hường thì
e bao gồm
à một liên
ột ô có thể
hối thưa (s
hối dày đặ
í dụ về ô rỗ
Hình
nhiều chi
u hơn 3 ch
uyết thì số
số chiều là
nhiều ô dữ
kết giữa cá
là rỗng (k
parsecube
c (densecu
ng:
28
13: Ví dụ v
ều
iều sẽ đượ
chiều là k
từ 4 đến 1
liệu
c giá trị củ
hông có d
): có nhiều
be): có ít ô
ề Khối (Cu
c gọi là ‘si
hông hạn
2
a chiều
ữ liệu cho
ô rỗng
rỗng
be)
êu khối’ (
chế
liên kết nà
”hypercub
y)
e”)
29
Hình 14: Ví dụ về ô rỗng trong khối
¾ Cube biễu diễn dữ liệu dưới dạng tổng hợp nhiều hơn là chi tiết như khi dùng
bảng thông thường. Do đó, cube cho người dùng thấy được cái nhìn tóm tắt,
tổng hợp của toàn bộ dữ liệu.
¾ Một cube có thể chứa toàn bộ hoặc một phần của dữ liệu nguồn (Data source
view). Vì vậy các cube chỉ được lưu trữ và truy cập qua giới hạn riêng của nó.
Dữ liệu được chuyển từ nguồn đến các cube qua công cụ ETL (Extract,
Transform, and Load).
2.1.2 Dimension
¾ Các chiều là cách mô tả chủng loại mà theo đó các dữ liệu trong Cube được
phân chia để phân tích
¾ Mỗi chiều có thể được xây dựng trên một hoặc nhiều bảng chiều (dimension
table) nhằm mô tả cho chiều đó
¾ Các chiều được ánh xạ từ thông tin của các bảng chiều trong kho dữ liệu vào
các mức phân cấp, ví dụ như chiều Địa lý thì gồm các mức như Lục địa, Quốc
gia, Tỉnh-Thành phố. Trong ví dụ mô hình kinh doanh ở trên, chiều Thời gian có
thể được mô tả bởi các thuộc tính như Năm, Quý, Tháng và Ngày.
¾
¾
ph
m
th
sả
kh
ph
kh
củ
Các chiề
nhằm xâ
phân tích
Chiều có
Phân cấp
ân cấp mà
ột cấu trúc
Ví dụ: N
ì chúng ta
n phẩm, tứ
ác thì chú
Như vậy
ải được th
ông hoạch
a những p
u được tạ
y dựng cá
luôn ổn đ
Hình
sự phân c
là cột sốn
việc gộp
đa mức h
ếu chúng
cần quan
c là chúng
ng ta cần t
có thể có
ực hiện m
định trướ
hân cấp rộ
o một các
c Cube dễ
ịnh.
15: Ví dụ v
ấp :
g của việc
dữ liệu mớ
ay phân cấ
ta làm nhữ
sát ở nhữn
ta đã thự
hực hiện n
quá nhiều
ột cách d
c. Điều n
ng và sâu.
30
h độc lập
dàng và đ
ề các Dime
gộp dữ li
i có thể th
p.
ng quyết
g dữ liệu v
c hiện một
hững phép
tiến trình
ễ dàng, lin
ày có thể đ
và có thể
ể chắc chắ
nsion (Ch
ệu hay nói
ực hiện đư
định về giá
ề doanh th
cách gộp.
gộp tươn
gộp. Thế
h hoạt để
ược giải q
chia sẻ gi
n rằng thô
iều) khác n
một cách
ợc. Phần
sản phẩm
u sản phẩ
Khi cần là
g ứng khác
nên các tiế
có thể hỗ
uyết trên
ữa các OL
ng tin tổn
hau
khác là dự
lớn các ch
để tối đa
m được gộ
m những q
.
n trình gộ
trợ những
cơ sở có s
AP Cube
g hợp cho
a vào các
iều đều có
doanh thu
p theo giá
uyết định
p này cần
phân tích
ự trợ giúp
2
¾
¾
2
¾
¾
¾
.1.3 Me
Các đơn
những g
hoặc số l
Là đơn v
.1.4 Fac
Fact là
dimensio
Một fact
đồng thờ
Fact đượ
asure
vị đo của
iá trị số từ
ượng bán.
ị đo để đán
t table (
bảng mô
n đã được
gồm các
i chứa các
c lưu tại m
khối là các
bảng Fact
h giá, phâ
Fact)
tả sự kiện
xây dựng
trường ch
measure c
ột cấp dữ
H
31
cột trong
mà được
n tích dữ l
mà hệ th
sẵn nhằm
ứa khoá c
ủa cube. M
liệu thô nà
ình 16: F
bảng Fact
tổng hợp
iệu.
ống muố
tổ chức dữ
hính của c
ỗi fact có
o đó
act Table
. Các đơn
phân tích n
n phân tíc
liệu một c
ác dimen
các measu
vị đo lườn
hư định g
h, kết hợ
ách có hệ
sion mà nó
re khác nh
g xác định
iá, trị giá,
p với các
thống.
kết hợp,
au.
32
2.1.5 Slice
¾ Slice là một “lát cắt”, tương ứng một giá trị duy nhất cho chiều “được chiếu”
với các giá trị thành viên của các chiều khác.
Hình 17: Slice
33
2.1.6 Partition
¾ Tất cả các khối đều có tối thiểu một phân hoạch (Partition) để chứa dữ liệu của
nó. Một partition đơn được tự động tạo ra khi khối được định nghĩa.
¾ Khi ta tạo một partition mới cho một khối, partition mới này được thêm vào
trong tập hợp các partition đã tồn tại đối với khối.
¾ Khối phản ánh dữ liệu đã được kết nối có trong tất cả các partition của nó. Một
bảng partition của khối là vô hình đối với người dùng.
¾ Các partition tiêu biểu cho một công cụ mạnh, mềm dẻo cho việc quản trị các
khối OLAP, đặc biệt các khối lớn.
Ví dụ: Một khối chứa thông tin thương mại có thể chứa trong một hoặc nhiều
partition cho dữ liệu của những năm trước và các partition cho mỗi quý của năm
hiện tại. Cuối năm các bảng partition của bốn quý có thể được hợp nhất trong
một partition đơn cho năm đó. Các bảng partition có thể được lưu trữ với các sự
lựa chọn kết hợp khác nhau theo phương thức lưu trữ, định vị dữ liệu nguồn và
thiết kế kết hợp. Tính mềm dẻo này cho phép ta thiết kế các chiến lược lưu trữ
khối thích hợp với các yêu cầu của ta.
2.1.7 Role
¾ Bảo mật trong Analysis Services được tích hợp sẵn và dựa trên bảo mật của
Microsoft Windows. Để Analysis Services được bảo mật, ta tạo các role trong
database OLAP. Mỗi role có thế chứa một hoặc nhiều user (group) được tạo
trong hệ điều hành. Mỗi role được tạo ra sẽ liên kết với các cube trong database
OLAP. Nhờ vậy, ta có thể quản lý sự bảo mật của cube bằng cách hạn chế truy
cập metadata (các member trong dimemsion) cũng như truy cập data (các giá trị
lưu trữ trong cube).
¾ Analysis Services có một role cố định được tạo sẵn, bao gồm các thành viên của
group Administrators trên máy chủ server, được gọi là server role.
¾ Để có thể thực thi mọi tác vụ trong hệ thống Analysis Services, user đang dùng
34
phải là thành viên của group Administrators. Tất cả thành viên trong group này
được toàn quyền trên các cube và các database của server.
¾ Trong thực tế, người ta tạo ra các role trên mỗi database, gọi là database role,
cho phép một user chỉ được quyền quản trị trên một database.
¾ Ngoài ra, ta còn có thể tạo các role ở cấp độ cube (truy cập toàn bộ một số cube
quy định) hoặc ở cấp độ dimension (truy cập data ở một số dimension của một
số cube nhất định)
2.1.8 Schedule (Lập lịch)
¾ Tại một thời điểm nào đó, hệ thống OLAP server cần phải process lại để update
những thay đổi từ phía Database Server, đảm bảo cho Client có thể truy xuất
được những dữ liệu mới nhất và đầy đủ của hệ thống.
¾ Có 2 cách process: thủ công và tự động
• Thủ công: có thể tiến hành process thủ công khi cần thiết ( có sự thay đổi
dữ liệu hay cấu trúc hệ thống).
• Tự động: có thể lập lịch cho hệ thống tự động process sau một khoảng
thời gian quy định trước.
35
2.2. Quy trình thiết kế các đối tượng trong SSAS
Hình 18: Các đối tượng trong SSAS
2.2.1 Sơ lược về quy trình xây dựng Data Warehouse
2.2.1.1 Quy trình chung
¾ Nhận dạng dữ liệu nguồn (Identify the data source):
• Một trong những bước đầu tiên để xây dựng Data Warehouse là phải
nhận biết các nguồn dữ liệu. Ta cần phải tính toán và xem xét những dữ
liệu nào cần thiết để đưa vào Data Warehouse.
• Trong một Data Warehouse, có hai loại nguồn dữ liệu cần xem xét, đó là
nguồn dữ liệu bên trong (internal data source) và bên ngoài (external data
source). Dữ liệu bên trong là những dữ liệu đã có sẵn trong hệ thống hiện
tại. Dữ liệu bên ngoài là những dữ liệu từ nhiều nguồn khác nhau ngoài
hệ thống.
¾ Chọn lọc dữ liệu (Extracting Transactional Data):
36
• Đây là bước chi phối hầu hết thời gian của quy trình, vì chúng ta cần phải
lấy dữ liệu từ nhiều nguồn đã nhận dạng ra để đưa vào kho lưu trữ trung
tâm.
• Do các nguồn dữ liệu xuất phát từ nhiều hệ thống khác nhau nên các hệ
quản trị CSDL của chúng cũng khác nhau, chẳng hạn như MS Access,
MS SQL Server, Oracle, Sybase, hoặc cũng có thể là flat files,
spreadsheets, mail systems và nhiều dạng lưu trữ dữ liệu khác. Vì thế, ta
cần quyết định sẽ sử dụng hệ CSDL nào cho việc tổ chức kho dữ liệu.
¾ Chuyển đổi dữ liệu (Transforming Transactional Data):
• Là quá trình chuyển đổi nhằm đảm bảo tính nhất quản của dữ liệu sau khi
đã được chọn lọc từ nhiều nguồn khác nhau.
• Để có thể chuyển đổi dữ liệu vào Data Warehouse một cách chính xác, ta
cần phải xác định ánh xạ của các trường (field) từ nguồn dữ liệu bên
ngoài đến các trường của data warehouse.
• Sự chuyển đổi này có thể được thực hiện trong quá trình chọn lọc
(extracting) hoặc trong khi dữ liệu được đưa vào data warehouse.
¾ Tải dữ liệu (Loading the Data):
• Khi quá trình chọn lọc, chuyển đổi và làm sạch đã hoàn tất, dữ liệu sẽ
được tải vào data warehouse.
• Việc tải dữ liệu có thể phân thành hai loại: tải toàn bộ dữ liệu đang có
trong CSDL nguồn và tải những dữ liệu có sự thay đổi trong CSDL
nguồn vào data warehouse.
• Dữ liệu trong data warehouse phải luôn được làm tươi, có nghĩa phải cập
nhật những thay đổi của dữ liệu.
• Trong khi cập nhật data warehouse cần phải đảm bảo không có dữ liệu
nào bị mất, đồng thời chi phí cho quá trình duyệt các file đã tồn tại phải
đạt mức thấp nhất.
37
2.2.1.2 Công cụ thực hiện:
¾ Extract-Transform-Load (ETL): điển hình như DTS (Data Transformation
Services) trong SQL Server, Informatica,... Về công cụ ETL dạng Open
source có thể kể đến Talend, Kettle…
¾ Lập lịch: SQL Server Agent dùng để lập lịch cho việc tự động chuyển đổi từ
CSDL nguồn vào data warehouse.
2.2.2 Quy trình tạo Cube:
¾ Công cụ và database mẫu sử dụng:
• Business Intelligence Studio (đi kèm với MS SQL Sever)
• Adventure Work Cycle Sample Database (có thể download tại
)
¾ Để tạo một Cube, trước tiên ta cần phải có những thành phần sau:
DataSource, DataSource View, Dimension, ...
2.2.2.1 Tạo DataSource
Các bước như sau:
1. Trong khung Solution Explorer, phải chuột Data Sources và chọn New Data
Source
2. Tại màn hình Welcome to Data Source Wizard, nhấn Next để chuyển sang
cửa sổ Select how to define the connection
3. Tại cửa sổ Select how to define the connection page, ta có thể định nghĩa
một data source bằng cách tạo mới connection hoặc trên một connection đã
có sẵn. Trong bài hướng dẫn này, ta sẽ định nghĩa một data source bằng cách
tạo mới một connection, kiểm tra checkbox Create a data source based on
an existing or new connection được chọn và nhấn New
38
4. Trong dialog box Connection Manager, ta sẽ định nghĩa giá trị thuộc tính cho
Data Source. Trong danh sách Provider, chọn Native OLE DB\SQL Server
Native Client 10.0
5. Trong Server Name, gõ vào localhost
6. Kiểm tra giá trị Use Windows Authentication được chọn, trong danh sách
Select or enter a database name, ví dụ ở đây ta chọn database Adventure
Works DW2008
7. Nhấn Test Connection để kiếm tra kết nối đến với SQL Server
8. Chọn OK và nhấn Next
9. Tại cửa sổ Impersonation Information, ta sẽ thiết lập Security Credential cho
SSAS để kết nối tới Data Sources, ta chọn Use the Service account, và nhấn
Next.
10. Tại màn hình Completing the wizard, thiết lập tên của Data Source là
Adventure Work DW và chọn Finish.
2.2.2.2 Tạo DataSource View
Các bước như sau:
1. Trong khung Solution Explorer, phải chuột Data Sources Views, và chọn
New Data Source Views
2. Cửa số Welcome to Data Source View Wizard xuất hiện, nhấn Next
3. Dialog Select data source xuất hiện, tại mục Relational Data Sources, chọn
Adventure Work DW mà ta đã tạo như trên rồi chọn Next.
4. Tại Dialog Select Tables and Views, ta sẽ chọn các bảng dữ liệu và views từ
danh sách đối tượng, ta sẽ chọn các đối tượng sau:
DimCustomer (dbo)
DimDate (dbo)
DimGeography (dbo)
DimProduct (dbo)
39
FactInternetSales (dbo)
5. Nhấn nút “>” để thêm các bảng vào danh sách Included Objects
6. Nhấn Next
7. Tại thuộc tính Name, ta thiết lập là Adventure Wordk DW và nhấn Finish
để hoàn tất việc đĩnh nghĩa một data source view. Data Source View
Adventure Work DW sẽ hiển thị tại Data Source View Designer trong
Business Intelligence Development Studio và gồm các thành phần sau:
o Diagram Pane thể hiện mối quan hệ giữa các bảng dữ liệu trực quan
o Tables Pane: các bảng dữ liệu và schema được thể hiện theo tree view
o Diagram Organizer Pane hỗ trợ tạo các subdiagram mà thông qua đó
ta có thể có dc các subsets của data source view
Sau khi hoàn tất bước này, ta sẽ có khung nhìn toàn diện về các bảng dữ liệu
và mối quan hệ của chúng.
2.2.2.3 Tạo Dimension
Các bước như sau:
1. Trong pane Solution Explorer, phải chuột Dimentsions, chọn New
Dimensions.
2. Tại cửa sổ Welcome to Dimension Wizard, chọn Next
3. Tại cửa số Select Creation Method, đảm bảo tùy chọn Use an Existing Table
được chọn, chọn Next.
4. Tại cửa sổ Specify Source Information, đảm bảo data source Adventure
Works DW được chọn.
5. Trong danh sách Main Table, chọn Date
6. Tại trang Select Dimension Attributes, chọn các Attributes sau:
Date Key
40
Full Date Alternate Key
English Month Name
Calendar Quarter
Calendar Year
Calendar Semester
7. Thay đổi Attribute Type của cho thuộc tính Full Date Alternate Key từ
Regular sang Date bằng cách chọn vào Regular và tiến hành thay đổi. Thực
hiện tương tự cho các thuộc tính khác.
English Month Name –> Month
Calendar Quarter –> Quarter
Calendar Year –> Year
Calendar Semester –> Half Year
8. Nhấn Next
9. Tại màn hình Completing the Wizard, trong Preview Pane, ta có thể thấy
dimension Date và các thuộc tính của nó.
10. Nhấn Finish để hoàn tất việc định nghĩa Dimension
11. Tiến hành Save All Project
2.2.2.4 Tạo Cube
Các bước như sau:
1. Trong Solution Explorer Pane, phải chuột Cubes, chọn New Cubes
2. Tại cửa sổ Welcome to the Cube Wizard, chọn Next
3. Tại cửa sổ Select Creation Method, chọn Use existing tables và nhấn Next
4. tại cửa sổ Select Measure Group Tables, đảm bảo Adventure Works DW
data source view được chọn, và nhấn Next.
41
5. Nhấn Suggest để cửa số Suggest Table hiển thị và đề xuất các table cần thiết
để xây dựng các measure group.
6. Nhấn Next
7. tại cửa sổ Select Measure, xem lại InternetSales measure group và deselect
các checkbox cho các giá trị sau
a. Promotion Key
b. Currency Key
c. Sales Territory Key
d. Revision Number
8. Chọn Next
9. tại cửa sổ Selecting Existing Dimensions, chọn Date dimension đã dc định
nghĩa và chọn Next
10. Trong cửa sổ Select New Dimension, chọn các dimension mới để thiết lập,
đảm bảo Customer, Geography và Product được chọn và deselect
InternetSales.
11. Nhấn Next
12. tại cửa sổ Completing the Wizard, thiết lập name của Cube là Analysis
Services Tutorial,
13. Chọn Finish để hoàn tất
14. Tiến hành Save All
Deploy Cube lên server
1. Trong Solution Explorer Pane, phải chuột Analysis Services Tutorial và chọn
Properties.
2. tại Configuration Properties tại pane bên trái, chọn Deployment
3. Chọn OK
4. Phải chuột Analysis Service Tutorial project và chọn Deploy
5. Review lại cửa sổ Output và Deployment Progress – Analysis Service
Tutorial để đảm bảo cube được build không có lỗi khi build
42
6. Như vậy project SSAS đã được deploy lên server
Browsing Cube :
1. Chuyển sang Dimension Designer cho Product Dimension trong Business
Intelligence Studio bằng cách double click vào Product dimension trong
Dimension Node
2. Click Browse để hiển thị cây cấu trúc của Product Key
3. Chuyển sang Cube Designer trong Business Intelligence Development
Studio bằng cách double click vào Analysis Service Tutorial trong cube
node.
4. Chuyển sang Browse tab và nhấn vào biểu tượng reconnect, cửa sổ Browse
tab gồm 2 phần
Left Pane: thể hiện các đối tượng của Analysis Service Tutorial Cube
Right Pane gồm 2 phần: phần trên là Filter Pane, phần dưới là Data
Pane và việc phân tích, thể hiện dữ liệu sẽ được thực hiện tại đây.
43
Chương 3 Component Pivot Table trong Excel
3.1. Pivot Table
3.1.1 Giới thiệu
¾ Pivot Table là một công cụ rất mạnh của Excel trong việc tạo ra các báo cáo
phân tích dữ liệu. Dùng kết hợp 2 công cụ Pivot Table và PivotChart sẽ tạo ra
các báo cáo phân tích số liệu hết sức sinh động và hiệu quả.
Hình 19: Pivot Table
3.1.2 Cách sử dụng
¾ Tạo một Pivot Table
Để tạo một Pivot Table sử dụng PivotTable Wizard bạn cần cho Excel biết tổng hợp
trường nào theo cột và trường nào theo hàng. Bạn cũng có thể chỉ định trường trang
để xếp các nhóm theo trang. Bạn có thể đảo lại vị trí của các trường để có một bảng
tổng hợp khác.
44
Bạn có thể tạo một pivot table từ nhiều nguồn dữ liệu khác nhau. Thường nguồn dữ
liệu là các bảng của Excel. Bạn cũng có thể tạo Pivot Table từ nguồn dữ liệu ngoại,
từ nhiều vùng hợp lại, hay từ chính các Pivot Table khác.
Các bước
1. Chọn một ô bất kỳ trong danh sách cần tổng hợp; gọi Data> PivotTable
Report.
2. Trong bước 1 của PivotTable Wizard, chọn nguồn dữ liệu ( Microsoft Excel
List hay từ các cơ sở dữ liệu khác); sau đó nhấn nút Next.
3. Trong bước 2 của PivotTable Wizard, vùng địa chỉ của danh sách xuất hiện
trong hộp Range. Nếu địa chỉ sai hãy chỉnh lại. Sau đó nhấn Next.
4. Trong bước 3 của PivotTable Wizard, bạn trình bày bố cục của pivot table.
Các trường trở thành các nút nằm bên phải của cửa sổ. Kéo nút ứng với
trường dữ liệu vào vùng DATA. Để sắp xếp một trường theo cột, kéo nút của
trường đó len vùng COLUMN. Để sắp xếp một trường theo hàng, kéo đến
vùng ROW. Nhấn nút Next.
5. Trong bước 4 của PivotTable Wizard, bạn chỉ định ô để đặt pivot table. Nếu
muốn đặt thêm các tuỳ chọn khác cho pivot table, nhấn nút Options, đặt các
tuỳ chọn khác, và nhấn OK. sau đó nhấn Finish.
¾ Các hiệu chỉnh trên một Pivot Table :
Thay đổi tên trường
Vì pivot tables chỉ là bảng hiển thị thông tin nên bạn không thể thay đổi thông tin
trên bảng. Bạn chỉ có thể thay tên của các trường.
1. Để hiệu chỉnh tên trường, chọn trường
2. nhập tên mới.
45
TIP: Để thay đổi các tuỳ chọn khác cho một trường, nhấn kép lên nút của trường đó.
Chọn các tuỳ chọn.
Thêm trường dữ liệu
1. Để thêm trường dữ liệu, chọn một ô trong bảng pivot table.
2. Nhấn nút PivotTable Wizard trên thanh PivotTable. (Nhấn chuột phải lên
vùng thanh công cụ, chọn PivotTable để hiển thị thanh này nếu chưa hiện)
3. Trong bước 3 của PivotTable Wizard, kéo thêm nút của trường bạn muốn
thêm vào vùng DATA; nhấn nút Finish.
Thêm trường Rows, Columns, hay Pages
1. Để thêm trường hàng, cột hay trang, chọn một ô bất kỳ trong pivot table.
2. Nhấn nút PivotTable Wizard trên thanh PivotTable.
3. Trong bước 3 của PivotTable Wizard, kéo các nút cần thiết vào vùng ROW,
COLUMN, hay PAGE; sau đó nhấn Finish.
TIP: Để bỏ một trường hàng, cột hay trang, kéo nút trường ra khỏi pivot table.
Định dạng Pivot Table
Bạn có thể sử dụng tính năng AutoFormat để định dạng
1. Chọn một ô trong bảng pivot table. Chọn Format, AutoFormat.
2. Trên Table Format , chọn định dạng mong muốn, nhấn OK.
Chú ý: Để định dạng không bị mất khi ta thay đổi hay cập nhật lại bảng PivotTable
cần đảm bảo mục Enable Selection trên PivotTable menu của thanh PivotTable
được chọn.
Cập nhật Pivot Table
Một pivot table không tự cập nhật khi bạn thay đổi dữ liệu nguồn.
46
1. Để cập nhật pivot table, chọn một ô bất kỳ trong pivot table.
2. Nhấn nút Refresh Data trên thanh PivotTable.
3.2. PivotChart
¾ Là công cụ của Excel, đi chung với Pivot Table, giúp người dùng xem dữ liệu
theo nhiều dạng biểu đồ khác nhau một cách trực quan
Hình 20: PivotChart
47
3.3. Giới thiệu một số công cụ hỗ trợ OLAP tương tự
như Pivot Table của Excel
3.3.1 RadarCube OLAP
¾ Là .NET component phục vụ cho việc phân tích dữ liệu được thiết kế cho
Windows Forms và cả ASP.NET applications:
RadarCube OLAP Grid cho ASP.NET
RadarCube OLAP Chart cho Windows Form
¾ Tham khảo:
Hình 21: RadarCube OLAP
48
3.3.2 Data Dynamics Analysis
¾ Là .NET component phục vụ cho việc phân tích dữ liệu được thiết kế cho
Windows Forms và cả ASP.NET applications
¾ Tham khảo:
Hình 22: Data Dynamics Analysis
49
3.3.3 ComponentOne OLAP for WinForm
¾ Chỉ dùng cho Windows Forms Application
¾ Tham khảo:
Hình 23: ComponentOne OLAP for WinForm
3.3.4 Devexpress ASPxPivotGrid
¾ Là 1 .NET control thiết kế cho ASP.NET phục vụ OLAP và Data mining
¾ Có nhiều hỗ trợ về giao diện đẹp mắt và tính năng khá phong phú
¾ Xây dựng sẵn rất nhiều class để người dùng tùy biến, lập trình tùy theo nhu cầu
sử dụng của mình
¾ Tham khảo:
50
Hình 24: Devexpress ASPxPivotGrid
3.4 So sánh Pivot Table với các công cụ khác:
Ưu điểm:
¾ Là 1 công cụ rất mạnh được Microsoft phát triển để hỗ trợ việc phân tích dữ liệu
trong OLAP và được tích hợp trong Excel
¾ Đi kèm với PivotChart cung cấp cho người sử dụng 1 cái nhìn trực quan, sinh
động về những dữ liệu muốn phân tích
Nhược điểm:
¾ Nhược điểm lớn nhất: Pivot Table là COM component nên nếu client muốn sử
dụng thì bắt buộc máy tính của họ phải có cài sẵn Pivot Table
Î Điều này dẫn đến một hệ thống càng nhiều client sử dụng bao nhiêu thì càng
phải tốn chi phí bấy nhiêu cho việc cài đặt
¾ Thêm vào đó, nếu muốn sử dụng PivotTable trên nền Web thì chỉ chạy được
ứng dụng trên browser IE của Microsoft (vì chỉ có IE có hỗ trợ ActiveX
Control)
51
Kết luận:
¾ Chính vì những nhược điểm này, nhóm em đã quyết định không phát triển ứng
dụng của mình dựa trên component PivotTable của Microsoft mà sử dụng
component Devexpress ASPxPivotGrid đã được giới thiệu ở phần 3.3.4
¾ Với việc sử dụng Devexpress ASPxPivotGrid là một .NET control để xây dựng
nên ứng dụng xây dựng chạy phía sever, nhóm em muốn rằng các máy client chỉ
cần một browser bình thường mà không cần cài đặt thêm bất cứ công cụ nào
khác để sử dụng chương trình.
52
Chương 4 Các thư viện lập trình liên quan đến
SSAS
4.1. AMO
¾ Là tập hợp các lớp dùng quản lý tất cả các đối tượng của Analysis service như
Database, Cube, Dimension, Measure …
Lưu ý: Thư viện AMO chỉ hỗ trợ việc đọc cấu trúc của các đối tượng trong AS
chứ không thể truy vấn dữ liệu.
¾ Tài liệu tham khảo về AMO ở MSDN:
¾ Ví dụ về sử dụng thư viện AMO trong đề tài:
using Microsoft.AnalysisServices;
.....
Server myServer = new Server();
Database myDB = new Database();
Cube myCube = new Cube();
Dimension myDim = new Dimension();
myServer.Connect("localhost");
Database tmpDB = myServer.Databases.FindByName(“Project”);
Cube tmpCube = tmpDB.Cubes.FindByName(“Adventure Works DW”);
foreach (CubeDimension tmpCubeDim in tmpCube.Dimensions)
{
.....
}
53
4.2. ADOMD.NET
¾ Với AMO, ta đã có thể thao tác được với các đối tượng và lấy được cấu trúc các
thành phần của Analysis service. Tuy nhiên, không thể truy vấn được data. Để
truy vấn data trong Analysis service, ta phải dùng thư viện ADOMD.NET
¾ Tài liệu tham khảo về AMO ở MSDN:
¾ Ví dụ về sử dụng thư viện ADOMD.NET trong đề tài:
using Microsoft.AnalysisServices.AdomdClient;
...
string strConn = "Provider=MSOLAP.3; Data Source=localhost;Initial
Catalog=Project;Integrated Security=SSPI";
string strMDX = "select " + "[" + attNode.ParentNode["Cube
structure"].ToString() + "].[" + attNode["Cube structure"].ToString() +
"].Members on Columns From [" + tmpCube + "]";
AdomdConnection conn = new AdomdConnection(strConn);
conn.Open();
//create adomd command using connection and MDX query
AdomdCommand cmd = new AdomdCommand(strMDX, conn);
AdomdDataReader Reader = cmd.ExecuteReader();
Reader.Read();
....
4.3. SMO
¾ Dùng tạo các job trong SQL Server Agent phục vụ cho việc lập lịch để process
lại Analysis Service Database nhằm update những thay đổi từ phía Database
54
Server, đảm bảo cho Client có thể truy xuất được những dữ liệu mới nhất và đầy
đủ của hệ thống
¾ Tài liệu tham khảo về AMO ở MSDN:
¾ Ví dụ về sử dụng thư viện SMO trong đề tài:
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Smo.Agent;
.....
Server svr = new Server("(local)");
JobServer agent = svr.JobServer;
Job j = new Job(agent, "Smo Job");
j.Create();
JobStep js = new JobStep(j, "Step 1");
js.SubSystem = AgentSubSystem.AnalysisCommand;
string str = @"<Process
xmlns="""">";
str = str + "" + curr_db + "";
str = str + "";
str = str + "ProcessFull";
str = str + “";
js.Server = "localhost";
js.Command = str;
js.OnSuccessAction = StepCompletionAction.QuitWithSuccess;
js.OnFailAction = StepCompletionAction.QuitWithFailure;
js.Create();
55
4.4. MDX
Analysis Service không dùng ngôn ngữ truy vấn như đối với cơ sở dữ liệu
quan hệ thông thường. Thay vào đó, để truy vấn dữ liệu ta phải dùng đến ngôn
ngữ MDX (Multi-dimensional Expressions)
4.4.1 Cấu trúc chung
¾ Giống cấu trúc của 1 câu truy vấn SQL trên CSDL thông thường, nhưng mở
rộng hơn để truy vấn trên khối dữ liệu đa chiều. Câu truy vấn đa chiều (MDX)
có dạng như sau:
SELECT [ [, ...]] FROM [<mô
tả về khối đữ liệu >] [WHERE []]
¾ Trong MDX, phát biểu SELECT được dùng để mô tả 1 tập dữ liệu là 1 tập con
của dữ liệu đa chiều. Một câu truy vấn MDX có chứa một mệnh đề SELECT,
một mệnh đề FROM và một mệnh đề tùy chọn WHERE
¾ Câu truy vấn MDX phải chứa các thông tin sau :
• Số lượng chiều (có thể mô tả tối đa 128 chiều)
• Các thành viên của mỗi chiều cho từng trục của câu truy vấn
• Tên của khối có chứa dữ liệu cho câu truy vấn MDX.
• Các thành viên từ 1 chiều cắt, theo đó dữ liệu khối được cắt.
4.4.2 Ví dụ mẫu
SELECT { [Measures].[Unit Sales], [Measures].[Store Sales] } ON COLUMNS,
{ [Time].[1997], [Time].[1998] } ON ROWS FROM Sales WHERE (
[Store].[USA].[CA] )
¾ Mệnh đề SELECT xác định các chiều của tập kết quả của truy vấn MDX, trong
ví dụ là 2 chiều COLUMNS và ROWS.
56
¾ Mệnh đề FROM xác định nguồn dữ liệu đa chiều (khối) nào được sử dụng để
trích lọc dữ liệu vào tập kết quả của phát biểu SELECT. Trong ví dụ là từ khối
dữ liệu Sales
¾ Mệnh đề WHERE nếu có, dùng để xác định chiều cắt của khối dữ liệu, nhằm
giới hạn tập kết quả theo các chiều thành viên. Trong ví dụ, dữ liệu được cắt
theo thành viên CA của chiều Store.
4.4.3 Lưu ý
¾ Phát biểu SELECT của câu truy vấn MDX còn hỗ trợ các cú pháp tuỳ chọn
khác, như là từ khóa WITH và việc sử dụng các hàm MDX để xây dựng các
thành viên bằng việc tính toán để thêm vào 1 trục hoặc 1 chiều cắt.
¾ Cú pháp của câu truy vấn MDX tương tự như cú pháp SQL, tuy nhiên, có 1 số
khác biệt như sau :
• Cú pháp MDX phân biệt các tập hợp bằng việc dùng dấu ngoặc nhọn { } bao
quanh các bộ hay thành viên.
• Câu truy vấn MDX có thể chứa tới 128 chiều, nhưng chỉ có 5 chiều đầu tiên
là có aliase (tên phụ). Một trục có thể được tham chiếu bởi thứ tự của nó
trong câu MDX hay bởi tên phụ của nó nếu có. Câu truy vấn MDX còn có
thể được viết theo mẫu sau dùng thứ tự của mỗi trục:
SELECT { [Measures].[Unit Sales], [Measures].[Store Sales] } ON AXIS(0),
{ [Time].[1997], [Time].[1998] } ON AXIS(1) FROM Sales WHERE (
[Store].[USA].[CA] )
• Trong câu truy vấn SQL, mệnh đề FROM có thể chỉ đến nhiều bảng dữ liệu.
Tuy nhiên, mệnh đề FROM trong câu truy vấn MDX bị giới hạn ở 1 khối
duy nhất.
57
• Mệnh đề WHERE được dùng để mô tả chiều cắt dữ liệu. Nếu 1 chiều không
được đề cập trong mệnh đề WHERE, SQL Analysis Services vẫn xem nó là
1 chiều cẳt, nhưng được lọc theo số thành viên mặc định của nó. Mệnh đề
WHERE có thể thay đổi tiến trình lọc cho 1 chiều nào đó, giúp tinh chỉnh dữ
liệu kết quả.
58
Chương 5 Xây dựng công cụ Web hỗ trợ phân tích
dữ liệu cho các ứng dụng OLTP
5.1. Phân tích, thiết kế
5.1.1 Phân tích
5.1.1.1 Quy trình xử lý nghiệp vụ:
59
Hình 25: Mô hình xử lý nghiệp vụ quản lý template
5
.1.1.2 Yê
Hình
u cầu ch
26: Sơ đồ
ức năn
Use-Case
60
g:
mô tả hệ th
ống chức năng của Administrator
H
Hình
ình 27: Sơ
28: Sơ đồ
đồ Use-Ca
User-Case
61
se mô tả hệ
mô tả hệ t
thống chứ
hống chức
c năng củ
năng của
a Designer
Custom Us
er
62
Hình 29: Sơ đồ Use-Case mô tả chức năng quản lý Template
Hình 30: Sơ đồ Use-Case mô tả chức năng phân quyền Template
Hình 31
Hình 32: S
: Sơ đồ Us
ơ đồ Use-C
63
e-Case mô
ase mô tả
tả chức nă
chức năng
ng quản lý
phân quy
Cube
ền Cube
64
Hình 33: Sơ đồ Use-Case mô tả chức năng quản lý User
65
Hình 34: Sơ đồ Use-Case mô tả chức năng quản lý Group
Hình 35: Sơ đồ Use-Case mô tả chức năng quản lý Profile
66
Hình 36: Sơ đồ Use-Case mô tả chức năng cấu hình hệ thống
5.1.1.3 Mô hình quan niệm dữ liệu:
Hình 37: Mô hình
67
quan niệm dữ liệu hệ thống OLAP
68
¾ Mô tả các loại thực thể:
• Loại thực thể tblChi_Tiet_Group:
Thuộc tính Kiểu Kích thước P1 U M L
iStt_Chi_Tiet int 4 x x x x
• Loại thực thể tblChi_Tiet_Template:
Thuộc tính Kiểu Kích thước P U M L
iStt_CTTemplate int 4 x x x x
iDefault int 4 x
• Loại thực thể tblRole:
Thuộc tính Kiểu Kích thước P U M L
iMa_Role int 4 x x x x
vTen_Role varchar 20 x x x
• Loại thực thể tblGroup:
Thuộc tính Kiểu Kích thước P U M L
iMa_Group int 4 x x x x
vTen_Group varchar 20 x x
vMo_Ta varchar 100
• Loại thực thể tblQuyen:
Thuộc tính Kiểu Kích thước P U M L
iMa_Quyen int 4 x x x x
vTen_Quyen varchar 50 x x
vMo_Ta varchar 100
• Loại thực thể tblTemplate:
Thuộc tính Kiểu Kích thước P U M L
iMa_Template int 4 x x x x
vTen_ Template varchar 30 x x
vLoai varchar 10 x
tNoi_Dung text x
iParent int 4
vStatus varchar 20 x
vMo_Ta varchar 100
1 P : primary key (khóa chính)
U : unique key, candidate key (khóa chỉ định)
M : mandatory (not null)
L : locked (không cho phép sửa giá trị )
69
• Loại thực thể tblUser:
Thuộc tính Kiểu Kích thước P U M L
iMa_User int 4 x x x x
vHo_Ten varchar 30 x
vUser_name varchar 20 x x
vPassword int 64 x
vMo_Ta varchar 100
vDien_Thoai varchar 15
vEmail varchar 50
vChuc_Vu varchar 50
vDia_Chi varchar 50
• Loại thực thể tblCurrentConnect:
Thuộc tính Kiểu Kích thước P U M L
vServer varchar 20 x x x x
• Loại thực thể tblAttribute:
Thuộc tính Kiểu Kích thước P U M L
iMa_Att int 4 x x x x
vTen_Att varchar 50 x
• Loại thực thể tblCube:
Thuộc tính Kiểu Kích thước P U M L
iMa_Cube int 4 x x x x
vTen_Cube varchar 50 x
vMo_Ta varchar 100
iActive int 4 x
• Loại thực thể tblDatabase:
Thuộc tính Kiểu Kích thước P U M L
iMa_DB int 4 x x x x
vTen_DB varchar 50 x
• Loại thực thể tblDimension:
Thuộc tính Kiểu Kích thước P U M L
iMa_Dim int 4 x x x x
vTen_Dim varchar 50 x
• Loại thực thể tblChi_Tiet_Role_Member:
Thuộc tính Kiểu Kích thước P U M L
iStt_Chi_Tiet int 4 x x x x
70
• Loại thực thể tblMember:
Thuộc tính Kiểu Kích thước P U M L
iMa_Member int 4 x x x x
vTen_Member varchar 50 x
• Loại thực thể tblProfile:
Thuộc tính Kiểu Kích thước P U M L
iMa_Profile int 4 x x x x
vTen_Profile varchar 20 x x
vMo_Ta varchar 100
• Loại thực thể tblChuc_Nang_Profile:
Thuộc tính Kiểu Kích thước P U M L
iStt_Chuc_Nang int 4 x x x x
¾ Mô tả ràng buộc toàn vẹn:
• Khóa nội:
(S) R1-01: id(tblChi_Tiet_Group) = iStt_Chi_Tiet
(S) R1-02: id(tblChi_Tiet_Template) = iStt_CTTemplate
(S) R1-03: id(tblRole) = iMa_Role
(S) R1-04: id(tblGroup) = iMa_Group
(S) R1-05: id(tblQuyen) = iMa_Quyen
(S) R1-06: id(tblTemplate) = iMa_Template
(S) R1-07: id(tblUser) = iMa_User
(S) R1-08: id(tblCurrentConnect) = vServer
(S) R1-09: id(tblAttribute) = iMa_Att
(S) R1-10: id(tblCube) = iMa_Cube
(S) R1-11: id(tblDatabase) = iMa_DB
(S) R1-12: id(tblDimension) = iMa_Dim
(S) R1-13: id(tblChi_Tiet_Role_Member) = iStt_Chi_Tiet
(S) R1-14: id(tblMember) = iMa_Member
(S) R1-15: id(tblProfile) = iMa_Profile
(S) R1-16: id(tblChuc_Nang_Profile) = iStt_Chuc_Nang
• Ràng buộc về miền giá trị:
(I) R2-01: tblTemplate_Detail.iDefault in (0,1).
(I) R2-02: tblTemplate.vLoai in (‘public’, ‘private’).
(I) R2-03: tblTemplate.vStatus in (‘normal’, ‘restricted’).
(I) R2-04: tblTemplate_Detail.iActive in (0,1).
- (S) : ràng buộc sẽ được hệ quản trị cơ sở dữ liệu kiểm tra.
- (I) : ràng buộc sẽ được kiểm tra ở mức giao diện.
- (T) : ràng buộc sẽ được thay thế bằng trigger.
71
• Khóa ngoại:
(S) R3-01: tblRole[vTen_Role] ⊆ tblGroup[vTen_Group]
(S) R3-02: tblChi_Tiet_Group[iMa_User] ⊆ tblUser[iMa_User]
(S) R3-03: tblChi_Tiet_Group[iMa_Group] ⊆ tblGroup[iMa_ Group]
(S) R3-04: tblUser[iMa_Profile] ⊆ tblProfile[iMa_ Profile]
(S) R3-05: tblMember[iMa_Att] ⊆ tbl Attribute[iMa_ Att]
(S) R3-06: tblChi_Tiet_Role_Member[iMa_Member] ⊆ tblMember
(S) [iMa_ Member]
(S) R3-07: tblChi_Tiet_Role_Member[iMa_Role] ⊆ tblRole[iMa_
Role]
(S) R3-08: tblTemplate[iMa_Cube] ⊆ tblCube[iMa_ Cube]
(S) R3-09: tblChi_Tiet_Template[iMa_User] ⊆ tblUser[iMa_User]
(S) R3-10: tblChi_Tiet_Template[iMa_Template] ⊆
tblTemplate[iMa_Template]
(S) R3-11: tblChi_Tiet_Template[iMa_Quyen] ⊆ tblQuyen [iMa_
Quyen]
(S) R3-12: tblChuc_Nang_Profile[iMa_ Profile] ⊆ tblProfile [iMa_
Profile]
R3-13: tblChuc_Nang_Profile[iMa_ Quyen] ⊆ tblQuyen [iMa_
Quyen]
(S) R3-14: tblAttribute[iMa_Dim] ⊆ tblDimemsion[iMa_ Dim]
(S) R3-15: tblDimemsion[iMa_Cube] ⊆ tblCube [iMa_Cube]
(S) R3-16: tblCube [iMa_DB] ⊆ tblDatabase[iMa_DB]
(S) R3-17: tblCurrentConnect [iMa_DB] ⊆ tblDatabase[iMa_DB]
(S) R3-18: tblQuyen[iParent] ⊆ tblQuyen [iMa_Quyen]
• Ràng buộc giữa các thuộc tính trong một bảng:
(T) R4-01: tblTemplate[iParent] ⊆ tblTemplate[iMa_Template]
CREATE TRIGGER trg_Template_delete
ON tblTemplate
FOR DELETE
AS
DECLARE @iMa_Template INT
SELECT @iMa_Template = iMa_Template FROM deleted
DELETE FROM tblTemplate WHERE iParent = @iMa_Template
;
• Ràng buộc giữa các thuộc tính, các bộ của nhiều bảng:
(T) R5-01: tblTemplate[iOwner] ⊆ tblUser[iMa_User]
CREATE TRIGGER trg_User_delete
ON tblUser
FOR DELETE
AS
DECLARE @iMa_User INT
SELECT @iMa_User = iMa_User FROM deleted
DELETE FROM tblTemplate WHERE iMa_Template in (
72
SELECT DISTINCT tblTemplate.iMa_Template
FROM tblTemplate
WHERE (tblTemplate.iOwner = @iMa_User))
;
5.1.2 Thiết kế
5.1.2.1 Dữ liệu:
¾ Mô hình vật lý:
73
Hình 38: Mô hình vật lý
74
¾ Mô tả các bảng:
• Bảng tblChi_Tiet_Group:
Thuộc tính Kiểu Kích thước P2 U M L F
iStt_Chi_Tiet int 4 x x x x
iMa_User int 4 x x x
iMa_Group int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_User tblUser iMa_User
iMa_Group tblGroup iMa_Group
• Bảng tblChi_Tiet_Template:
Thuộc tính Kiểu Kích thước P U M L F
iStt_CTTemplate int 4 x x x x
iMa_User int 4 x x x
iMa_Template int 4 x x x
iMa_Quyen int 4 x x x
iDefault int 4 x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_User tblUser iMa_User
iMa_ Template tblTemplate iMa_ Template
iMa_Quyen tblQuyen iMa_Quyen
• Bảng tblRole:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Role int 4 x x x x
vTen_Role varchar 20 x x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
vTen_Role tblGroup vTen_Group
• Bảng tblGroup:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Group int 4 x x x x
vTen_Group varchar 20 x x
vMo_Ta varchar 100
2 P : primary key (khóa chính)
U : unique key, candidate key (khóa chỉ định)
M : mandatory (not null)
L : locked (không cho phép sửa giá trị )
F : foreign key (khóa ngoại).
75
• Bảng tblQuyen:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Quyen int 4 x x x x
vTen_Quyen varchar 50 x x
vMo_Ta varchar 100
iParent int 4 x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iParent tblQuyen iMa_Quyen
• Bảng tblTemplate:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Template int 4 x x x x
vTen_ Template varchar 30 x x
vLoai varchar 10 x
tNoi_Dung text x
iOwner int 4 x
iMa_Cube int 4 x x x
iParent int 4
vStatus varchar 20 x
vMo_Ta varchar 100
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iOwner tblUser iMa_User
iMa_Cube tblCube iMa_Cube
• Bảng tblUser:
Thuộc tính Kiểu Kích thước P U M L F
iMa_User int 4 x x x x
vHo_Ten varchar 30 x
vUser_name varchar 20 x x
vPassword int 64 x
iMa_Profile int 4 x x x
vMo_Ta varchar 100
vDien_Thoai varchar 15
vEmail varchar 50
vChuc_Vu varchar 50
vDia_Chi varchar 50
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_Profile tblProfile iMa_Profile
76
• Bảng tblCurrentConnect:
Thuộc tính Kiểu Kích thước P U M L F
vServer varchar 20 x x x x
iMa_DB int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_DB tblDatabase iMa_DB
• Bảng tblAttribute:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Att int 4 x x x x
vTen_Att varchar 50 x
iMa_Dim int x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_Dim tblDimension iMa_Dim
• Bảng tblCube:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Cube int 4 x x x x
vTen_Cube varchar 50 x
iMa_DB int 4 x x x
vMo_Ta varchar 100
iActive int 4 x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_DB tblDatabase iMa_DB
• Bảng tblDatabase:
Thuộc tính Kiểu Kích thước P U M L F
iMa_DB int 4 x x x x
vTen_DB varchar 50 x
• Bảng tblDimension:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Dim int 4 x x x x
vTen_Dim varchar 50 x
iMa_Cube int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_Cube tbl Cube iMa_Cube
77
• Bảng tblChi_Tiet_Role_Member:
Thuộc tính Kiểu Kích thước P U M L F
iStt_Chi_Tiet int 4 x x x x
iMa_Member int 4 x x x
iMa_Role int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_Member tblMember iMa_Member
iMa_Role tblRole iMa_Role
• Bảng tblMember:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Member int 4 x x x x
vTen_Member varchar 50 x
iMa_Att int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_Att tblAttribute iMa_ Att
• Bảng tblProfile:
Thuộc tính Kiểu Kích thước P U M L F
iMa_Profile int 4 x x x x
vTen_Profile varchar 20 x x
vMo_Ta varchar 100
• Bảng tblChuc_Nang_Profile:
Thuộc tính Kiểu Kích thước P U M L F
iStt_Chuc_Nang int 4 x x x x
iMa_Profile int 4 x x x
iMa_Quyen int 4 x x x
Khóa ngoại:
Khóa ngoại Bảng tham chiếu Khóa nội
iMa_ Profile tblProfile iMa_ Profile
iMa_Quyen tblQuyen iMa_Quyen
¾ Mô tả ràng buộc toàn vẹn3:
• Khóa nội:
(S) R1-01: id(tblChi_Tiet_Group) = iStt_Chi_Tiet
(S) R1-02: id(tblChi_Tiet_Template) = iStt_CTTemplate
(S) R1-03: id(tblRole) = iMa_Role
3 - (S) : ràng buộc sẽ được hệ quản trị cơ sở dữ liệu kiểm tra.
- (I) : ràng buộc sẽ được kiểm tra ở mức giao diện.
- (T) : ràng buộc sẽ được thay thế bằng trigger.
78
(S) R1-04: id(tblGroup) = iMa_Group
(S) R1-05: id(tblQuyen) = iMa_Quyen
(S) R1-06: id(tblTemplate) = iMa_Template
(S) R1-07: id(tblUser) = iMa_User
(S) R1-08: id(tblCurrentConnect) = vServer
(S) R1-09: id(tblAttribute) = iMa_Att
(S) R1-10: id(tblCube) = iMa_Cube
(S) R1-11: id(tblDatabase) = iMa_DB
(S) R1-12: id(tblDimension) = iMa_Dim
(S) R1-13: id(tblChi_Tiet_Role_Member) = iStt_Chi_Tiet
(S) R1-14: id(tblMember) = iMa_Member
(S) R1-15: id(tblProfile) = iMa_Profile
(S) R1-16: id(tblChuc_Nang_Profile) = iStt_Chuc_Nang
• Ràng buộc về miền giá trị:
(I) R2-01: tblTemplate_Detail.iDefault in (0,1).
(I) R2-02: tblTemplate.vLoai in (‘public’, ‘private’).
(I) R2-03: tblTemplate.vStatus in (‘normal’, ‘restricted’).
(I) R2-04: tblTemplate_Detail.iActive in (0,1).
• Khóa ngoại:
(S) R3-01: tblRole[vTen_Role] ⊆ tblGroup[vTen_Group]
(S) R3-02: tblChi_Tiet_Group[iMa_User] ⊆ tblUser[iMa_User]
(S) R3-03: tblChi_Tiet_Group[iMa_Group] ⊆ tblGroup[iMa_ Group]
(S) R3-04: tblUser[iMa_Profile] ⊆ tblProfile[iMa_ Profile]
(S) R3-05: tblMember[iMa_Att] ⊆ tbl Attribute[iMa_ Att]
(S) R3-06: tblChi_Tiet_Role_Member[iMa_Member] ⊆ tblMember
(S) [iMa_ Member]
(S) R3-07: tblChi_Tiet_Role_Member[iMa_Role] ⊆ tblRole[iMa_
Role]
(S) R3-08: tblTemplate[iMa_Cube] ⊆ tblCube[iMa_ Cube]
(S) R3-09: tblChi_Tiet_Template[iMa_User] ⊆ tblUser[iMa_User]
(S) R3-10: tblChi_Tiet_Template[iMa_Template] ⊆
tblTemplate[iMa_Template]
(S) R3-11: tblChi_Tiet_Template[iMa_Quyen] ⊆ tblQuyen [iMa_
Quyen]
(S) R3-12: tblChuc_Nang_Profile[iMa_ Profile] ⊆ tblProfile [iMa_
Profile]
R3-13: tblChuc_Nang_Profile[iMa_ Quyen] ⊆ tblQuyen [iMa_
Quyen]
(S) R3-14: tblAttribute[iMa_Dim] ⊆ tblDimemsion[iMa_ Dim]
(S) R3-15: tblDimemsion[iMa_Cube] ⊆ tblCube [iMa_Cube]
79
(S) R3-16: tblCube [iMa_DB] ⊆ tblDatabase[iMa_DB]
(S) R3-17: tblCurrentConnect [iMa_DB] ⊆ tblDatabase[iMa_DB]
(S) R3-18: tblQuyen[iParent] ⊆ tblQuyen [iMa_Quyen]
• Ràng buộc giữa các thuộc tính trong một bảng:
(T) R4-01: tblTemplate[iParent] ⊆ tblTemplate[iMa_Template]
CREATE TRIGGER trg_Template_delete
ON tblTemplate
FOR DELETE
AS
DECLARE @iMa_Template INT
SELECT @iMa_Template = iMa_Template FROM deleted
DELETE FROM tblTemplate WHERE iParent = @iMa_Template
;
• Ràng buộc giữa các thuộc tính, các bộ của nhiều bảng:
(T) R5-01: tblTemplate[iOwner] ⊆ tblUser[iMa_User]
CREATE TRIGGER trg_User_delete
ON tblUser
FOR DELETE
AS
DECLARE @iMa_User INT
SELECT @iMa_User = iMa_User FROM deleted
DELETE FROM tblTemplate WHERE iMa_Template in (
SELECT DISTINCT tblTemplate.iMa_Template
FROM tblTemplate
WHERE (tblTemplate.iOwner = @iMa_User))
;
5.1.2.2 Kiến trúc module:
80
5.1.2.3 Hệ thống giao diện:
¾ Hệ thống giao diện phân hệ Administrator:
Hình 39: Màn hình chính phân hệ administrator
Phân hệ Custom
User
Phân hệ Designer Phân hệ
Administrator
Hệ thống OLAP
81
Hình 40: Màn hình chức năng Copy Rights
Hình 41: Màn hình chức năng Active cube
Hình 42: Màn hình chức năng Assign cube to group
82
Hình 43: Màn hình chức năng Assign user to cube
Hình 44: Màn hình chức năng List user
83
Hình 45: Màn hình chức năng Assign Groups
Hình 46: Màn hình chức năng Assign Users
Hình 47: Màn hình chức năng Import cube
84
Hình 48: Màn hình chức năng Assign rights to profile
Hình 49: Màn hình chức năng Schedule
85
Hình 50: Màn hình chức năng Setting Connection
¾ Hệ thống giao diện phân hệ Designer:
Hình 51: Màn hình chính phân hệ designer
86
Hình 52: Màn hình chức năng Design template
Hình 53: Màn hình chức năng Export template
87
Hình 54: Màn hình chức năng Assign template to user
¾ Hệ thống giao diện phân hệ Custom User:
Hình 55: Màn hình chính phân hệ custom user
88
5.2. Cài đặt, lập trình
¾ Kiến trúc hệ thống
MS SQL Server 2005 Analysis Service
Windows Server 2003
Web server IIS
¾ Ngôn ngữ lập trình
ASP.NET C#
¾ Cơ sở dữ liệu:
MS SQL Server 2005
89
Đánh giá, bàn luận về kết quả
¾ Chi tiết các công việc đã tiến hành
• Tìm hiểu các tài liệu về công nghệ OLAP, Data Warehouse
• Kiến trúc các thành phần OLAP và cách xây dựng chúng trong MS SQL
Server Analysis Service (SSAS)
• Tìm hiểu và sử dụng component Pivot Table, PivotChart trong Excel
• Tìm hiểu và sử dụng các thư viện lập trình liên quan đến SSAS: MDX,
AMO, SMO, ADOMD.NET, ...
• Tìm hiểu ngôn ngữ ASP.NET và các thư viện liên quan phục vụ cho việc
lập trình
• Xây dựng công cụ hỗ trợ phân tích dữ liệu
¾ Làm được
• Nắm được nền tảng lý thuyết về OLAP, Data Warehouse, SSAS, ...
• Viết ứng dụng hoàn thiện hầu hết các chức năng đã đề ra ban đầu
• Giao diện thân thiện với người dùng
• Có nghiên cứu tìm hiểu, bổ sung thêm các tính năng mới vào chương
trình sao cho phù hợp với nhu cầu thực tế và thuận tiện hơn cho người sử
dụng.
¾ Chưa làm được
• Chức năng cho người dùng save lại Local Cube như trong Pivot Table.
90
¾ Hướng giải quyết
¾ Những điều học được từ đề tài
• Kiến trúc nền tảng của công nghệ OLAP và Data Warehouse
• Sử dụng thành thạo hơn ngôn ngữ lập trình ASP.NET và các công cụ của
MS SQL Server 2005
• Khả năng đọc hiểu tài liệu tiếng Anh
• Kỹ năng làm việc nhóm :
Phân chia công việc một cách cụ thể, rõ ràng
Tuân thủ các nguyên tắc, các chuẩn đã đề ra
• Đức tính cần cù, tỉ mỉ trong quá trình kiểm thử, phát hiện và sửa lỗi của
chương trình.
91
Kết luận - Hướng phát triển
Các kết quả đã đạt được
1. Về lý thuyết
¾ Nắm được những kiến thức nền tảng về DataWarehouse và công nghệ OLAP
¾ Hiểu về kiến trúc các thành phần trong MS SQL Server Analysis Service
(SSAS) và quy trình thiết kế các thành phần này
¾ Hiểu về component Pivot Table trong Excel và cách sử dụng
¾ Có kiến thức về các thư viện lập trình liên quan đến SSAS: DSO, MDX,
AMO, ADOMD.NET, ...
2. Về thực nghiệm
¾ Cài đặt
• Xây dựng 1 công cụ tương đối hoàn chỉnh trên nền Web hỗ trợ phân tích
dữ liệu cho các ứng dụng OLTP. Công cụ này hoàn toàn độc lập với dữ
liệu của người dùng.
¾ Những đóng góp mới
• Có hệ thống template giúp người dùng dễ dàng hơn trong quá trình xem
và phân tích dữ liệu
• Có chức năng Import, Export template, dữ liệu,... phục vụ cho nhu cầu
chuyển đổi giữa các hệ thống khác nhau
• Tìm hiểu, bổ sung thêm các tính năng mới vào chương trình sao cho phù
hợp với nhu cầu thực tế và thuận tiện hơn cho người sử dụng.
92
¾ Hướng phát triển
• Data Mining
93
Danh mục tài liệu tham khảo
Tiếng Anh:
[1] Reed Jacobson (2006), Microsoft SQL Server 2005 Analysis Services
Step.By.Step, MS.Press.
[2] Robert Vieira (2007), Professional SQL Server 2005 Programming, Wiley
Publishing.
[3] Edward Whalen (2007), Microsoft SQLServer2005 Administrator’s
Companion, MS.Press.
Tiếng Việt:
[4] Nguyễn Thanh Bình (2002), Kho dữ liệu và hệ hỗ trợ quyết định, Đại học Huế
Các file đính kèm theo tài liệu này:
- 73632325-Bao-Cao-Luan-Van-OLAP.pdf