Tải bản đầy đủ (.docx) (34 trang)

TÌM HIỂU CHỨC NĂNG KHAI PHÁ DỮ LIỆU TRONG MS SQL SERVER 2008 ỨNG DỤNG BÀI TOÁN HỖ TRỢ SINH VIÊN CHỌN MÔN CHUYÊN NGÀNH PHÙ HỢP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1 MB, 34 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
  
BÁO CÁO THU HOẠCH MÔN HỌC
KHAI THÁC DỮ LIỆU VÀ KHO DỮ LIỆU
ĐỀ TÀI:
TÌM HIỂU CHỨC NĂNG KHAI PHÁ DỮ LIỆU TRONG
MS SQL SERVER 2008
ỨNG DỤNG BÀI TOÁN HỖ TRỢ SINH VIÊN CHỌN MÔN
CHUYÊN NGÀNH PHÙ HỢP
Giảng viên hướng dẫn : PGS. TS Đỗ Phúc
Sinh viên thực hiện: Đỗ Thị Nhung
Mã số SV: CH1101117
TP. Hồ Chí Minh, tháng 11 năm 2012
LỜI CẢM ƠN

Sau hơn 1 tháng nghiên cứu và tìm tòi, em đã hoàn thành bài thu hoạch này. Để đạt
được kết quả này, em đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự quan tâm, giúp
đỡ, ủng hộ của các quí Thầy Cô và các bạn.
Trước hết, chúng em xin gửi lời cảm ơn chân thành đến Khoa Công Nghệ Phần Mềm,
Khoa Mạng Máy Tính, trường Đại học Công Nghệ Thông Tin và các quí Thầy Cô đặc biệt là
PGS. TS Đỗ Phúc đã tận tình hướng dẫn, giảng giải và cho em nguồn cảm hứng đến với
môn học và rộng hơn là cảm hứng trong nghiên cứu khoa học.
Tôi cũng rất cảm ơn bạn bè trong Khoa đã luôn bên cạnh và ủng hộ, đóng góp ý kiến giúp
tôi có thể giải quyết các vấn đề khó khăn gặp phải trong quá trình thực hiện báo cáo cuối kì này.
Mặc dù đã rất nỗ lực, cố gắng nhưng kiến thức còn hạn chế nên chắc chắn báo cáo cuối kì
này vẫn còn nhiều thiếu sót, và thực sự chưa phải là một báo cáo hoàn thiện. Tôi rất mong nhận
được sự góp ý đánh giá của quí Thầy Cô, của các bạn để tôi có thể phát triển báo cáo này thêm
hoàn chỉnh hơn.
Một lần nữa, em xin chân thành cảm ơn!
TPHCM, Tháng 11 năm 2012


Sinh viên thực hiện
Đỗ Thị Nhung
NHẬN XÉT
(Của giảng viên hướng dẫn)


………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
……………………………………………………………………………………………

MỤC LỤC
PHẦN I: CƠ SỞ LÝ THUYẾT
I. Tổng quan
Ngày nay, chúng ta đang sống trong thế kỷ bùng nổ về khoa học công nghệ mà đặc biệt là
sự phát triển vượt bậc về công nghệ tông tin. Công nghệ thông tin và việc ứng dụng công
nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế xã hội trong nhiều năm qua
cũng đồng nghĩa với lượng dữ liệu đã được các cơ quan thu thập và lưu trữ ngày một tích
luỹ nhiều lên. Bên cạnh đó, các thiết bị thu thập dữ liệu tự động tương đối phát triển đã
tạo ra những kho dữ liệu khổng lồ, như các dữ liệu ngân hàng, hàng không, giáo dục.….
Cùng với sự phát triển mạnh mẽ của công nghệ, các thiết bị lưu trữ và các thiết bị thu
thập thông tin tự động đã cho phép xây dựng được những hệ thống thông tin có khả năng
tự động hoá ngày càng cao.
Vấn đề đặt ra là làm thế nào để xử lý khối lượng thông tin cực lớn như vậy để phát hiện
ra các tri thức tiềm ẩn trong núi dữ liệu khổng lồ này. Những tri thức thu được như vậy
chúng được chuyên môn hoá, phân chia theo các lĩnh vực ứng dụng như sản xuất, kinh
doanh, tài chính, nghiên cứu… Các cơ sở dữ liệu cần phải đem lại tri thức hơn là chính
dữ liệu đó.

Hiện nay, cùng với sự phát triển ấy, các phần mềm hỗ trợ phân tích dữ liệu, ra quyết định
xuất hiện ngày càng nhiều. Đơn cử như hệ quản trị Cơ sở dữ liệu SQL Server, Oracle,…
Trong phạm vi khóa luận của môn học này, em xin trình bày sâu hơn về môn học Nhà
kho dữ liệu và khai phá dữ liệu, cụ thể là mảng nghiên cứu các chức năng khai phá dữ
liệu trong hệ quản trị cơ sở dữ liệu Microsoft Sql server 2008 (nghiên cứu luật kết hợp,
gom cụm, text mining,…). Ngoài ra, em cũng viết một ứng dụng đơn giản ứng dụng cho
phần nghiên cứu của mình.
II. Một số khái niệm cơ bản
1) Khái niệm về khai phá dữ liệu (datamining) và ứng dụng
Trong môi trường cạnh tranh, người ta ngày càng cần có nhiều thông tin với tốc độ
nhanh để trợ giúp việc ra quyết định và ngày càng có nhiều câu hỏi mang tính chất định
tính cần phải trả lời dựa trên một khối lượng dữ liệu khổng lồ đã có. Với những lý do như
vậy, các phương pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng không
đáp ứng được thực tế đã làm phát triển một khuynh hướng kỹ thuật mới đó là Kỹ thuật
phát hiện tri thức và khai phá dữ liệu (KDD - Knowledge Discovery and Data
Mining).Với những ưu điểm đó, khai phá dữ liệu đang được áp dụng một cách rộng rãi
trong nhiều lĩnh vực kinh doanh và đời sống khác nhau: marketing, tài chính, ngân hàng
và bảo hiểm, khoa học, y tế, an ninh, internet… Kỹ thuật phát hiện tri thức và khai phá dữ
liệu đã và đang được nghiên cứu, ứng dụng trong nhiều lĩnh vực khác nhau ở các nước
trên thế giới, tại Việt Nam kỹ thuật này tương đối còn mới mẻ tuy nhiên cũng đang được
nghiên cứu và dần đưa vào ứng dụng. Khai phá dữ liệu (Data Mining) được định nghĩa
là: quá trình trích xuất các thông tin có giá trị tiềm ẩn bên trong lượng lớn dữ liệu được
lưu trữ trong các CSDL, kho dữ liệu… Hiện nay, ngoài thuật ngữ khai phá dữ liệu, người
ta còn dùng một số thuật ngữ khác có ý nghĩa tương tự như: khai phá tri thức từ CSDL
(knowlegde mining from databases), trích lọc dữ liệu (knowlegde extraction), phân tích
dữ liệu/mẫu (data/pattern analysis), khảo cổ dữ liệu (data archaeology),nạo vét dữ liệu
(data dredging).
Quá trình này bao gồm các bước sau:
a) Làm sạch dữ liệu (data cleaning): loại bỏ nhiễu hoặc các dữ liệu không thích
hợp.

