Hướng dẫn SQL & XQuery cho IBM DB2, Phần 4: Phân tích dữ liệu potx

39 412 0
Hướng dẫn SQL & XQuery cho IBM DB2, Phần 4: Phân tích dữ liệu potx

Đ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

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 4: Phân tích dữ liệu Sử dụng các truy vấn nâng cao để phân tích dữ liệu Pat Moffatt, Giám đốc Chương trình quản lý thông tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch các phần kỹ năng, IBM Jessica Cao, Chuyên viên phát triển các công cụ đào tạo, IBM Tóm tắt: Hướng dẫn này mô tả cách viết các truy vấn có yêu cầu phân tích dữ liệu cơ bản. Phần lớn các truy vấn chứa đựng các tính toán tuần tự, hay là những tính toán hoạt động trên một tập hợp có sắp thứ tự của các hàng -– những truy vấn thường gặp trong khi phân tích kinh doanh. Các chức năng xử lý phân tích trực tuyến (OLAP) tạo ra khả năng trả về các thông tin xếp hạng, đánh số hàng, và các hàm cột hiện có như một giá trị vô hướng trong một kết quả truy vấn. Hướng dẫn này là Phần 4 của loạt tài liệu hướng dẫn SQL & XQuery cho IBM® DB2® . Trước khi bạn bắt đầu Về loạt bài này Loạt tài liệu hướng dẫn này dạy các chủ đề SQL từ cơ bản đến nâng cao và các chủ đề XQuery cơ bản. Nó cũng chỉ ra cách diễn đạt các câu hỏi nghiệp vụ thường gặp bằng các truy vấn cơ sở dữ liệu sử dụng các câu truy vấn SQL hay các câu truy vấn XQuery. Những người phát triển ứng dụng và những người quản trị cơ sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình. Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt hướng dẫn này như một phần trong chương trình giảng dạy cơ sở dữ liệu của họ. Tất cả các ví dụ trong bài này dựa trên Aroma, một cơ sở dữ liệu mẫu có chứa các dữ liệu doanh thu về các sản phẩm cà phê và chè được bán trong các cửa hàng khắp nước Mỹ. Mỗi ví dụ gồm có ba phần:  Một câu hỏi kinh doanh, được diễn đạt bằng ngôn ngữ hàng ngày  Một hoặc nhiều ví dụ truy vấn, được biểu diễn bằng SQL hay Xquery  Một bảng các kết quả được cơ sở dữ liệu trả về Cách trình bày hướng dẫn này cho phép các học viên tìm hiểu về ngôn ngữ SQL và XQuery. Cũng như với bất kỳ việc học tập nào, việc bổ sung thêm các bài tập thực hành là rất quan trọng. Dữ liệu và các định nghĩa bảng tạo điều kiện thuận lợi cho các bài tập thực hành này. Đối với các sinh viên sử dụng tài liệu này như một phần của khoá học, hãy nhận từ thầy hướng dẫn của mình các chỉ dẫn để kết nối tới cơ sở dữ liệu Aroma và tìm hiểu mọi sự khác biệt giữa hướng dẫn và cài đặt tại máy cục bộ của mình. Hướng dẫn này được viết cho Express-C 9 DB2 trên nền UNIX®, Linux® và Windows® (trước đây gọi là Viper). Về hướng dẫn này Hướng dẫn này mô tả cách viết các truy vấn có yêu cầu một số cách phân tích dữ liệu. Nhiều câu hỏi có chứa các tính toán tuần tự, hay các tính toán hoạt động trên một tập hợp có sắp xếp thứ tự của các hàng, các câu hỏi thường gặp trong khi phân tích hoạt động kinh doanh :  Tổng số luỹ kế (hay tổng số dịch chuyển) theo tháng là bao nhiêu?  Trung bình dịch chuyển theo tuần là bao nhiêu?  Kết quả xếp hạng các số doanh thu hàng tháng như thế nào?  Tỷ số doanh thu hiện tại hàng tháng với doanh thu hàng năm là bao nhiêu? DB2 của IBM cung cấp một cách hiệu quả để trả lời các câu hỏi loại này khi sử dụng các hàm SQL OLAP tiêu chuẩn có trong DB2 9. Các chức năng xử lý phân tích trực tuyến (OLAP) tạo ra khả năng trả về các thông tin xếp hạng, đánh số hàng, và các hàm cột hiện có như một giá trị vô hướng trong một kết quả truy vấn. Một hàm OLAP có thể được chứa trong các biểu thức trong một danh sách chọn lựa hay mệnh đề ORDER BY của một câu lệnh chọn. Hướng dẫn này gồm có một loạt các ví dụ với truy vấn kinh doanh và cú pháp kết hợp được trình bày trong mỗi trường hợp. Trước khi thực hiện các truy vấn này, hãy đọc các mô tả toàn bộ các chức năng OLAP trong SQL Reference Guide (Hướng dẫn Tham khảo SQL) . Hướng dẫn này cũng cho thấy cách sử dụng các hàm vô hướng để tính toán và trích ra các thông tin ngày tháng, ví dụ như tên ngày trong tuần và tên tháng, từ các cột DATE (ngày tháng). Nhiều truy vấn trong chương này dựa vào các tổng gộp doanh thu. Do các bảng Sales (Doanh thu) lưu giữ các tổng số hằng ngày, nên thiết kế cơ sở dữ liệu của bạn có thể bao gồm các bảng tổng gộp để trả lời các truy vấn này. Kết nối tới một cơ sở dữ liệu Bạn cần kết nối tới một cơ sở dữ liệu trước khi có thể sử dụng các câu lệnh SQL để truy vấn hay xử lý dữ liệu. Lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu với một tên người sử dụng. Thông qua người hướng dẫn tìm ra tên cơ sở dữ liệu bạn cần nối tới. Đối với loạt bài này, tên cơ sở dữ liệu là aromadb. Để kết nối tới cơ sở dữ liệu aromadb, gõ lệnh sau đây vào trong bộ xử lý dòng lệnh DB2: CONNECT TO aromadb USER userid USING password Thay thế "userid" và "password" bằng số ID và mật khẩu của người sử dụng mà bạn đã nhận được từ thầy hướng dẫn. Nếu máy không hỏi userid và password thì chỉ cần gõ vào lệnh sau đây: CONNECT TO aromadb Thông điệp sau báo cho bạn biết rằng đã tạo kết nối thành công: Database Connection Information Database server = DB2/NT 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB Khi đã kết nối được, bạn có thể bắt đầu sử dụng cơ sở dữ liệu. Các tổng số luỹ kế Câu hỏi Các số doanh thu hằng ngày của mặt hàng cà phê Roma Aroma trong tháng Giêng 2006 là gì? Các tổng con lũy kế theo Đôla và các số lượng bán ra trong tháng này là gì? Truy vấn OLAP SELECT date, SUM(dollars) AS total_dollars, SUM(SUM(dollars)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_dollars, SUM(quantity) AS total_qty, SUM(SUM(quantity)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_qty FROM aroma.period a, aroma.sales b, aroma.product c WHERE a.perkey = b.perkey AND c.prodkey = b.prodkey AND c.classkey = b.classkey AND year = 2006 AND month = 'JAN' AND prod_name = 'Aroma Roma' GROUP BY date ORDER BY date; Kết quả Date Total_Dollars Run_Dollars Total_Qty Run_Qty 2006-01-02 855.50 855.50 118 118 2006-01-03 536.50 1392.00 74 192 2006-01-04 181.25 1573.25 25 217 2006-01-05 362.50 1935.75 50 267 2006-01-06 667.00 2602.75 92 359 2006-01-07 659.75 3262.50 91 450 2006-01-08 309.50 3572.00 54 504 2006-01-09 195.75 3767.75 27 531 2006-01-10 420.50 4188.25 58 589 2006-01-11 547.50 4735.75 78 667 2006-01-12 536.50 5272.25 74 741 2006-01-13 638.00 5910.25 88 829 2006-01-14 1057.50 6967.75 150 979 2006-01-15 884.50 7852.25 122 1101 2006-01-16 761.25 8613.50 105 1206 2006-01-17 455.50 9069.00 66 1272 2006-01-18 768.50 9837.50 106 1378 2006-01-19 746.75 10584.25 103 1481 2006-01-20 261.00 10845.25 36 1517 2006-01-21 630.75 11476.00 87 1604 2006-01-22 813.75 12289.75 115 1719 Hàm OLAP SUM Sự có mặt của mệnh đề OVER() phân biệt một hàm tập hợp đơn giản (SUM, MIN, MAX, COUNT, AVG) với một hàm gộp OLAP. Hàm OLAP SUM tạo ra các tổng dịch chuyển khi khung cửa sổ chỉ rõ: ROWS UNBOUNDED PRECEDING Chỉ thị này ra lệnh cho hệ thống thực hiện hàm OLAP, trong trường hợp này là hàm SUM, trên tất cả các hàng đứng trước trong tập hợp kết quả. Bạn có thể cũng chỉ rõ một tập con của các hàng khi sử dụng các giới hạn khác, ví dụ như GROUP- BETWEEN. Để biết thông tin chi tiết về các khung cửa sổ, xem SQL Reference Guide . Mệnh đề ORDER BY trong OLAP là then chốt. Đặc tả này bảo đảm rằng các hàng là đầu vào của hàm OLAP SUM được sắp xếp đúng thứ tự (theo ngày tháng Date, trong trường hợp này). Nếu bạn quên sử dụng chỉ thị này, các hàng đầu vào có thể xếp sai thứ tự lôgíc và kết quả của bạn về tổng dịch chuyển sẽ không có nghĩa. Mệnh đề ORDER BY cuối cùng trong truy vấn chỉ tác động đến cách hiển thị tập kết quả; nó đứng riêng và tách biệt với mệnh đề ORDER BY của hàm OLAP. Hàm OLAP ROW_NUMBER Bạn thậm chí có thể sử dụng các hàm OLAP cho các nhiệm vụ đơn giản như là cung cấp số lượng dòng trong một tập hợp kết quả như trong lệnh: SELECT ROW_NUMBER() OVER() AS row_num, order_no, price FROM aroma.orders; ROW_NUM ORDER_NO PRICE 1 3600 1200.46 2 3601 1535.94 3 3602 780.00 Bắt đầu lại các tổng số luỹ kế Câu hỏi Các số doanh thu của Roma Aroma lũy kế trong mỗi tuần của Tháng giêng 2006 là gì? Truy vấn OLAP SELECT date, SUM(dollars) AS total_dollars, SUM(SUM(dollars)) OVER(PARTITION BY week ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_dollars, SUM(quantity) AS total_qty, SUM(SUM(quantity)) OVER(PARTITION BY week ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_qty FROM aroma.period a, aroma.sales b, aroma.product c WHERE a.perkey = b.perkey AND c.prodkey = b.prodkey AND c.classkey = b.classkey AND year = 2006 AND month = 'JAN' AND prod_name = 'Aroma Roma' GROUP BY week, date ORDER BY week, date; Kết quả Date Total_Dollars Run_Dollars Total_Qty Run_Qty 2006-01-02 855.50 855.50 118 118 2006-01-03 536.50 1392.00 74 192 2006-01-04 181.25 1573.25 25 217 2006-01-05 362.50 1935.75 50 267 2006-01-06 667.00 2602.75 92 359 2006-01-07 659.75 3262.50 91 450 2006-01-08 309.50 3572.00 54 504 2006-01-09 195.75 195.75 27 27 2006-01-10 420.50 616.25 58 85 2006-01-11 547.50 1163.75 78 163 2006-01-12 536.50 1700.25 74 237 2006-01-13 638.00 2338.25 88 325 2006-01-14 1057.50 3395.75 150 475 2006-01-15 884.50 4280.25 122 597 2006-01-16 761.25 761.25 105 105 2006-01-17 455.50 1216.75 66 171 2006-01-18 768.50 1985.25 106 277 2006-01-19 746.75 2732.00 103 380 2006-01-20 261.00 2993.00 36 416 2006-01-21 630.75 3623.75 87 503 [...]... một tổng trượt bảy ngày được tính toán bằng cách lấy tổng bảy ngày liên tiếp Hàm vô hướng DEC được dùng để định nghĩa các giá trị thập phân được trả về cho cột Mov_Sum Để biết các chi tiết về hàm này, xem SQL Reference Guide Chú ý rằng trong ví dụ này, DEC làm cho các kết quả được hiển thị dưới dạng thập phân dù cho dữ liệu cơ sở có định dạng số nguyên Hàm OLAP SUM Hàm OLAP SUM tạo ra các tổng trượt... 2004-04-06 2003-09-29 2004-01-03 2004-04-07 Bạn có thể điều chỉnh tương tự các phần riêng lẻ của bất kỳ kiểu dữ liệu TIME nào (HOURS, MINUTES, và/ hoặc SECONDS) hay bất kỳ kiểu dữ liệu TIMESTAMP nào (YEARS, MONTHS, DAYS, HOURS, MINUTES, và/ hoặc SECONDS) Để biết thêm thông tin về phép tính số học DATE, TIME, và TIMESTAMP, xem SQL Reference Guide Sử dụng mệnh đề HAVING để loại trừ các nhóm Câu hỏi Các... xếp hạng Hàm OLAP RANK Cơ sở dữ liệu IBM DB2 hỗ trợ một tập hợp các hàm xếp hạng OLAP, gồm có RANK() và DENSE_RANK() Các hàm này không yêu cầu bất kỳ đối số nào; thay vào đó, mệnh đề OLAP ORDER BY định nghĩa cột hay biểu thức để dựa vào đó mà xếp hạng Chú ý rằng thứ tự sắp xếp mặc định đối với các hàm OLAP là tăng dần (ASC), thường không phải là cách xếp hạng mong muốn cho các truy vấn kinh doanh Bạn... (tên cột hay biểu thức datetime)  Thành phần sẽ áp dụng (các) cách tăng Thành phần này có thể là ngày, tháng, năm hay một kết hợp của các giá trị này  Giá trị mức tăng lên dương hay âm Về truy vấn Ví dụ truy vấn tính toán một ngày tháng ở trước 90 ngày và sau 90 ngày so với một ngày tháng đã cho Hàm này trả về giá trị theo định dạng ngày tháng thời gian ANSI SQL 92 Cần phải biết chắc chắn bạn muốn... thức đã nhóm (( 4+ 3)* 2) là 14 Các lưu ý về cách dùng Hàm DEC được dùng để loại bỏ tất cả, chỉ để lại hai chữ số thập phân trong mỗi giá trị Price (Giá): dec(sum(dollars)/sum(quantity), 7, 2) AS price Để biết thêm thông tin về hàm DEC và các chức năng định dạng các kiểu dữ liệu khác, xem SQL Reference Guide So sánh các tổng dịch chuyển bằng OLAP Câu hỏi So sánh giữa các vùng phía Tây và phía Nam về mặt...2006-01-22 813.75 4437.50 115 618 Các phân vùng cửa sổ OLAP Mệnh đề OLAP PARTITION BY bên trong mệnh đề OVER() cung cấp một phương tiện bắt đầu lại các tính toán khi các giá trị trong các cột được phân vùng thay đổi Bạn có thể phân vùng các tính toán OLAP bằng một hoặc nhiều cột Trong truy vấn này bạn không tính đến WEEK như một cột... 7084.91 46709.50 Hàm DEC dùng để định nghĩa có bao nhiêu chữ số sẽ được hiển thị trong giá trị được trả về cho cột Mov_Avg Để biết các chi tiết về hàm này, xem SQL Reference Guide Hàm OLAP AVG Hàm OLAP AVG được sử dụng cùng với khung cửa sổ sau đây: ROWS n PRECEDING ở đây n là một số đại diện cho hệ số san bằng muốn có Trong truy vấn trước đây giá trị này nói chung được thiết lập bằng từ khóa “unbounded”... tự mức ưu tiên đánh giá từ cao nhất tới thấp nhất (đỉnh bảng đến đáy bảng) và, bên trong một mức đã cho, từ trái sang phải, trong bảng: Phép toán Tên () Thứ tự đánh giá bắt buộc +, - Dương và âm *, / Nhân và chia +, - Cộng và trừ Nếu bạn có bất kỳ nghi ngờ nào về thứ tự đánh giá đối với một biểu thức đã cho, hãy nhóm biểu thức lại bằng dấu ngoặc đơn Ví dụ, máy chủ đánh giá (4+ 3* 2) là 10 nhưng lại đánh... 'Miami') GROUP BY city, week; Trong tập hợp kết quả sau đây, chú ý rằng các giá trị trung bình trong hai hàng đầu tiên với mỗi thành phố không phải là giá trị trung bình trượt ba tuần vì không có đủ 3 dữ liệu để hoàn thành một tính toán như vậy Thay vào đó, hai giá trị trung bình ấy được tính toán đối với hàng đầu tiên (giá trị trung bình một tuần) và đối với hàng đầu tiên và hàng thứ hai (giá trị trung... dụng từ khóa FOLLOWING Mệnh đề ORDER BY trong OLAP là then chốt Đặc tả này bảo đảm rằng các hàng là đầu vào của hàm OLAP SUM được sắp xếp thứ tự đúng (theo Date tăng dần, trong trường hợp này) Xếp hạng dữ liệu Câu hỏi Xếp hạng theo tổng doanh thu đôla trong Tháng Ba năm 2005 của các cửa hàng ở vùng phía Tây là như thế nào? Truy vấn OLAP SELECT store_name, district, SUM(dollars) AS total_sales, RANK() . Hướng dẫn SQL & XQuery cho IBM DB2, Phần 4: Phân tích dữ liệu Sử dụng các truy vấn nâng cao để phân tích dữ liệu Pat Moffatt, Giám đốc Chương trình. truy vấn. Hướng dẫn này là Phần 4 của loạt tài liệu hướng dẫn SQL & XQuery cho IBM DB2® . Trước khi bạn bắt đầu Về loạt bài này Loạt tài liệu hướng dẫn này dạy các chủ đề SQL từ cơ bản. sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình. Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt hướng dẫn này như một phần

Ngày đăng: 07/08/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan