TỔNG QUAN VỀ NGÔN NGỮ TRUY VẤN KHO DỮ
LIỆU MDX
(Multi Dimensional eXpressions - MDX)
Ngôn ngữ MDX 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 tự 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 và đã 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ừ cubes 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 :
Mệnh đề
SELECT dùng để xác định các chiều của 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ụ :
Câu lệnh trên thực hiện việc truy vấn
lấy dữ liệu từ kho dữ liệu chủ đề Tổng hợp sản lượng khách hàng (SLKH) bao gồm
: Lấy tổng số lượng hành khách, số lượng khách nước ngoài, số lượng khách nội địa
( xếp theo cột) của từng hãng hàng không (xếp theo hàng) trong năm 2011. Kết quả
trả về như hình sau :
Truy vấn MDX có thể chứa các thông tin
như sau :
- Số lượng chiều (tối
đa 128 chiều).
- Các thành viên của
mỗi chiều cho từng chiều.
- Tên khối dữ liệu.
- Các thành viên từ
một chiều dùng để cắt (lọc).
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ó alias (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ó.
-
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. Thông tin từ các khối khác có thể được tham khảo theo từng giá
trị bằng cách dùng hàm LookupCube.
- 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ả.