1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu về ngôn ngữ truy vấn đa chiều mdx

15 3K 19

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 813,26 KB

Nội dung

2 MỞ ĐẦU Microsoft SQL Server OLAP Services là một dịch vụ cung cấp cho người dùng kiến trúc phục vụ cho việc lưu trữ và truy cập dữ liệu dưới hình thức đa chiều.Những dữ liệu được lưu

Trang 1

1

ĐẠI HỌC QUỐC GIA TP.HCM

TRƯỜNG ĐẠI HỌC KINH TẾ - LUẬT KHOA TIN HỌC QUẢN LÝ

- -CHUYÊN ĐỀ PHÂN TÍCH SỐ LIỆU

Giáo viên hướng dẫn: Ths Hồ Trung Thành

Thành viên nhóm :

Cao Thiện Hảo K08406105x Nguyễn Quang Hiển K084061056

Vũ Văn Thành K084061110 Châu Thanh Tùng K08406xxxx

Trang 2

2

MỞ ĐẦU

Microsoft SQL Server OLAP Services là một dịch vụ cung cấp cho người dùng kiến trúc phục vụ cho việc lưu trữ và truy cập dữ liệu dưới hình thức đa chiều.Những dữ liệu được lưu dưới dạng đa chiều này có thể được tổng hợp, tổ chức và lưu trữ nhằm nhanh chóng đáp ứng được những yêu cầu truy vấn của người sử dụng.Và để thực hiện những truy vấn cho hình thức dữ liệu này, Microsoft đã cung cấp cho chúng ta ngôn ngữ truy vấn MultiDimensional eXpressions (MDX)

MDX chính là ngôn ngữ đầy đủ có thể hỗ trợ người sử dụng thực hiện việc truy vấn trên các dữ liệu khối, và khả năng truy vấn của ngôn ngữ này cũng chính là trọng tâm

mà tiểu luận này quan tâm đến Để có thể minh họa đầy đủ và thuyết phục các khả năng đó, nhóm sẽ sử dụng CSDL Northwind mẫu của Microsoft và khối dữ liệu NorthwindDW do nhóm 15 lớp K07406 trường Đại học Kinh tế - Luật đã xây dựng trước đây

Trang 3

3

1 Giới thiệu

1.1 Giới thiệu ngôn ngữ MDX

Ngôn ngữ MDX (MultiDemensional eXpression) là ngôn ngữ truy vấn cho cơ

sở dữ liệu đa chiều, nó tương tự ngôn ngữ SQL cho cơ sở dữ liệu 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 đã 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 đa 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 đa chiều Câu truy vấn MDX có cấu trúc như sau :

Trang 4

4

Trong đó:

 Mệnh đề SELECT dùng để xác định các chiều của tập hợp kết quả Mệnh đề này 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

 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

Trong cấu trúc của MDX và cú pháp truy vấn SQL ta nhận thấy một số điểm tương đồng như đều có các mệnh đề SELECT, FROM, WHERE, vẫn có thể chứa các subquery, tuy nhiên chúng có một 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ó

 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

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 lớp]

Trang 5

5

mặc định của nó Mệnh đề WHERE có thể thay đổi tiến trình lọc cho một chiều nào đó, giúp tinh chỉnh dữ liệu kết quả

1.2 Soạn thảo MDX với SQL Server

Đăng nhập vào SQL Server với Server type là Analysis Services

Click chọn vào icon MDX để tạo ra một file soạn thảo câu lệnh MDX File này là file text và có phần mở rộng là *.mdx

Trang 6

6 Màn hình Connect to Analysis Services hiện lên, ta chọn Server name và click

connect để tiếp tục

Trang 7

7

Giao diện làm việc với MDX Trong đó:

Vùng 1: là vùng Metadata

Vùng 2: là vùng soạn thảo MDX

Vùng 3: là vùng hiển thị kết quả từ câu truy vấn MDX

2 Sơ lượt về CSDL và Nhà kho dữ liệu mẫu dùng để thực hiện các ví dụ

Trong quá trình nghiên cứu về MDX, nhóm sử dụng cơ sở dữ liệu Northwind cùng với kho dữ liệu NorthwindDW do nhóm 15 lớp K07406 xây dựng để làm kho dữ liệu mẫu và thực hiện truy vấn bằng MDX trên kho dữ liệu này Do đó trong phần này, nhóm xin mô tả lại kho dữ liệu này

Hình Lượt đồ bông tuyết của kho NorthwindDW

Trang 8

8

Kho dữ liệu sẽ chứa thông tin tổng hợp về những giao dịch mua hàng của khách hàng, bao gồm thông tin khách hàng, nhân viên, sản phẩm, nhà cung cấp, công ty vận chuyển