b) Tích hợp dữ liệu (data integration): Tích hợp dữ liệu từ các nguồn khác nhau
như: CSDL, Kho dữ liệu, file text
c) Chọn dữ liệu (data selection): Ở bước này, những dữ liệu liên quan trực tiếp
đến nhiệm vụ sẽ được thu thập từ các nguồn dữ liệu ban đầu.
d) Chuyển đổi dữ liệu (data transformation): Trong bước này, dữ liệu sẽ được
chuyển đổi về dạng phù hợp cho việc khai phá bằng cách thực hiện các thao
tác nhóm hoặc tập hợp.
e) Khai phá dữ liệu (data mining): Là giai đoạn thiết yếu, trong đó các phương
pháp thông minh sẽ được áp dụng để trích xuất ra các mẫu dữ liệu.
f) Đánh giá mẫu (pattern evaluation): Đánh giá sự hữu ích của các mẫu biểu diễn
tri thức dựa vào một số phép đo.
Đây là mô hình minh họa cho các quá trình khai thác dữ liệu :
Một số ứng dụng kỹ thuật khai phá dữ liệu trong viễn thông
Knowledge
Pattern Discovery
Transformed Data
Cleansed Preprocessed
Preparated
Data
Target Data
Gathering
Data Mining
Selection
Transformationnon
Cleansing Pre-processing
Preparation

Envalution of Rule
Internet,
g. Trình diễn dữ liệu (knowlegde presentation):

Sử dụng các kĩ thuật trình diễn và trực quan hoá dữ liệu để biểu diễn tri thức khai
phá được cho người sử dụng. Khai phá dữ liệu là một lĩnh vực liên quan tới rất nhiều
ngành học khác như: hệ CSDL, thống kê, trực quan hóa Hơn nữa, tuỳ vào cách tiếp cận
được sử dụng, khai phá dữ liệu còn có thể áp dụng một số kĩ thuật như mạng nơ ron, lí
thuyết tập thô hoặc tập mờ, biểu diễn tri thức… So với các phương pháp này, khai phá dữ
liệu có một số ưu thế rõ rệt:
So với phương pháp học máy, khai phá dữ liệu có lợi thế hơn ở chỗ, khai phá dữ
liệu có thể sử dụng với các CSDL chứa nhiều nhiễu, dữ liệu không đầy đủ hoặc biến đổi
liên tục. Trong khi đó phương pháp học máy chủ yếu được áp dụng trong các CSDL đầy
đủ, ít biến động và tập dữ liệu không quá lớn. Phương pháp hệ chuyên gia: phương pháp
này khác với khai phá dữ liệu ở chỗ các ví dụ của chuyên gia thường ở mức chất lượng
cao hơn nhiều so với các dữ liệu trong CSDL, và chúng thường chỉ bao hàm được các
trường hợp quan trọng. Hơn nữa các chuyên gia sẽ xác nhận giá trị và tính hữu ích của
các mẫu phát hiện được Phương pháp thống kê là một trong những nền tảng lí thuyết của
Khai phá dữ liệu, nhưng khi so sánh hai phương pháp với nhau ta có thể thấy các phương
pháp thống kê còn tồn tại một số điểm yếu mà Khai phá dữ liệu đã khắc phục được: Các
phương pháp thống kê chuẩn không phù hợp với các kiểu dữ liệu có cấu trúc trong rất
nhiều các CSDL. Các phương pháp thống kê hoạt động hoàn toàn theo dữ liệu, nó không
sử dụng tri thức sẵn có về lĩnh vực. Kết quả phân tích của thống kê có thể sẽ rất nhiều và
khó có thể làm rõ được. Phương pháp thống kê cần có sự hướng dẫn của người dùng để
xác định phân tích dữ liệu như thế nào và ở đâu…
2) Các hướng tiếp cận khai phá dữ liệu (datamining)
- Phân lớp và dự đoán (classification & prediction) : xếp đối tượng vào một trong các
lớp đã biết trước. Ví dụ : phân lớp loại cước hoặc loại dịch vụ dựa trên số máy bị gọi của
cuộc gọi, phân lớp khu vực dựa trên số máy chủ gọi, phân lớp giờ cao điểm, thấp điểm
dựa trên giờ bắt đầu đàm thọai.v.v
Hướng tiếp cận phân lớp có giám sát (supervised learning) thường sử dụng một số kỹ
thuật của học máy như cây quyết định (decision tree), mạng nơ ron nhân tạo (neural
network) .v.v
- Luật kết hợp (association rules) : là dạng luật biểu diễn tri thức ở dạng tương đối

