CHƯƠNG 2: QUÁ TRÌNH SSIS2.1 Tạo Database trống trong SQL để đổ dữ liệu vào Để tạo Database mới có tên là “Accidents” ta thực hiện như sau: - Khởi động SQL Server 2014 Management.. + Đổi
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
XÂY DỰNG KHO DỮ LIỆU VÀ OLAP TRÊN DỮ LIỆU CÁC VỤ TAI NẠN GIAO THÔNG TẠI ANH 2005 - 2015
Trang 2Xin chân thành cảm ơn cô!
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN
….………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
…………
Trang 4Mục Lục
LỜI CẢM ƠN 1
NHẬN XÉT CỦA GIẢNG VIÊN 2
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 7
1.1 Giới thiệu bộ dữ liệu 7
1.1.1 Thông tin về bộ dữ liệu 7
1.1.2 Ý nghĩa của đề tài 7
1.2 Mô tả bộ dữ liệu gốc 8
1.2.1 Mô tả dữ liệu 8
1.2.2 Mô tả thuộc tính 8
1.3 Mô tả thuộc tính từng bảng khi tạo sơ đồ hình sao 10
Bảng Dim_Urban_or_Rural_Area 10
Bảng Dim_Accident_Severity 10
Bảng Dim_Police_Force 10
Bảng Dim_Road_Surface_Conditions 11
Bảng Dim_Weather_Conditions 11
Bảng Dim_Light_Conditions 11
Bảng Dim_Road_Type 11
Bảng Dim_Date 11
Bảng Dim_Time 11
Bảng Fact 12
1.4 Sơ đồ hình sao 13
1.5 Các câu hỏi truy vấn (15 câu) 13
CHƯƠNG 2: QUÁ TRÌNH SSIS 15
2.1 Tạo Database trống trong SQL để đổ dữ liệu vào 15
2.2 Tạo Project và thiết lập kết nối 15
2.2.1 Tạo mới “Integration Service Project” 15
2.2.2 Thêm và cấu hình kết nối tới Database của hệ quản trị SQL Server 16
Trang 52.4.3 Tạo bảng Dim_Police_Force 33
2.4.4 Tạo bảng Dim_Road_Surface_Conditions 37
2.4.5 Tạo bảng Dim_Weather_Conditions 40
2.4.6 Tạo bản Dim_Light_Conditions 43
2.4.7 Tạo bảng Dim_Road_Type 46
2.4.8 Tạo bảng Dim_Date 50
2.4.9 Tạo bảng Dim_Time 57
2.5 Tạo bảng Fact 64
2.6 Tạo và xóa các ràng buộc SQL 90
2.7 Thực thi Package 98
CHƯƠNG 3: QUÁ TRÌNH SSAS 100
3.1 Tạo ứng dụng SSAS 100
3.2 Tạo Datasource 100
3.3 Tạo DataSource View 105
3.4 Tạo cube 109
3.5 Sửa bảng chiều 113
3.6 Deploy cube lên server 118
3.7 Tạo mới các Measures, Hierarchies và xóa dữ liệu Unknow 119
3.7.1 Tạo mới Measures 119
3.7.2 Tạo mới Hierarchies và định nghĩa Attribute Relationship 120
3.7.3 Xóa dòng dữ liệu Unknow 122
3.8 Định nghĩa Named set 123
3.8.1 Tạo Named set 123
3.9 Thực hiện các câu truy vấn trên MDX, BI và Pivot Excel 125
3.9.1 Câu 1 126
3.9.2 Câu 2 127
3.9.3 Câu 3 128
3.9.4 Câu 4 130
3.9.5 Câu 5 132
Trang 63.9.9 Câu 9 139
3.9.10 Câu 10 140
3.9.11 Câu 11 142
3.9.12 Câu 12 144
3.9.13 Câu 13 146
3.9.14 Câu 14 148
3.9.15 Câu 15 150
3.9.16 Câu 16 152
3.9.17 Câu 17 153
3.9.18 Câu 18 155
CHƯƠNG 4: QUÁ TRÌNH SSRS 157
4.1 Tạo report bằng công cụ SSRS 157
4.1.1 Tạo Report Service Project 157
4.1.2 Tạo và cấu hình Share Data Sources 157
4.2 Thống kê số vụ tai nạn giao thông ở nông thôn, thành thị, cả nước là bao nhiêu? 159
4.2.1 Tạo Reports 159
4.2.2 Tạo Dataset 160
4.2.3 Tạo table và định dạng report 163
4.2.4 Báo cáo hoàn chỉnh 168
4.3 Thống kê số xe thiệt hại, số người bị thương, số vụ tai nạn giao thông theo từng điều kiện thời tiết từ năm 2005 - 2015 169
4.3.1 Tạo Reports 169
4.3.2 Tạo DataSet 169
4.3.3 Tạo Table và Grouping 173
4.3.4 Tạo Total và định dạng Report 179
4.3.5 Báo cáo hoàn chỉnh 186
4.4 Thống kê theo tháng, năm tổng số xe bị hư hại, số người bị thương, tổng số vụ tai nạn, tốc độ lớn nhất xảy ra tại các loại đường với tốc độ lớn nhất là 20-70km/h ,với tổng số lượng vụ tai nạn là lớn hơn hoặc bằng 5 vụ, mức độ nguy hiểm là tử vong (Fatal) 187
4.4.1 Tạo Report 187
Trang 74.4.5 Báo cáo hoàn chỉnh 200
4.5 Đăng kí dịch vụ Power BI 201
4.6 Tạo Report bằng Power BI 203
4.6.1 Roport 1: Thống kê số vụ tai nạn giao thông qua các khu vực 206
4.6.2 Report 2: Thống kê tổng số thương vong theo từng điều kiện thời tiết qua các năm từ 2005 - 2015 210
4.6.3 Report 3: Thống kê tổng xe thiệt hại, tổng số thương vong, tổng số vụ tai nạn xảy ra tai mỗi đồn cảnh sát qua các năm từ 2005 - 2015 212
CHƯƠNG 5: DATA MINING 214
5.1 Thực hiện quá trình Data Mining 214
5.2 Tạo và xử lý Models 219
5.3 Cây quyết định 220
5.4 Thuật toán Microsoft Clustering 223
5.5 Thuật toán Microsoft Naive Bayes 226
5.6 Đánh giá các thuật toán bằng Mining Accuracy Chart 228
CHƯƠNG 6 TÀI LIỆU THAM KHẢO 231
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu bộ dữ liệu
1.1.1 Thông tin về bộ dữ liệu
Đơn vị cung cấp dữ liệu: Bộ giao thông vận tải vương quốc Anh
Thời gian thu thập dữ liệu: từ năm 2005 đến 2015
Dữ liệu được xuất bản và công khai tại:
https://data.gov.uk/dataset/road-accidents-safety-data
1.1.2 Ý nghĩa của đề tài
An toàn giao thông luôn là chủ đề được toàn xã hội quan tâm vàhướng tới xây dựng văn hóa giao thông tiến bộ nhất để giảm thiểu nhữngthiệt hại do tai nạn giao thông gây ra Ngày nay, xã hội càng phố biến bấynhiêu kéo theo là sự đông đúc trên đường phố cùng với tai nạn giao thôngngày càng tăng lên đáng kể Vì vậy, vấn đề an toàn giao thông thực sự làmột vấn đề quan trọng của nhân loại
Hiện nay mỗi ngày chúng ta có thể thống kê được rất nhiều những
vụ tai nạn giao thông để lại biết bao hậu quả đáng buồn Tại sao việc antoàn giao thông lại khó đến vậy? Nguyên nhân điều này là do đâu? Đó là
do người dân không chỉ chủ quan mà còn thiếu ý thức trách nhiệm trongkhi tham gia giao thông lạn lách, đánh võng, không đội nón bão hiểm Nhất là tình trạng người tham gia giao thông có nồng độ cồn vượt quámức quy định ảnh hưởng đến sự tỉnh táo của tay lái và gây tai nạn Không
ít những trường hợp mà mẹ mất con, con mất cha, gia đình đau xót, cá
Trang 9dung trong điều luật về an toàn giao thông sẽ góp phần giảm thiểu số vụtai nạn đáng tiếc xảy ra cũng giảm theo và bớt đi phần nào những nổi đauđớn mất mát mà gia đình và cá nhân phải chịu đựng khi có một người vìtai nạn giao thông mà mất đi sinh mạng hoặc dị tật cả đời.
Thêm vào đó, giảm thiểu tai nạn giao thông cũng là giảm thiểu chi phí doviệc này gây ra Đối với một xã hội mà an toàn giao thông được giữvững, luật giao thông được chấp nhận, người tham gia giao thông có ýthức và an toàn thì nhất định là một xã hội ngày càng đi lên Mỗi chúng ta
để thực hiện được an toàn giao thông thì cần tự xác lập cho mình ý thứctrách nhiệm về việc chấp hành những quy định khi tham gia giao thông
Nhưng ngày nay, không thiếu những hành vi coi thường luật giaothông để rồi gây ra những hậu quả đáng tiếc cho gia đình và xã hội.Những hành vi ấy nhất định cần có biện pháp xử lí đích đáng.’Phía trướctay lái là cuộc sống” Hãy nhớ khẩu hiệu đó và luôn ý thức trách nhiệmgiữ an toàn giao thông cho người khác ở mọi lúc mọi nơi
File dataset: Accidents0515
Accidents0515: gồm 1.780.653 dòng dữ liệu, 32 thuộc tính
Trang 102 Location_Easting_OSGR Tọa độ địa phương ở
3 Location_Northing_OSGR Tọa độ địa phương ở
7 Accident_Severity Mức độ nghiêm trọng Int
8 Number_of_Vehicles Số phương tiện bị hư
hại liên quan tai nạn Int
13 Local_Authority_(District) Tên khu vực địa
phương xảy ra vụ việc Int
14 Local_Authority_(Highway) Tên đường chính xảy ra
Trang 1125 Light_Conditions Điều kiện ánh sáng Int
26 Weather_Conditions Điều kiện thời tiết Int
27 Road_Surface_Conditions Điều kiện mặt đường Int
28 Special_Conditions_at_Site Điều kiện đặc biệt Int
30 Urban_or_Rural_Area Thành thị hoặc nông
31 Did_Police_Officer_Attend_Sc
ene_of_Accident
Cảnh sát có tham giavào hiện trường tai nạnhay không?
Int
32 LSOA_of_Accident_Location Khu vực địa lý của vị
trí xảy ra tai nạn String
1.3 Mô tả thuộc tính từng bảng khi tạo sơ đồ hình sao
Trang 12Field Name Description Type
ID_Road_Surface_Condition
s
Mã điều kiện mặt đường
int
Bảng Dim_Weather_Conditions
Bảng Dim_Light_Conditions
Bảng Dim_Road_Type
Bảng Dim_Date
ra tai nạn
SmallDateTime
Trang 131 Accident_Index Mã vụ tai nạn Varchar
3 ID_Accident_Severity Mức độ nghiêm trọng Int
4 Number_of_Vehicles Số phương tiện bị hư
hại liên quan tai nạn Int
7 Time_Accident Thời gian xảy ra tai
10 ID_Light_Conditions Điều kiện ánh sáng Int
11 ID_Weather_Conditions Điều kiện thời tiết Int
12 ID_Road_Surface_Conditions Điều kiện mặt đường Int
13 Urban_or_Rural_Area Thành thị hoặc nông
Trang 141.4 Sơ đồ hình sao
1.5 Các câu hỏi truy vấn (15 câu)
Câu 1: Thống kê số vụ tai nạn giao thông ở nông thôn, thành thị, cả nước là bao nhiêu?
Câu 2: Số lượng xe lớn nhất thiệt hại, số xe thiệt hại nhỏ nhất do điều kiện
bề mặt đường trong năm 2015?
Câu 3: Sắp xếp số người thương vong theo chiều tăng dần, theo các năm?Câu 4: Top 3 khung giờ xảy ra nhiều tai nạn nhất?
Câu 5: Top 3 khung giờ xảy ra ít tai nạn nhất?
Câu 6: Thống kê tổng số người thương vong xảy ra từ năm 2008 đến 2015 tại mỗi thành phố cùng thời tiết và điều kiện ánh sáng?
Trang 15Câu 8: Liệt kê 10 đồn cảnh sát ghi nhận tai nạn, có số xe thiệt hại nhiều nhất, nhưng số thương vong lớn hơn 10000 người.Từ năm 2012 đến năm 2015?
Câu 9: Thống kê số thương vong theo từng tháng của năm 2007?
Câu 10: Sắp xếp các đồn cảnh sát bắt đầu bằng chữ S theo chiều giảm dần
số vụ tai nạn giao thông, qua các tháng trong năm?
Câu 11: Truy vấn 5 loại đường,tổng số xe tai nạn được sắp xếp giảm dần, lấy bắt đầu từ vị trí thứ 2 Thống kê theo từng năm
Câu 12: Thống kê theo năm, vùng (nông thôn hay thành thị) 5 điều kiện thờitiết gây ra số lượng vụ tai nạn cao nhất và ngoại trừ vùng Unallocated
Câu 13: Thống kê ở thành phố (Urban) các loại đường, điều kiện ánh sáng, điều kiện thời tiết được sắp xếp giảm dần theo số vụ tai nạn Ứng với tốc độlớn hơn 30 km/h
Câu 14: Thống kê các tên đồn cảnh sát có tổng số của những người bị
thương ít nhất là 5000 với mức độ nghiêm trọng (Dim_Accident_Severity) –filter(sắp xếp tăng dần theo tốc độ lớn nhất)
Câu 15: Thống kê theo năm, tháng tổng số xe bị hư hại, số người bị thương,tổng số vụ tai nạn, tốc độ lớn nhất xảy ra tại các loại đường với tốc độ lớn nhất là 20-70km/h ,với tổng số lượng vụ tai nạn là lớn hơn hoặc bằng 5 vụ, mức độ nguy hiểm là tử vong (Fatal)
Trang 16CHƯƠNG 2: QUÁ TRÌNH SSIS
2.1 Tạo Database trống trong SQL để đổ dữ liệu vào
Để tạo Database mới có tên là “Accidents” ta thực hiện như sau:
- Khởi động SQL Server 2014 Management
- Viết câu lệnh CREATE DATABASE Accident_DW
- Nhấn Execute
2.2 Tạo Project và thiết lập kết nối
2.2.1 Tạo mới “Integration Service Project”
- Khởi động Visual Studio 2017
Trang 172.2.2 Thêm và cấu hình kết nối tới Database của hệ quản trị SQL Server
2.2.2.1 Kết nối tới Database “Accident_DW”
- Tại phần Solution Explorer, click chuột phải vào folder
Connection Managers, sau đó chọn New Connection Manager
để tiến hành tạo một kết nối mới
Trang 18- Chọn New để tiếp tục.
- Điền tên Server Name, chọn database “Accident_DW” trong Select or enter a database name Sau đó nhấn ok để hoàn tất
Trang 20- Kết nối đã thành công.
2.3 Quá trình làm sạch dữ liệu
- Tạo “Data Flow Task”:
Kéo thả công cụ Data Flow Task ở SSIS Toolbox sang vùng làm việc Control Flow Sau đó tiến hành đổi tên “Quá trình làm sạch
dữ liệu”:
Trang 21- Kéo thả Flat File Source, Conditional Split, 2 bảng OLE DB Destination, Sort
+ Đổi tên Flat File Source thành Data Gốc Accident CSV.+ Đổi tên 1 bảng OLE DB Destination thành Data Sạch
- Kích chuột vào Data Gốc Accident CSV, chọn edit
- Tại phần Flat file connection manager, chọn New
Trang 22- Chọn đường dẫn tới file Accidents0515 Sau đó nhấn OK.
Trang 23- Tích chọn những cột cần thiết Sau đó nhấn OK.
- Kích chuột vào Conditional Split, chọn edit
- Nhằm thực hiện chia dữ liệu thành 2 phần là DataNull và
Trang 24- Tại ô Default out name điền “DataNotNull”.
- Sau đó nhấn OK
- Thực hiện phân chia dữ liệu cho DataNull và DataNotNull trên OLE DB Destination
- Thực hiện DataNotNull
Trang 25- Sau đó nhấn “OK”.
- Thực hiện DataNull
Trang 26- Sau đó nhấn OK.
Trang 27- Kéo thả Sequence Container.
- Đổi tên thành” Tạo các bảng Dim”
2.4.1 Tạo bảng Dim_Urban_or_Rural_Area
- Kéo thả Data Flow Task vào Control Flow Sau đó đổi tên Data Flow thành Tạo Dim_Urban_or_Rural_Area
- Chọn Flat File Source, Sort, OLE DB Destination
- Đổi tên Flat File Source thành Data Gốc Urban_or_Rural_Area
- Đổi tên OLE DB Destination thành Dim_Urban_or_Rural_Area
Trang 28- Nhấn chuột vào Data Gốc Urban_or_Rural_Area chọn edit.
- Sau đó chọn New
- Chọn đường dẫn đến file Urban_Rural.csv, sau đó nhấn OK
Trang 29- Nhấn Sort, chọn edit Sau đó nhấn OK.
Trang 30- Tạo và cấu hình Dim_Urban_or_Rural_Area.
2.4.2 Tạo bảng Dim_Accident_Severity
- Tạo và cấu hình Flat File Source
- Chọn công cụ “Flat File Source” tại SSIS Toolbox vào vùng làm việc Data Flow, và đổi tên thành Data Gốc Accident_Severity
- Nhấn đúp chuột vào Data Gốc Accident_Severity và thực hiện:
- Chọn New
Trang 31- Chọn đường dẫn tới file.
- Sau đó nhấn OK
Trang 32- Tạo và cấu hình Sort như sau:
Trang 33- Tạo và cấu hình OLE DB Destination Đổi tên thành Dim_Accident_Severity.
Trang 34
- Nhấn OK
2.4.3 Tạo bảng Dim_Police_Force
Trang 35- Nhấn đúp chuột vào Data Gốc Police_Force và thực hiện:
- Chọn New
- Chọn đường dẫn tới file
- Sau đó nhấn OK
Trang 37- Tạo và cấu hình “Sort”
Trang 38- Tạo và cấu hình OLE DB Destination, đổi tên thành Dim_Police_Force.
- Sau đó nhấn OK
Trang 39- Nhấn New Chọn đường dẫn đến file excel, sau đó OK.
Trang 40- Chọn và cấu hình Sort.
Trang 41- Chọn OLE DB Destination, đổi tên thành
Dim_Road_Surface_Conditions, cấu hình như sau:
2.4.5 Tạo bảng Dim_Weather_Conditions
- Tạo Excel Source và đổi tên thành Data Gốc Weather, cấu hình như sau:
Trang 43- Tạo và cấu hình Sort.
Trang 442.4.6 Tạo bản Dim_Light_Conditions
- Tạo Excel Source đổi tên thành Data Gốc Light_Conditions, cấu hình như sau:
Trang 46- Tạo và cấu hình Sort.
Trang 47- Tạo OLE DB Destination đổi tên thành Dim_Light_Conditions, cấu hình như sau:
- Tạo Flat File Source và đổi tên thành Data Gốc Road_Type, cấu hình như sau:
Trang 50- Tạo và cấu hình Sort
Trang 51- Tạo OLE DB Destination đổi tên thành Dim_Road_Type, cấu hìnhnhư sau:
2.4.8 Tạo bảng Dim_Date
- Kéo thả Data Flow Task Và đổi tên thành”Tạo Dim_Date”
- Sử dụng OLE DB Source , Aggregate , Sort, Script Component, OLE DB Destination
Trang 52- Thực hiện bên trong OLE DB Source.
- Sau đó nhấn “OK”
Trang 53- Thực hiện bên trong Aggregate
- Sau đó nhấn “OK”
Trang 54- Thực hiện bên trong Sort
- Sau đó nhấn “OK”
Trang 55- Thực hiện bên trong Script Component
- Vào Script để chỉnh sửa code
- Vào Edit Script
Trang 56- Sau đó nhấp “OK”.
- Vào Input Columns
Trang 57- Vào Inputs and Outputs.
- Sau đó nhấn “OK”
Trang 58- Thực hiện bên trong OLE DB Destination.
- Sau đó nhấn “OK”
2.4.9 Tạo bảng Dim_Time
- Kéo thả Data Flow Task Và đổi tên thành”Tạo Dim_Time”
- Sử dụng OLE DB Source , Aggregate , Sort, Script Component, OLE DB Destination
Trang 59- Thực hiện bên trong OLE DB Source.
- Sau đó nhấn “OK”
Trang 60- Thực hiện bên trong Aggregate
- Sau đó nhấn “OK”
Trang 61- Thực hiện bên trong Sort
- Sau đó nhấn “OK”
Trang 62- Thực hiện bên trong Script Component
- Vào Script để chỉnh sửa code
- Vào Edit Script
Trang 63- Sau đó nhấp “OK”.
- Vào Input Columns
Trang 64- Vào Inputs and Outputs.
-Sau đó nhấn “OK”
Trang 65- Thực hiện bên trong OLE DB Destination.
Trang 66- Thực hiện OLE DB Soucre.
- Sau đó nhấp OK
Trang 67- Thực hiện Lookup.
- Thực hiện Lookup cho Dim_Accident_Severity
Trang 69- Sau đó nhấp OK.
Trang 70- Thực hiện Lookup Dim_Date
Trang 72- Sau đó nhấn OK.
Trang 73- Thực hiện Lookup Dim_Light_Conditions.
Trang 75- Sau đó nhấp OK.
Trang 76- Thực hiện Lookup Dim_Police_Force
Trang 77- Sau đó nhấp OK.
Trang 78- Thực hiện Lookup Dim_Road_Surface_Conditions.
Trang 81- Thưc hiện Lookup Dim_Road_Type.
Trang 82- Sau đó nhấp OK.
Trang 83-Thưc hiện Lookup Dim_Time.
Trang 84- Sau đó nhấp OK.
Trang 85-Thưc hiện Lookup Dim_Urban_or_Rural_Area.
Trang 86- Sau đó nhấn OK.
Trang 87- Thực hiện Lookup với Dim_Weather_Conditions.
Trang 89- Sau đó nhấn OK
- Tạo và cấu hình OLE DB Destination
Trang 91- Sau đó nhấp OK.
2.6 Tạo và xóa các ràng buộc SQL
- Tạo và cấu hình “Execute SQL Task” Xóa dữ liệu DataNull,
Trang 92- Tạo và cấu hình “Execute SQL Task” Xóa các ràng buộc khóa ngoại giữa Fact và các bảng Dim.
- Câu lệnh SQL xóa các khóa ngoại như sau:
ALTER TABLE FACT
DROP CONSTRAINT fk_time;
Go
ALTER TABLE FACT