Dữ liệu bán hàng được lưu trữ theo thời gian, phục vụ các yêu cầu về phân tích, thống kê liên quan đến vấn đề bán hàng của những nhà quản lý để có thể đưa ra những quyết định trong kinh doanh

2.1 Các bảng chiều

Primary dimensions:

DimTime (DateKey, Date, Month, Quarter, Year)

DimCustomer (CustomerID, CompanyName, ContactName, Phone,

Address, City, Region, Country)

DimShipper (ShipperID, CompanyName, Phone)

DimEmployee (EmployeeID, FullName, Title, BirthYear, HireYear,

Phone, Address, City, Region, Country)

DimProduct (ProductID, ProductName, Category, SupplierID,

QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder)

-Secondary dimension:

DimSupplier (SupplierID, CompanyName, Phone, Address, City,

Region, Country)

2.2 Bảng sự kiện

FactOrder (OrderID, ProductID, CustomerID, EmployeeID, ShipperID,

OrderDate, RequiredDate, ShippedDate, UnitPrice, Quantity,

Discount, Total)

3.1 Hàm CrossJoin()

Tích các thành viên hay các bộ trong hai tập hợp khác nhau

Ví dụ: cho biết số lượng sản phẩm của từng nhân viên bán được theo năm

Trang 9

9

Kết quả:

3.2 Hàm Filter()

Thu gọn một tập hợp bằng cách chỉ lấy những phần tử thỏa mãn các tiêu chí nào đó

Cú pháp : Filter (Set_Expression, Logical_Expression)

Ví dụ: Cho biết tên các sản phẩm có tổng số lượng lớn hơn 500 và nhỏ hơn

1000

Kết quả:

SELECT crossjoin([Dim Employee].[Full Name].members,

[Dim Product].[Product Name]) on Columns, [Dim Time].[Year].members on Rows

FROM [Cube_NorthwindDW]

WHERE [Measures].[Quantity]

SELECT FILTER([Dim Product].[Product Name].MEMBERS,

[Measures].[Quantity] >500 AND [Measures].[Quantity] <1000) ON COLUMNS, [Dim Time].[Year].MEMBERS ON ROWS

FROM [Cube_NorthwindDW]

WHERE [Measures].[Quantity]

Trang 10

10

3.3 Hàm Order()

Sắp xếp giá trị của một tập hợp theo các điều kiện

Cú pháp :

Numeric expression Order(Set_Expression, Numeric_Expression [ , { ASC | DESC | BASC | BDESC } ] )

String expression Order(Set_Expression, String_Expression [ , { ASC | DESC | BASC | BDESC } ] )

Input :

Một tập hợp, một biểu thức luận lý Một biểu thức trả về giá trị số/ chuỗi Output : một tập hợp đươc sắp sếp theo một tiêu chỉ định trước

ASC : sắp xếp theo thứ tự tăng dần

DESC : sắp xếp theo thứ tự giảm dần

Ví dụ: Hãy sắp xếp tổng số lượng sản phẩm của các năm theo thứ tự giảm dần

Kết quả:

Select [Measures].[Quantity] on Columns,

Order([Dim Time].[Year].members,

[Measures].[Quantity],Desc) on Rows From [Cube_NorthwindDW]

Trang 11

11

3.4 Hàm TopCount()

Sắp xếp một tập hợp thứ tự giảm dần và trả về số quy định của các yếu tố có giá trị cao nhất

Cú pháp :

TopCount (Set_Expression, Count, Numeric_Expression])

Input:

Một tập hợp, một biểu thức luận lý Một con số để xác định số lượng các giá trị trả về Một biểu thức trả về giá trị số để sắp xếp giá trị trả về Output :

Một tập hợp các yếu tố có giá trị cao nhất theo quy định

Ví dụ: Hãy cho biết top 5 doanh thu theo tháng

Kết quả:

Select [Measures].[Total] on Columns,

TopCount([Dim Time].[Month].members,

5,[Measures].[Total]) on rows From [Cube_NorthwindDW]

Trang 12

12

3.5 Hàm ParallelPeriod()

Trả về một giá trị từ một khoảng thời gian trước trong cùng một vị trí tương đối theo một giá trị quy định cho trước

Cú pháp :

ParallelPeriod( [ Level_Expression [ ,Index [ , Member_Expression ] ] ] )

Input :

Một tập hợp, một biểu thức luận luận lý

Một giá trị xác định thời gian song song so sánh

Một biểu thức trả về một đơn vị(một thành viên)

Output :

Trả về giá trị của thời gian song song theo quy định

Quy ước:

Giá trị mặc định Index = 1

3.6 Hàm StrToMember()

Chuyển một chuổi được nhập vào từ tham số sang Member

Trả về các giá trị theo quy định của một biểu thức đa chiều (MDX), định dạng chuỗi

Cú pháp :

StrToMember(Member_Name [,CONSTRAINED]) Input : Một biểu thức chuỗi giá trị quy định cụ thể, trực tiếp hoặc gián tiếp, một thành viên

Ouput : member

Nếu không có cờ CONSTRAINED, tham số Member_Name có thể chứa một vài mệnh đề MDX, ngược lại thì chỉ duy nhất một member name được sử dụng Constrained này được tạo ra nhằm tránh cho server không bị tấn công theo dạng injection

Trang 13

13

Ví dụ:

Kết quả:

3.7 Hàm IIf()

Trả về một trong hai giá trị được xác định bởi một phép thử logic

Cú pháp:

IIf(Logical_Expression, Expression1, Expression2) Input :

Một biểu thức logic Hai giá trị (biểu thức đa chiều) trả về Output : Một trong hai giá trị trả về ở input

Ví dụ: Viết câu MDX ghi ra nhận xét rằng: nếu tổng doanh thu trong một năm lớn hơn hoặc bằng 1,000,000 thì hiển thị “>=1,000,000” Ngược lại hiển thị “< 1,000,000”

Select {strToMember('[Dim Employee].[Full Name].[Janet

Leverling]')} on Columns, [Measures].[Total] on rows

From [Cube_NorthwindDW]

With Member NhanXet As

IIF([Measures].[Total]>=1000000,

">=1,000,000","<1,000,000") Select {[Measures].[Total],NhanXet}on Columns,

[Dim Time].[Year].members on Rows From [Cube_NorthwindDW]

Trang 14

14

Kết quả

3.8 Hàm Lag()

Trả 1 giá trị là 1 con số cụ thể chỉ vị trí trước 1 giá trị được xác định tại đầu vào của hàm (Index)

Cú pháp :

Member_Expression.Lag(Index)

- Index : vị trí mức độ xác định bởi một hệ thống phân cấp nào đó

- Index = 0 : Trả về chính bản than nó

- Index = 1 : Trả về giá trị kề trước

- Index = -1 : Trả về giá trị kế tiếp

- Index = n : Trả về giá trị kề -n

Select [Dim Employee].[Full Name].[Laura Callahan].lag(1) on 0 from [Cube_NorthwindDW]

Where [Measures].[Total]

Trang 15

15

Hàm Lead(index) cũng là một hàm tương tư với Lag, tuy nhiên ứng với cùng một giá trị Index thì hai hàm có chiều di chuyển ngược nhau

4 Tài liệu tham khảo

[1] Thư mục MDX (tài liệu tham khảo môn học) _ ThS.Hồ Trung Thành

[2] Nghiên cứu công nghệ OLAP và ứng dụng _ Trần Vĩnh Tiến Đức, Nguyễn Phú Thịnh

[3] Áp dụng Data Warehouse trong phân tích thông tin về các dịch vụ giá trị gia tăng trên điện thoại_ Nguyễn Lương Thái Đức

[4] Đồ án môn học Phân tích số liệu_ Nhóm 15 (K07406)

[5] http://bis.net.vn/forums/t/560.aspx

[6] http://www.mosha.com/msolap/articles/MDXForEveryone.htm

[7] http://www.youtube.com/watch?v=h1vjGEkLU0s&feature=related

[8] http://www.iccube.com/support/documentation

[9] http://technet.microsoft.com/en-us/library/ms145484.aspx

5 Kết luận

Nội dung của tiểu luận này là một cái nhìn tổng quan về khả năng truy vấn và phân tích dữ liệu của ngôn ngữ MDX Tiểu luận đã nêu được rằng MDX là gì, cách trích xuất, truy vấn dữ liệu từ khối dữ liệu đa chiều bằng MDX như thế nào,… cùng với một số vấn đề khác mà nhóm nghiên cứu đã rút ra được sau khi tham khảo nhiều nguồn tài liệu và thực hành

Không chỉ riêng trong các CSDL quản lý hàng hóa như CSDL Northwind được dùng để minh họa, MDX cũng có thể được ứng dụng rộng rãi để có thể truy vấn,trích xuất dữ liệu trong các CSDL của các hoạt động kinh doanh khác trong doanh nghiệp Có thể nói MDX là một công cụ đắc lực hỗ trợ cho các doanh nghiệp nhìn nhận lại toàn diện các hoạt động đã qua của mình, cũng như tìm ra, dự báo những xu thế, nhưng nhu cầu mới trong tương lai để có thể đón đầu nhịp phát triển của thị trường, nắm bắt được đúng lúc các cơ hội tiềm năng, là những điều mang yếu tố quyết định trong thành bại của một doanh nghiệp

Ngày đăng: 16/10/2014, 14:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w