đơn giản. Luật kết hợp có khả năng ứng dụng trong nhiều lĩnh vực khác nhau trong đó có
lĩnh vực viễn thông.
- Khai thác mẫu tuần tự (sequential/temporal patterns): Tương tự như khai thác
luật kết hợp nhưng có thêm tính thứ tự và tính thời gian. Một luật mô tả mẫu tuần tự có
dạng tiêu biểu X -> Y, phản ánh sự xuất hiện của biến cố X sẽ dẫn đến việc xuất hiện biến
cố Y. Hướng tiếp cận này có tính dự báo cao.
- Phân cụm (clustering/segmentation) : Sắp xếp các đối tượng theo từng cụm (số
lượng và tên của cụm chưa được biết trước). Các đối tượng được gom cụm sao cho mức
độ tương tự giữa các đối tượng trong cùng một cụm là lớn nhất và mức độ tương tự giữa
các đối tượng nằm trong các cụm khác nhau là nhỏ nhất. Phân cụm còn được gọi là học
không có giám sát (unsupervised learing).
3) Các phương pháp khai phá dữ liệu (data mining)
Quá trình khai phá dữ liệu là quá trình phát hiện mẫu trong đó giải thuật khai phá dữ liệu
tìm kiếm các mẫu đáng quan tâm theo dạng xác định như các luật, cây phân lớp, hồi quy,
phân nhóm,…
1. Phương pháp quy nạp (Induction)
Một cơ sở dữ liệu là một kho thông tin nhưng các thông tin quan trọng hơn cũng có thể
được suy diễn từ kho thông tin đó. Có hai việc chính để thực hiện việc này là suy diễn và
quy nạp.
- Phương pháp suy diễn: Nhằm rút ra thông tin là kết quả logic của các thông tin
trong cơ sở dữ liệu. Ví dụ như toán tử liên kết áp dụng cho hai bảng quan hệ, bảng
đầu chứa thông tin về các nhân viên và các phòng ban, bảng thứ hai chứa thông tin
về các phòng ban và các trưởng phòng. Như vậy sẽ suy ra mối quan hệ giữa các
nhân viên và trưởng phòng. Phương pháp suy diễn dựa trên các sự kiện chính xác
để suy ra các tri thức mới từ các thông tin cũ. Mẫu chiết xuất được bằng cách sử
dụng phương pháp này thường là các luật suy diễn.
- Phương pháp quy nạp: Phương pháp quy nạp suy ra các thông tin được sinh ra từ
cơ sở dữ liệu. Có nghĩa là nó tự tìm kiếm, tạo mẫu và sinh ra tri thức chứ không
phải bắt đầu với các tri thức đã biết trước. Các thông tin mà phương pháp này đem
lại là các thông tin hay các tri thức cấp cao diễn tả về các đối tượng trong cơ sở dữ

liệu. Phương pháp này liên quan đến việc tìm kiếm các mẫu trong cơ sở dữ liệu.
Trong khai phá dữ liệu, quy nạp được sử dụng trong cây quyết định và tạo luật.
2. Cây quyết định và luật:
Trong lĩnh vực học máy, cây quyết định là một kiểu mô hình dự báo (predictive model),
nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện tượng tới các kết luận về giá trị
mục tiêu của sự vật/hiện tượng. Mỗi một nút trong (internal node) tương ứng với một
biến; đường nối giữa nó với nút con của nó thể hiện một giá trị cụ thể cho biến đó. Mỗi
nút lá đại diện cho giá trị dự đoán của biến mục tiêu, cho trước các giá trị của các biến
được biểu diễn bởi đường đi từ nút gốc tới nút lá đó. Kỹ thuật học máy dùng trong cây
quyết định được gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây
quyết định.
Học bằng cây quyết định cũng là một phương pháp thông dụng trong khai phá dữ liệu.
Khi đó, cây quyết định mô tả một cấu trúc cây, trong đó, các lá đại diện cho các phân loại
còn cành đại diện cho các kết hợp của các thuộc tính dẫn tới phân loại đó[1]. Một cây
quyết định có thể được học bằng cách chia tập hợp nguồn thành các tập con dựa theo một
kiểm tra giá trị thuộc tính [1]. Quá trình này được lặp lại một cách đệ qui cho mỗi tập con
dẫn xuất. Quá trình đệ qui hoàn thành khi không thể tiếp tục thực hiện việc chia tách
được nữa, hay khi một phân loại đơn có thể áp dụng cho từng phần tử của tập con dẫn
xuất. Một bộ phân loại rừng ngẫu nhiên (random forest) sử dụng một số cây quyết định
để có thể cải thiện tỉ lệ phân loại.
Cây quyết định cũng là một phương tiện có tính mô tả dành cho việc tính toán các xác
suất có điều kiện.
Cây quyết định có thể được mô tả như là sự kết hợp của các kỹ thuật toán học và tính
toán nhằm hỗ trợ việc mô tả, phân loại và tổng quát hóa một tập dữ liệu cho trước.
Dữ liệu được cho dưới dạng các bản ghi có dạng:
(x, y) = (x
1
, x
2
, x

3
, x
k
, y)
Biến phụ thuộc (dependant variable) y là biến mà chúng ta cần tìm hiểu, phân loại hay
tổng quát hóa. x
1
, x
2
, x
3
là các biến sẽ giúp ta thực hiện công việc đó
Các kiểu cây quyết định
Cây quyết định còn có hai tên khác:
- Cây hồi quy (Regression tree) ước lượng các hàm giá có giá trị là số thực thay vì
được sử dụng cho các nhiệm vụ phân loại. (ví dụ: ước tính giá một ngôi nhà hoặc
khoảng thời gian một bệnh nhân nằm viện)
- Cây phân loại (Classification tree), nếu y là một biến phân loại như: giới tính
(nam hay nữ), kết quả của một trận đấu (thắng hay thua).
Tạo luật: Các luật được tạo ra nhằm suy diễn một số mẫu dữ liệu có ý nghĩa về mặt
thống kê. Các luật có dạng Nếu P thì Q với P là mệnh đề đúng với phần dữ liệu trong cơ
sở dữ liệu, Q là mệnh đề dự đoán. Ví dụ ta có một mẫu phát hiện được bằng phương pháp
tạo luật: Nếu giá 1 cân táo thấp hơn 5000 đồng thì số lượng táo bán ra sẽ tăng 5%. Những
luật như thế này được sử dụng rất rộng rãi trong việc miêu tả tri thức trong hệ chuyên gia.
Chúng có thuận lợi là dễ hiểu đối với người sử dụng.
Cây quyết định và luật có ưu điểm là hình thức miêu tả đơn giản, mô hình suy diễn khá
dễ hiểu đối với người sử dụng. Tuy nhiên, giới hạn của nó là miêu tả cây và luật chỉ có
thể biểu diễn được một số dạng chức năng và vì vậy giới hạn cả về độ chính xác của mô
hình. Cho đến nay, đã có rất nhiều giải thuật suy diên sử dụng các luật và cây quyết định
được áp dụng trong máy học và trong thống kê.

