Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Bài báo cáo thực tập-tìm hiểu về ngôn ngữ truy vấn đa chiều mdx...

Tài liệu Bài báo cáo thực tập-tìm hiểu về ngôn ngữ truy vấn đa chiều mdx

.PDF
15
2784
72

Mô tả:

ĐẠ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 1 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. 2 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 : 3 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] 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 4 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 5 Màn hình Connect to Analysis Services hiện lên, ta chọn Server name và click connect để tiếp tục. 6 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. 7 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. Một số hàm thông dụng trong MDX. 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. 8 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] 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. 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] Kết quả: 9 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. Select [Measures].[Quantity] on Columns, Order([Dim Time].[Year].members, [Measures].[Quantity],Desc) on Rows From [Cube_NorthwindDW] Kết quả: 10 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. Select [Measures].[Total] on Columns, TopCount([Dim Time].[Month].members, 5,[Measures].[Total]) on rows From [Cube_NorthwindDW] Kết quả: 11 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. 12 Ví dụ: Select {strToMember('[Dim Employee].[Full Name].[Janet Leverling]')} on Columns, [Measures].[Total] on rows From [Cube_NorthwindDW] 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” 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] 13 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] 14 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. 15
- Xem thêm -

Tài liệu liên quan