3. Phân nhóm và phân đoạn (clustering and segmentation):
Kỹ thuật phân nhóm và phân đoạn là những kỹ thuật phân chia dữ liệu sao cho mỗi phần
hoặc mỗi nhóm giống nhau theo một tiêu chuẩn nào đó. Mối quan hệ thành viên của các
nhóm có thể dựa trên mức độ giống nhau của các thành viên và từ đó xây dựng nên các
luật ràng buộc giữa các thành viên trong nhóm. Một kỹ thuật phân nhóm khác là xây
dựng nên các hàm đánh giá thuộc tính của các thành phần như là hàm của các tham số
của các thành phần. Phương pháp này được gọi là phương pháp phân hoạch tối ưu
(optimal partitioning). Một ví dụ ứng dụng của phương pháp phân nhóm theo độ giống
nhau là cơ sở dữ liệu khách hàng, ứng dụng của phương pháp tối ưu ví dụ như phân
nhóm khách hàng theo số các tham số và các nhóm thuế tối ưu có được khi thiết lập biểu
thuế bảo hiểm.
Mẫu đầu ra của quá trình khai phá dữ liệu sử dụng kỹ thuật này là các tập mẫu chứa các
dữ liệu có chung những tính chất nào đó được phân tách từ cơ sở dữ liệu. Khi các mẫu
được thiết lập, chúng có thể được sử dụng để tái tạo các tập dữ liệu ở dạng dễ hiểu hơn,
đồng thời cũng cung cấp các nhóm dữ liệu cho các hoạt động cũng như công việc phân
tích. Đối với cơ sở dữ liệu lớn, việc lấy ra các nhóm này là rất quan trọng.
III. Luật kết hợp
1) Khái niệm về luật kết hợp
Gọi I = {I
1
, I
2,
, I
m
} là tập m thuộc tính riêng biệt, mỗi thuộc tính gọi là một mục. Gọi D
là một cơ sở dữ liệu, trong đó mỗi bản ghi T là một giao dịch và chứa các tập mục, T

I.
Định nghĩa: Một luật kết hợp là một quan hệ có dạng X


Y, trong đó X, Y

I là các tập
mục gọi là itemsets, và
φ
=
YX 
. Ở đây, X được gọi là tiền đề, Y là mệnh đề kết quả.
Hai thông số quan trọng của luật kết hợp là độ hỗ trợ (s) và độ tin cậy (c).
4) Một số tính chất của tập mục phổ biến và luật kết hợp
1. Một số tính chất với tập mục phổ biến:
Giả sử A và B là các tập mục phổ biến, các tính chất của tập mục phổ biến như sau:
(1) Tính chất 1 : Nếu A

B thì supp(A) ≥ supp(B).
Vì tất cả các tác vụ trong D hỗ trợ B thì cũng hỗ trợ A.
(2) Tính chất 2: Một tập chứa một tập không phổ biến thì cũng là tập không phổ biến
(nếu A không phổ biến thì B cũng không phổ biến).
Chứng minh: Nếu A

B thì supp(A) ≥ supp(B) (theo tính chất 1) mà
supp(A)<minsupp thì supp(B)<minsupp.
(3) Tính chất 3: Các tập con của một tập phổ biến cũng là tập phổ biến (nếu A là tập
phổ biến thì B cũng là tập phổ biến)
Nếu B là tập phổ biến trong D tức: supp(B) > minsup. Khi đó mọi tập con A của B
cũng là phổ biến trong D vì supp(A) ≥ ( supp(B) ≥ minsup (theo tính chất 1).
Trường hợp đặc biệt, nếu tập A={i1,i2, , ik} là tập phổ biến thì mọi tập con có
(k-1) mục của nó cũng là phổ biến. Lưu ý ngược lại là không đúng.
4. Một số tính chất với luật kết hợp:
Tính chất 1 : Không hợp các luật kết hợp.

Nếu X ⇒ Z và Y⇒ Z trong D thì không nhất thiết (X∪Y)⇒ Z là đúng.
Xét trường hợp X∩Y=∅ và các tác vụ trong D hỗ trợ Z nếu chỉ nếu chúng hỗ trợ mỗi
X hoặc Y, khi đó luật X∪Y⇒ Z có độ tin cậy là 0%.
Tương tự: X ⇒ Y và X ⇒ Z thì không nhất thiết X ⇒Y ∪ Z
Tính chất 2 : Không tách luật.
Nếu X ∪ Y⇒Z thì X ⇒Y và Y ⇒ Z chưa chắc xảy ra. Nhưng nếu X ⇒Y ∪ Z thì kéo
theo X

Y

X

Z
Ví dụ: Trường hợp Z có mặt trong một tác vụ chỉ khi cả hai X và Y cũng có mặt, tức là
supp(X∪Y)=supp(Z). Nếu độ hỗ trợ của X và Y đủ lớn hơn supp(X∪Y) hay
supp(X)>supp(X∪Y) và supp(Y)>supp(X∪Y) thì hai luật riêng biệt sẽ không đủ độ
tin cậy
Tuy nhiên, đảo lại: X → Y ∪ Z ⇒ X → Y ∧ X → Z
Tính chất 3 : Các luật kết hợp không có tính chất bắc cầu.
Nếu X → Y và Y → Z chúng ta không thể suy ra X →Z.
Ví dụ: Giả sử T(X)⊂(T(Y)⊂(T(Z) tương ứng là tập các tác vụ chứa X,Y,Z và độ tin cậy
cực tiểu là minconf, conf(X→Y)=conf(Y→Z)=minconf
thế thì: conf(X→Z)=minconf
2
<minconf vì minconf<1, do đó luật X→Z không đủ độ
tin cậy.
Tính chất 4:
Nếu luật A→(L-A) không thỏa mãn độ tin cậy cực tiểu thì luật B→(L-B) cũng không
thỏa mãn, với các tập mục L,B,A và B⊆A⊆L.
Vì supp(B)≥(supp(A) (Theo tính chất 1 và định nghĩa độ tin cậy, chúng ta

nhận được:
conf
Ap
Lp
Bp
Lp
BLBconf min
)(sup
)(sup
)(sup
)(sup
))((
<≤=−→
Cũng như vậy: Nếu có luật (L-C)→C thì ta cũng có luật (L-D)→D, với D ⊆C và
D≠∅.
Vì D ⊆ C nên (L-D) ⊇ (L-C), do đó supp(L-D) ≤ supp(L-C)
conf
CLp
Lp
DLp
Lp
min
)(sup
)(sup
)(sup
)(sup






Tức là: conf((L-D)→D ≥ conf((L- C) → C) ≥ minconf.
Các tính chất này sẽ được sử dụng trong thuật toán mô tả ở các phần sau.
5. Độ hỗ trợ
Một tập mục có khả năng là phổ biến và cần phải xác định độ hỗ trợ của nó trong quá
trình duyệt dàn được gọi là một tập mục ứng cử viên. Một hướng tiếp cận phổ biến để
xác định giá trị hỗ trợ của một tập mục là đếm các thể hiện của nó trong CSDL. Với mục
đích đó, một biến đếm được tạo ra và khởi tạo bằng 0 cho mỗi tập mục đang duyệt. Sau
đó, quét qua tất cả các tác vụ và khi tìm được một ứng cử viên là tập con của một tác vụ
thì tăng biến đếm của nó lên. Thông thường, tập con tạo ra và bảng tìm kiếm ứng cử viên
được tích hợp và cài đặt bằng một cây băm hay một cấu trúc dữ liệu tương ứng.
Như vậy, không phải tất cả các tập con của mỗi tác vụ đều được tạo ra mà chỉ
những tác vụ có chứa trong các ứng cử viên hoặc có một tiền tố chung với ít nhất một
ứng cử viên mới được tạo ra.
Một hướng tiếp cận khác để xác định giá trị hỗ trợ của các ứng cử viên là sử dụng
giao tập hợp. Một TID là một khoá-biến nhận dạng tác vụ duy nhất. Với một phần tử đơn
giản, tidlist là tập hợp của các biến nhận dạng tương ứng với các tác vụ có chứa phần tử
này. Do đó, các tidlist cũng tồn tại cho mỗi tập mục X và được biểu diễn bởi X.tidlist.
Phần tử tidlist của một ứng cử viên C=X∪Y xác định bởi: C.tidlist=X.tidlist ∪Y.tidlist.
Trong đó các tidlist được sắp xếp theo thứ tự tăng dần để các phép giao được hiệu quả.
Bằng cách dùng vùng đệm cho tidlist của các ứng cử viên phổ biến như là các kết
quả trung gian, có thể tăng đáng kể tốc độ phát sinh tidlist cho các ứng cử viên tiếp theo.
Cuối cùng các độ hỗ trợ thực sự của ứng cử viên chính là |C.tidlist|
5) Ý tưởng về tìm luật kết hợp:
- Rất tự nhiên, khi tìm kiếm các luật kết hợp trên cơ sở dữ liệu, người ta thường
đặt ra một giới hạn về độ support và confidence của các luật tìm được gọi là
minsup và minconf. Chỉ những luật nào có độ support lớn hơn minsup và độ
confidence lớn hơn minconf mới được quan tâm. Như vậy bài toán tìm luật kết
hợp dương sẽ được phát biểu là :
Tìm tất cả các luật R : X → Y sao cho support(R) > minsup và confidence(R)

> minconf.
• Quy trình tìm luật kết hợp:
Input: S (tập phổ biến), minsup, minconf
Output: X (tập LKH)
B1: Với mọi S
i

Kiểm tra nếu sup(S
i
) < minsup thì loại S
i
ra khỏi S
B2: Với mọi Si
Với mọi A là tập con của S
i
& A khác rỗng
if (conf (A ⇒ (Si - A)) >= minconf)
thêm A vào X
return X
6) Thuật toán Apriori
• Ý tưởng:
- Apriori là một thuật giải được do Rakesh Agrawal, Tomasz Imielinski, Arun
Swami đề xuất lần đầu vào năm 1993. Thuật toán tìm giao dịch t có độ hỗ trợ và
độ tin cậy thoả mãn lớn hơn một giá trị ngưỡng nào đó.
- Thuật toán được tỉa bớt những tập ứng cử viên có tập con không phổ biến
trước khi tính độ hỗ trợ.
- Thuật toán Apriori tính tất cả các tập ứng cử của tập k trong một lần duyệt
CSDL. Apriori dựa vào cấu trúc cây băm. Tìm kiếm đi xuống trên cấu trúc cây
mỗi khi ta chạm lá, ta tìm được một tập ứng cử viên có tiền tố chung được bao
gồm trong giao dịch. Sau đó các tập ứng cử này được tìm trong giao dịch đã được

ánh xạ trước đó. Trong trường hợp tìm thấy biến đếm được tăng lên 1.
- Ký hiệu: Giả sử các mục trong mỗi giao dịch được lưu giữ theo trật tự từ điển.
Gọi số các mục trong một tập mục là kích thước của nó và gọi tập mục có kích
thước k là tập k-mục (tập k mục). Các mục trong mỗi tập mục cũng được giữ ở trật
tự từ điển. Ta sử dụng các ký hiệu sau:
o L
k
: Tập các tập k-mục phổ biến (với độ hỗ trợ cực tiểu minsup nào đó)
o C
k
: Tập các tập k-mục ứng cử (các tập mục phổ biến tiềm năng)
• Thuật toán:
Input: CSDL D, minsup.
Output: Tập các tập mục phổ biến.
1. L
1
= {Các 1 - itemset phổ biến};
2. k=2;
3. While( L
k-1
! =

)
4. { C
k
= apriori_gen(L
k-1
, minsup);// các ứng cử mới theo chương trình con ở
dưới đây.
5. for( ∀ giao dịch t∈ D)

6. { C
t
=Subset (C
k
,t);// ứng cử viên được chứa trong t
7. for (∀ ứng cử c ∈ C
t
)
8. c.count ++;
10. }
11. L
k
={ c

C
k

c.count

minsup}
12. k++;
13. }
14. Return L=

k
L
k'
;
// sinh ứng cử viên mới (**)
Void apriori_gen(L

k-1
, minsup )
1. { for (

itemset l
1

L
k-1
)
2. for (

itemset l
2

L
k-1
)
3. if((L
1
(1)== L
2
(1)&& L
1
(2) == L
2
(2)&& && L
1
(k-2) == L
2

(k-2)) &&
L
1
(k-1) == L
2
(k-1))
4. { c= L
1
kết nối L
2
;
5 if( has_inrequent_subset(c, L
k-1
)) delete c;
6 else add c to C
k
;
7 }
8 return C
k
9. }
Boolean has_infrequent_subset(c,L
k-1
)
1. { for (

(k-1)-subset s

c)
2. if(s ∉ L

k-1
) return TRUE;
3. else return FALSE ;
4. }
• Giải thích:
- Lần duyệt đầu tiên, sẽ tính số lần xuất hiện của mỗi mục để xác định các 1-
itemset phổ biến. Lần duyệt thứ k (k ≥ 2) sẽ bao gồm 2 giai đoạn:
o Tập phổ biến L
k-1
đã tìm thấy ở lần duyệt thứ k-1 được sử dụng để sinh
ra các tập ứng cử viên C
k
bằng việc sử dụng hàm Apriori_gen. Dựa vào CSDL,
tính độ hỗ trợ của các ứng của viên trong C
k
. Các ứng cử viên trong C
k

được chứa trong giao dịch t có thể được xác định một cách hiệu quả bằng việc
sử dụng cây băm được mô tả như sau:
o Trong giai đoạn 2 (giai đoạn sửa, tỉa): xoá bỏ các tập c

C
k
sao cho một
vài (k-1) – tập con của c không nằm trong L
k-1
. Thủ tục này là đầy đủ bởi đối
với bất kì tập nào L
k

với độ hỗ trợ tối thiểu thì các tập con kích cỡ (k-1) cũng có
độ hỗ trợ tối thiểu, do đó nếu ta mở rộng mỗi tập trong L
k-1
với tất cả các tập
mục có thể và sau đó xoá tất cả các tập mà (k-1) – tập con của nó không nằm
trong L
k-1
, ta sẽ nhận được tập các tập trong L
k.
- Việc kết nối là tương đương với việc mở rộng L
k-1
với mỗi mục nằm trong
CSDL và sau đó xoá bỏ các tập này mà đối với nó (k-1) –itemset nhận được bằng
việc xoá đi mục thứ (k-1) không nằm trong L
k-1
. Ở giai đoạn này C
k


L
k
. Với lập
luận như vậy, giai đoạn tỉa là giai đoạn người ta xoá khỏi C
k
tất

cả các tập mà các
(k-1) tập con của nó không nằm trong L
k-1
, cũng không xoá bất kỳ một tập nào có

thể nằm trong L
k
.
- Hàm Subset: Các tập ứng cử viên C
k
được lưu trữ trong một cây băm. Một nút
của cây này hoặc là chứa một danh sách của các tập (nút lá) hoặc bảng băm ( một
nút trong). Trong mỗi một nút trong, mỗi cụm (bucket) của bảng băm chỉ đến một
nút khác. Gốc của cây băm được xem ở độ sâu là 1. Một nút trong ở độ sâu d sẽ
dẫn đến nút ở độ sâu d+1. Các tập được lưu trữ trong các lá. Khi ta bổ sung thêm
một tập c, ta bắt từ nút gốc và đi xuống cây cho đến khi ta chạm vào một lá. Tại
một nút ở độ sâu d, ta quyết định sẽ đi theo cành nào bằng việc áp dụng hàm băm
đối với mục thứ d của tập đó và theo con trỏ trong Bucket tương ứng. Tất cả các
nút ban đầu được tạo ra như là nút lá. Khi số các tập trong một nút lá vượt quá
ngưỡng được chọn, nút lá này được chuyển thành một nút trong.
- Bắt đầu từ nút gốc, hàm Subset tìm tất cả các ứng cử viên được chứa trong giao
dịch t như sau: Nếu ta bắt đầu tại một lá, ta tìm những tập trong nút lá này được
chứa trong giao dịch t và bổ sung các mối quan hệ với chúng đối với tập kết quả
mong muốn. Nếu ta đang ở một nút trong và ta đến được nó bằng việc băm mục i,
ta băm trên mỗi mục đi sau i trong t và áp dụng một cách đệ quy thủ tục đó đối với
nút này trong Bucket tương ứng. Đối với nút gốc, ta băm theo mỗi mục trong t.
- Để thấy được tại sao hàm Subset trả lại tập các tham khảo mong muốn hãy để ý
đến những gì sẽ xảy ra tại nút gốc. Đối với bất kỳ tập c nào được chứa trong giao
dịch t, mục đầu tiên cần phải có trong t. Tại nút gốc, việc băm mọi mục trong t
đảm bảo được rằng ta chỉ không biết các tập mà nó bắt đầu với một mục không
nằm trong t. Những lí luận tương tự áp dụng cho các mức sâu hơn. Vì các mục
trong bất kì tập nào cũng được sắp thứ tự, nếu ta đến được một nút hiện tại bằng
việc băm mục i, ta chỉ cần quan tâm đến những mục trong t nó xuất hiện sau i.
- Bước tỉa: Xoá bớt tất cả các tập mục c ∈ C
k

mà (k-1) tập con của c không phụ
thuộc L
k-1
.
1. for (

tập mục c

C
k
)
2. for (

(k-1) – tập con s của c)
3. if (s

L
k-1
)
4. delete c khỏi C
k
;
• Nhận xét:
- Thuật toán Apriori với n là độ dài lớn nhất của tập được sinh ra. Vậy thì thuật
toán sẽ thực hiện duyệt toàn bộ các giao tác n+1 lần. Như vậy, nếu bỏ qua thời
gian so sánh tìm sự xuất hiện của một mẫu trong một giao tác thì độ phức tạp của
thuật toán Apriori là O(A) > O(n*L) trong đó L là kích thước CSDL còn n là độ
dài cần đạt được của các mẫu.
- Ngoài ra, nếu độ hỗ trợ tối thiểu minsup bị thay đổi thì thuật toán sẽ phải thực
hiện lại từ đầu, điều này sẽ rất mất thời gian. Thuật toán Apriori được xây dựng

nhằm phát hiện các luật kết hợp giữa các đối tượng với độ hỗ trợ và độ tin cậy tối
thiểu.
PHẦN II. TÌM HIỂU CÁC CHỨC NĂNG KHAI PHÁ DỮ LIỆU TRONG MS SQL
SERVER 2008
I. Tổng quan về hệ quản trị cơ sở dữ liệu Microsoft SQL Server
2008.
1) Tổng quan về hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2008.
Hệ quản trị cơ sở dữ liệu Microsoft SQL Server (MSSQL) là một trong những
hệ quản trị cơ sở dữ liệu thông dụng hiện nay. Đây là hệ quản trị cơ sở dữ liệu thường
được sử dụng với các hệ thống trung bình, với ưu điểm có các công cụ quản lý mạnh
mẽ giúp cho việc quản lý và bảo trì hệ thống dễ dàng , hỗ trợ nhiều phương pháp lưu
trữ, phân vùng và đánh chỉ mục phục vụ cho việc tối ưu hóa hiệu năng . Với phiên
bản MSSQL 2008 Microsoft đã có những cải tiến đáng kể nâng cao hiệu năng, tính
sẵn sàng của hệ thống , khả năng mở rộng và bảo mật . Phiên bản mới này còn cung
cấp nhiều công cụ cho người phát triển ứng dụng được tích hợp với bộ Visual Studio
do Microsoft cung cấp. Dưới đây là mô hình về các dịch vụ của SQL server 2008.
Các dịch vụ của SQL Server 2008
MSSQL 2008 có 4 dịch vụ lớn : Database Engine, Intergration Service, Reporting
service, Analysis Services. Trong phiên bản MSSQL 2008 này đã có những cải tiến
đáng kể như sau.
• DataBase Engine : được phát triển để thực thi tốt hơn với việc hỗ trợ cả dữ liệu
có cấu trúc và dữ liệu phi cấu trúc( XML).
• Khả năng sẵn sàng của hệ thống được nâng cao hơn vì MSSQL 2008 hỗ trợ các
chức năng : cơ sở dữ liệu gương (Database mirroring), failover clustering , snapshots
và khôi phục dữ liệu nhanh.
• Việc quản lý chỉ mục được thực hiện song song với việc hoạt động của hệ
thống. Người dùng có thể thêm chỉ mục, xây dựng lại chỉ mục hay xóa một chỉ mục
đi trong khi hệ thống vẫn được sử dụng.
• Chức năng phân vùng dữ liệu được hỗ trợ: Trong phiên bản này người dùng có
thể phân vùng các bảng và chỉ mục cũng như quản lý phân vùng dữ liệu một cách dễ

dàng. Việc hỗ trợ phân vùng dữ liệu giúp nâng cao hiệu năng hoạt động của hệ thống.
• Dịch vụ đồng bộ hóa dữ liệu được mở rộng với việc hỗ trợ mô hình đồng bộ
hóa ngang hàng. Đây là dịch giúp đồng bộ hóa dữ liệu giữa các máy chủ dữ liệu, dịch
vụ này làm khả năng mở rộng của hệ thống được nâng cao.
• Dịch vụ tích hợp (Integration Service ) thiết kế lại cho phép người dùng tích
hợp dữ liệu và phân tích dữ liệu từ nhiều nguồn khác nhau. Hỗ trợ việc quản lý chất
lượng dữ liệu và làm sạch dữ liệu, một công việc quan trọng trong tiến trình ETL.
• Dịch vụ phân tích dữ liệu (Analysis Service ): cung cấp khung nhìn tích hợp và
thống nhất về dữ liệu cho người dùng, hỗ trợ việc phân tích dữ liệu .
• Công cụ khai phá dữ liệu (Data mining ) được tích hợp hỗ trợ nhiều thuật toán
khai phá dữ liệu, điều này hỗ trợ cho việc phân tích và khai phá dữ liệu và xây dựng
các hệ thống hỗ trợ ra quyết định cho người quản lý.
• Dịch vụ xây dựng quản lý báo cáo (Reporting Service) được dựa trên nền tảng
quản trị doanh nghiệp thông minh và được quản lý qua dịch vụ web. Báo cáo có thể
được xây dựng với ngôn ngữ truy vấn MDX. Việc xây dựng báo cáo dễ dàng thông
qua các công cụ trên Business Intelligent, người dùng truy cập báo cáo dễ dàng và
trích xuất ra nhiều định dạng khác nhau thông qua trình duyệt web.
7) Tổng quan về SQL Server Integration Service(SSIS).
SSIS là một thành phần của SQL Server, nó được phát triển từ công cụ Data
Transformation Services của phiên bản SQL Server 7.0, một công cụ để thực thi việc
chuyển đổi dữ liệu. SSIS là nền tảng cho việc tích hợp dữ liệu , các chức năng của nó
nhanh và mềm dẻo cho việc phát triển tiến trình ETL cho xây dựng kho dữ liệu ,
ngoài ra SSIS còn cung cấp các công cụ tự động bảo trì và tự động cập nhật dữ liệu
cho cơ sở dữ liệu nhiều chiều và cubes.
SSIS cung cấp một giao diện phát triển với các tool bằng đồ họa cho việc xây dựng
tiến trình. Người phát triển sử dụng công cụ phát triển SQL Server Business
Intelligence Development Studio (BIDS), đây là công cụ dựa trên bộ Microsoft
Visual Studio . Người dùng có thể kéo và thả các đối tượng của SSIS trong giao diện
đồ họa hay có thể lập trình bằng mã lệnh trong giao diện soạn thảo.
Công cụ phát triển SSIS

Các đối tượng của SSIS bao gồm
- Các kết nối : chứa đựng những thông tin để kết nối tới nguồn dữ liệu
- Các nhiệm vụ : Đây là một đơn vị thực thi trong SSIS , dùng để thực thi
một nhiệm vụ như: truy vấn, chạy một chương trình ứng dụng , hay thực thi công việc
bảo trì hệ thống.
- Các ràng buộc: Các nhiệm vụ liên kết với nhau bằng các ràng buộc, các
ràng buộc chỉ định nhiệm vụ nào được thực hiện sau khi một nhiệm vụ kết thúc tùy
theo kết quả của nhiệm vụ vừa hoàn thành.
- Các xử lý sự kiện: SSIS cho phép thực thi một số thao tác để xử lý khi có
một sự kiện xảy ra. Ví dụ như việc làm sạch dữ liệu khi có lỗi xảy ra.
- Các biến: các nhiệm vụ có thể liên kết với các biến để lưu trữ kết quả, thực
hiện việc quyết định (như trong ràng buộc, hay ở một nhiệm vụ khác), hay thực thi
một số cấu hình.
SSIS cung cấp công cụ để thiết lập luồng dữ liệu(DataFlow), các thành phần của
luồng dữ liệu dùng để tạo ra tiến trình ETL. DataFlow là thành phần quan trọng nhất
trong một package của SSIS, bao gồm rất nhiều thành phần để thiết lập việc trích
xuất, biến đổi dữ liệu, và nạp dữ liệu vào kho dữ liệu. Đây là công cụ rất mạnh cho
việc xây dựng tiến trình ETL.
8) Tổng quan về SQL Server Analysis Service
SSAS trong là một trong những dịch vụ chính của SQL Server 2008 dùng để xây
dựng các chiều và cubes cho DWH, trong phiên bản mới này còn hỗ trợ một số thuật
toán khai phá dữ liệu điều này cung cấp cho người quản lý có cái nhìn sâu sắc về dữ
liệu của họ hơn. SSAS là một phần của nền tảng quản lý doanh nghiệp thông minh
(BI), nó không chỉ là một thành phần của SQL Server, nó còn được sử dụng trên
.NET Framework và môi trường phát triển Visual Studio.
SSAS trong SQL Server 2008 đã được tái kiến trúc nhằm nâng cao khả năng
mở rộng và tính tin cậy, trong môi trường doanh nghiệp, và khả năng bảo mật dữ
liệu. SSAS cung cấp khả năng tích hợp nhiều đối tượng (instance) của SSAS điều
này tăng khả năng mở rộng ngoài ra dịch vụ này còn cung cấp các thuật toán để quản
lý hiệu quả các cubes lớn trong một đối tượng. SSAS 2008 cung cấp đa dạng các công

cụ để tạo OLAP (OnLine Analytical Processing) một cách hiệu quả và quản lý dễ
dàng.
Kiến trúc của SSAS
Trong phiên bản mới này SSAS hỗ trợ XML theo chuẩn XML/A. Điều này có
nghĩa việc tra đổi dữ liệu giữa SSAS với các client là XML, sự thay đổi này nâng
cao khả năng tương tác giữa các máy client và máy chủ. Như ở hình trên, SSAS
cung cấp ba kiểu kết nối với client. Việc lưu trữ siêu dữ liệu trong cũng được thực
hiện dưới dạng XML. Ngoài ra trong phiên bản này còn cho phép người dùng tùy
chọn việc lưu trữ dữ liệu và dữ liệu tổng hợp dưới dạng đối tượng của SSAS hay
dạng cơ sở dữ liệu quan hệ. Việc lưu trữ dữ liệu theo định dạng đối tượng của SSAS
có thể xử lý tốt hơn và truy vấn nhanh hơn dạng cơ sở dữ liệu quan hệ. Có 3 cách
lưu trữ dữ liệu chính trong SSAS.
- MOLAP(MultiDemension OnLine Analytical Processing) Đây là mô hình lưu
trữ mà dữ liệu theo định dạng của SSAS. Cách lưu giữ này cho hiệu quả truy vấn tốt
nhất và có thể xử lý các tính toán phức tạp. Điểm yếu của cách truy vấn này là tốn
dung lượng và không thể xem được dữ liệu mới cho đến khi xây dựng lại cubes.
- ROLAP(Relational OLAP) đây là cách lưu trữ mà dữ liệu chính được lưu trữ
trong cơ sở dữ liệu quan hệ. Cách truy vấn trên SSAS được thay đổi sang kiểu truy
vấn trên cơ sở dữ liệu quan hệ mỗi khi thực thi điều này làm giảm hiệu năng của truy
vấn, các truy vấn thường rất chậm so với mô hình trên. Điểm mạnh của cách lưu trữ
này là dung lượng cube chỉ giới hạn bởi dung lượng của cơ sở dữ liệu quan hệ.
- HOLAP (Hybrid OLAP) : Đây là mô hình tích hợp của cả hai mô hình trên dữ
liệu thông thường được lưu trữ dưới dạng cơ sở dữ liệu quan hệ trong khi các dữ liệu
tổng hợp được lưu trữ dưới dạng đối tượng SSAS. Nếu dữ liệu yêu cầu là dạng tổng
hợp thì sẽ thực hiện truy vấn tại SSAS còn nếu dữ liệu yêu cầu là dạng chi tiết truy
vấn sẽ được dịch và truy vấn tại cơ sở dữ liệu quan hệ. Điều này làm tăng tốc độ xử lý
của mô hình ROLAP và tận dụng được khả năng lưu trữ của mô hình ROLAP.
Dịch vụ SSAS của SQL Server 2005 cung cấp cho người dùng các tính năng mạnh
mẽ trong phân tích dữ liệu. Đây là công cụ mạnh để xây dựng các hệ thống xử lý
giao dịch trực tuyến.

9) Tổng quan về ngôn ngữ truy vấn MDX.
Ngôn ngữ MDX(MultiDemensional eXpression ) là ngôn ngữ truy vấn cho cơ
sở dữ liệu nhiều chiều, nó tương tự ngôn ngữ SQL cho cơ sở dữ liệu dạng quan hệ ,
tuy nhiên đây là ngôn ngữ tính toán vì thế nó tương có cú pháp giống công thức của
bảng tính. MDX do Microsoft giới thiệu vào năm 1997 cùng với SQL Server 7.0
nhanh chóng được các nhà phát triển chấp nhận đã trở thành chuẩn cho hệ thống
OLAP. Từ năm 2001 khi XMLA ra đời MDX được mở rộng và hỗ trợ truy vấn với
MDX (MDXML).
Ngôn ngữ MDX hỗ trợ mạnh cho tính toán trên khối dữ liệu nhiều chiều, nó hỗ
trợ việc truy cập dữ liệu một cách trực quan và dễ dàng. Người dùng có thể trích xuất
dữ liệu từ cube với số chiều bất kỳ. MDX có thể trả lời được các câu hỏi phức tạp
trong kinh doanh ở thế giới thực như: trong các khu vực bán được nhiều sản phẩm
nhất đâu là dòng sản phẩm bán chạy nhất? .
MDX được xây dựng cho các hệ thống phân tích dữ liệu chính vì thế nó có thể
xử lý được những truy vấn một cách dễ dàng. MDX có thể xử lý dữ liệu một cách
mềm dẻo, kết quả trả về của MDX cũng rất linh hoạt. Các phép truy vấn phức tạp
trong SQL như pivot được sử dụng một cách dễ dàng trong MDX.
MDX không hỗ trợ các ngôn ngữ định nghĩa dữ liệu (DDL) tuy nhiên ngôn
ngữ thao tác dữ liệu (DML) của MDX có hỗ trợ thực thi một số thao tác định nghĩa
dữ liệu.
Cấu trúc của MDX giống như SQL nhưng mở rộng hơn để thao tác với cơ sở
dữ liệu nhiều chiều. Câu truy vấn MDX có cấu trúc như sau :
SELECT [Mô tả về chiều thứ nhất],
[Mô tả về chiều thứ hai]…
FROM [Mô tả về khối dữ liệu]
WHERE [điều kiện cắt các lớp]
Mệnh đề SELECT dùng để xác định các chiều cảu tập hợp kết quả.
Mệnh đề FROM xác định nguồn dữ liệu(cube) dùng để lấy dữ liệu
Mệnh đề WHERE dùng để xác định chiều cắt dữ liệu , nhằm lọc dữ liệu đầu ra.
Ví dụ:

SELECT {[Measures].[TongtinTinhtien],
[Measures].[TongtinTinhtien]} ON COLUMNS,
{ [Dim Date].[Full Date].members }ON ROWS
FROM [VMG DWH]
WHERE [Dim Dau So].[Dau So].[8768]
Kết quả trả về như hình 3.4

×