Nên việc xây dựng kho dữ liệu các nhân sự ngành công nghệ thông tin là thực sự cần thiết.. Vì vậy nhóm em quyết định thực hiện xây dựng kho dữ liệu thông tin các nhân sự ngành công nghệ
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CNTT &TT VIỆT – HÀN
ĐỒ ÁN KHO DỮ LIỆU
ĐỀ TÀI: XÂY DỰNG KHO DỮ
LIỆU KẾT QUẢ KHẢO SÁT
DEVELOPERS
Sinh viên thực hiện: 1 Đặng Ngọc Thư – 20IT542
3 Nguyễn Công Lâm – 20IT010
GVHD: ThS Trần Thanh Liêm
Đà Nẵng, tháng 5 năm 2023
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CNTT &TT VIỆT – HÀN
ĐỒ ÁN KHO DỮ LIỆU
ĐỀ TÀI: XÂY DỰNG KHO DỮ LIỆU KẾT QUẢ KHẢO SÁT CÁC
NHÀ PHÁT TRIỂN
Sinh viên thực hiện: 1 Đặng Ngọc Thư – 20IT542
3 Nguyễn Công Lâm – 20IT010
GVHD: ThS Trần Thanh Liêm
Đà Nẵng, tháng 5 năm 2023
Trang 3Nhóm chúng em xin chân thành cảm ơn!
Đà Nẵng, tháng 5 năm 2023
Nhóm sinh viên thực hiện
Đặng Ngọc ThưNguyễn Minh DiệnNguyễn Công Lâm
Trang 4………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, Ngày……Tháng……Năm 2023
Giảng viên hướng dẫn
(ký và ghi rõ họ tên)
ThS Trần Thanh Liêm
Trang 5MỤC LỤC
CHƯƠNG 1: LÝ DO CHỌN DATASET VÀ GIỚI THIỆU TỔNG QUAN
DATASET 1
1.1 Lý do hình thành dự án 1
1.1.1 Vấn đề nhận thấy 1
1.1.2 Giải pháp 1
1.1.3 Mục tiêu và ý nghĩa của dự án 1
1.2 Giới thiệu tổng quan Dataset 1
1.2.1 Nguồn dữ liệu sử dụng 1
1.2.2 Mô tả chi tiết dữ liệu 2
1.2.2.1 Thông số dataset 2
1.2.2.2 Dữ liệu sau khi trích xuất 2
1.2.2.3 Mô tả chi tiết các thuộc tính trong dataset 3
1.2.3 Giới thiệu các công cụ được sử dụng trong đồ án 4
CHƯƠNG 2 THIẾT KẾ XÂY DỰNG CƠ SỞ DỮ LIỆU TÁC NGHIỆP(OLAP) 5
2.1 Tiền xử lý dữ liệu 5
2.1.1 Trích chọn những thuộc tính cần thiết cho bảng fact chính 5
2.1.2 Thực hiện xử lý các bảng Fact con(các thuộc tính n-n) 5
2.1.2.1 Tạo bảng Dim 5
2.1.3 Dữ liệu sau khi sử lý và làm sạch 6
2.1.3.1 Tạo bảng Fact con 6
2.2 Lượt đồ hình sao 9
2.3 Lượt đồ hình bông tuyết 10
CHƯƠNG 3 TÍCH HỢP DỮ LIỆU VÀO KHO (SSIS) 11
3.1 Quá trình tạo mới project SSIS 11
3.2 Quá trình đỗ dữ liệu từ excel vào database 12
3.2.1 Quá trình tạo Excel Connection Manager 12
3.2.2 Quá trình tạo OLE DB Connection 13
Trang 63.3 Quá trình đổ dữ liệu từ database vào kho dữ liệu 29
3.3.1 Quá trình tạo Connection Manager 29
3.3.2 Quá trình tạo Control Flow 31
3.3.2.1 Data Flow Fact 32
3.3.2.2 Data Flow source_database_vao_WH_servey 35
3.3.2.3 Data Flow source_res_vao_WH-servey 36
3.3.3 Quá trình tạo Execute SQL Task 37
3.3.4 Kết quả chạy project 52
CHƯƠNG 4 PHÂN TÍCH DỮ LIỆU (SSAS) 53
4.1 Danh sách câu truy vấn 53
4.1.1 Sử dụng SSAS 53
4.1.2 Sử dụng ngôn ngữ truy vấn MDX 53
4.2 Kết quả xây dựng mô hình 54
4.3 Quá trình xây dựng khối – Cube 54
CHƯƠNG 5 REPORT 69
5.1 Báo cáo 1 69
5.2 Báo cáo 2 75
CHƯƠNG 6 KẾT LUẬN 77
6.1 Kết quả đạt được 77
6.2 Những hạn chế 77
TÀI LIỆU THAM KHẢO 78
Trang 7MỤC LỤC ẢNH
Trang 8Hình 45 Quá trình tạo Control Flow 7 37
Trang 9Chương 1: LÝ DO CHỌN DATASET VÀ GIỚI THIỆU
TỔNG QUAN DATASET 1.1 Lý do hình thành dự án
1.1.1 Vấn đề nhận thấy
Ngành công nghệ thông tin, đặt biệt là ngành công nghiệp phần cứng điển tư, công nghiệp phần mềm và nội dung số đã duy trì tốc độ tăng trưởng cao, bình quân 30% năm
Thiếu hụt nhân lực công nghệ thông tin không phải vấn đề mới, nhưng với tốc độ pháttriển chóng mặt như hiện nay, chúng ta vẫn chưa giải quyết được thực trạng này Theoước tính, từ nay tới năm 2022, Việt Nam sẽ thiếu khoảng 400.000 nhân lực cho ngành công nghệ thông tin Hơn thế, đào tạo nguồn nhân lực chất lượng cao là không hề dễ Hiện tại, các doanh nghiệp công nghệ thông tin và truyền thông liên tục săn đón sinh viên ngay từ năm 3,4 đại học; sẵn sàng trả lương cao đồng thời cử họ sang nước ngoài
du học
Các thông tin trên cho thấy rằng nhân sự cho các công ty công nghệ hiên đang rất được quan tâm Dẫn đến nhu cầu thu thập thông tin, phân tích đánh giá các nhân lực rất quan trọng Cũng thông qua các nhân sự ngành công nghệ thông tin để biết được các ngôn ngữ, công nghệ đang được ưa chuộng, mức lương trong ngành
Để tạo ra báo cáo chính xác các thông tin về ngành nhân lực ngành công nghệ thông tin Nên việc xây dựng kho dữ liệu các nhân sự ngành công nghệ thông tin là thực sự cần thiết
Vì vậy nhóm em quyết định thực hiện xây dựng kho dữ liệu thông tin các nhân sự ngành công nghệ thông tin
1.1.2 Giải pháp
Dựa trên nhu cầu thống kê, phân tích và khai thác dữ liệu các nhân sự trongngành công nghệ thông tin Giải pháp là xây dựng kho dữ liệu phục vụ mục đích phân tích, khai thác, và tạo báo cáo tổng Đưa ra các dự đoán có thể xuất hiện trong năm sau
1.1.3 Mục tiêu và ý nghĩa của dự án
Thứ nhất là nghiên cứu học xây dựng một kho dữ liệu và OLAP
Xây dựng và phát triển ứng dụng nhằm phục vụ việc phân tích, khai thác, tạo cáo nhằm nắm rỏ xu hướng công nghệ đang được ưa chuộng, sự phân câp giữa các lâp trình viên, mức lương của họ theo từng quốc gia Việc này giúp dễ dàng nhận biết xu hướng công nghệ, so sánh mức lương giữa các quốc gia
Hướng tới đối tượng sử dụng là: các nhà phát triển muốn cập nhật xu hướng, các danhnghiệp có nhu cầu tuyển dụng nhân sự công nghệ thông tin, …
1.2 Giới thiệu tổng quan Dataset
Trang 10Nguồn dữ liệu được thu thập từ stackoverflow.com, dataset stackoverflow.com Developer Survey Result 2018.
1.2.2 Mô tả chi tiết dữ liệu
Với hơn 100.000 người tham gia thực hiện khảo sát đến từ 183 quốc gia và vùng lảnh thổ Cây là cuộc khảo sát toàn diện nhất về các nhà pháy triển phần mềm từng được thực hiện Khảo sát kiểm tra tất cả các khía cạnh của nhà phát triển từ sự hài lòng nghềnghiệp cho đến giáo dục và những vấn đề liên quan đến lập trình
1.2.2.2 Dữ liệu sau khi trích xuất
Thực hiện trích dữ liệu từ bảng survey_results_public:
Lấy ra 98.855 (dòng) * 23(cột) phục vụ cho mục đích xây dựng kho dữ liệu và OLAP:
Dữ liệu sau khi trích xuất từ dữ liệu gốc:
Hình 1 Dữ liệu sau khi trích xuất 1
Trang 11Hình 2 Dữ liệu sau khi trích xuất 2
1.2.2.3 Mô tả chi tiết các thuộc tính trong dataset
Respondent ID nhà phát triển tham gia khảo sát, tạo tự động
Hobby Code có phải là sở thích của bạn
Country Bạn đang sống ở quốc gia nào?
Student Bạn có phải là sinh viên?
CompanySize Công ty bạn hiện nay có khoảng bao nhiêu nhân viên
YearsCoding Bao gồm cả thời gian học, Thời gian bạn code là bao lâu?
YearsCodingProf Bạn đã code chuyên gia trong bao lâu?
JobSatisfaction Bạn có hài lòng với công việc hiện tại? Nếu bạn có nhiều
công việc hãy trả lời công việc mà bạn dành nhiều thờigian nhất
CareerSatisfaction Nhìn chung, cả có hài lòng với tất cả công việc bạn đang
làm?
Trang 12giá ngày 18/01/2018.(Giả định một năm có 12 tháng làmviệc hoặc 50 tuần làm việc)
DevType Vị trí công việc hiện tại của bạn?
CommunicationTools Bạn sử công cụ giao tiếp nào để giao tiếp với đồng
nghiệp? Chọn những đáp án đúng với bạn
LanguageWorkedWith Chọn các ngôn ngữ mà bạn đang làm việc với nó?
LanguageDesireNextYear Chọn các ngôn ngữ mà bạn muốn làm việc hoặc tìm hiểu
trong năm tới?
DatabaseWorkedWith Chọn các cơ sở dữ liệu mà bạn đang làm việc?
DatabaseDesireNextYear Chọn các cơ sở dữ liệu mà bạn muốn làm việc hoặc tìm
hiểu trong năm tới?
OperatingSystem Hệ điều hành chính mà bạn làm việc hiện tại?
EthicsChoice Nếu được yêu cầu viêt code cho mục đích xấu, bạn có viết
hay không? (Yes or No)
HoursComputer Thời gian trung bình bạn dành cho máy tính là bao nhiêu?
Exercise Trong một tuần bạn tập thể dục bao nhiêu lần?
Gender Giới tính của bạn là?
1.2.3 Giới thiệu các công cụ được sử dụng trong đồ án
● Visual Studio 2022: Tích hợp các công nghệ
Trang 13Chương 2 THIẾT KẾ XÂY DỰNG CƠ SỞ DỮ LIỆU TÁC
NGHIỆP(OLAP)
2.1 Tiền xử lý dữ liệu
2.1.1 Trích chọn những thuộc tính cần thiết cho bảng fact chính
Respondent ID nhà phát triển tham gia khảo sát, tạo tự động
Hobby Code có phải là sở thích của bạn
Country Bạn đang sống ở quốc gia nào?
Student Bạn có phải là sinh viên?
CompanySize Công ty bạn hiện nay có khoảng bao nhiêu nhân viên
YearsCoding Bao gồm cả thời gian học, Thời gian bạn code là bao
lâu?
YearsCodingProf Bạn đã code chuyên gia trong bao lâu?
JobSatisfaction Bạn có hài lòng với công việc hiện tại? Nếu bạn có nhiều
công việc hãy trả lời công việc mà bạn dành nhiều thời gian nhất
CareerSatisfaction Nhìn chung, cả có hài lòng với tất cả công việc bạn đang
làm?
ConvertedSalary Mức lương hàng năm của bạn khi chuyển qua USD với
tỷ giá ngày 18/01/2018.(Giả định một năm có 12 tháng làm việc hoặc 50 tuần làm việc)
OperatingSystem Hệ điều hành chính mà bạn làm việc hiện tại?
EthicsChoice Nếu được yêu cầu viêt code cho mục đích xấu, bạn có
viết hay không? (Yes or No)
HoursComputer Thời gian trung bình bạn dành cho máy tính là bao
nhiêu?
Exercise Trong một tuần bạn tập thể dục bao nhiêu lần?
Gender Giới tính của bạn là?
2.1.2 Thực hiện xử lý các bảng Fact con(các thuộc tính n-n)
Sử dụng code Python thực hiện tách dữ liệu 1 thuộc tính trong dữ liệu gốc thành bảng FACT con và một bảng DIM Bảng FACT con chứa 2 thuộc tính, một là là khóa ngoạitới bảng FACT cha, thuộc tính còn lại là khóa ngoại tới bảng DIM vừa được tạo ra
Xử lý như trên với tất cả thuộc tính được chọn có cấu trúc nhiều – nhiều
2.1.2.1 Tạo bảng Dim
Bước 1: Sao chép dữ liệu thuộc tính ra cột mới trong Excel
Bước 2: Thực hiện lấy các giá trị trùng lặp(Chọn tag Data->Remov Duplicates)
Bước 3: Thêm mới một cột phía trước với tiêu đề là ID
Trang 14Các bảng Dim thu được được thể hiện ở mục
2.1.3 Dữ liệu sau khi sử lý và làm sạch
2.1.3.1 Tạo bảng Fact con
Sử dụng đoạn code Python3 để thực hiện tạo dữ liệu bảng fact con
# file IDE chứa dữ liệu thuộc tính cần tách
# Không lấy tên cột từ excel cho file IDE
file = open(r"file_phantach_data/IDE/IDE.txt")
# file data3.txt chứa dữ liệu sau khi chuyển đổi dữ liệu thành ID của nó theo bảng DIM
file2 = open("file_phantach_data/IDE/ID_DimIDE.txt", "w")
for line in file:
for key, value in sorted(IDE.items(), key=lambda x: len(x[1]), reverse=True):
line = line.replace(value, str(key))
file2.writelines(line)
file.close()
file2.close()
mo_file2()
# Thực hiện tách mỗi dòng thành nhiều dòng
# với cấu trúc "mã người khảo sát" - "mã thuộc tính trong bảng DIM"
def mo_file3():
# file ID_DimDevType.txt chứa dữ liệu sau khi chuyển đổi dữ liệu thành ID của nó theo bảng DIM
file = open(r"file_phantach_data/IDE/ID_DimIDE.txt")
# file PK_fact_res.txt chưa dữ liệu khóa chính từ bảng fact chính
# tức là ID người tham gia khảo sát được lấy từ dữ liêu gốc
file2 = open(r"file_phantach_data/PK_fact_res.txt")
Trang 15# file fact_res_DevType.txt là file nhận kết quả cuối cùng của bảng fact con
# (đây là dữ liệu của bảng fact con)
Dữ liệu trong file IDE.txt:
Hình 3 Dữ liệu trong file IDE.txt
Dữ liệu trong file Dim_IDE.txt:
Trang 16Hình 4 Dữ liệu trong file Dim_IDE.txt
Dữ liệu trong file fact_res_IDE.txt:
Hình 5 Dữ liệu trong file fact_res_IDE.txt
Dữ liệu trong file PK_fact res.txt:
Trang 17Hình 6 Dữ liệu trong file PK_fact res.txt
2.2 Lược đồ hình sao
Hình 7 Lược đồ hình sao
Trang 182.3 Lược đồ hình bông tuyết
Hình 8 Lược đồ hình bông tuyết
Trang 19Chương 3 TÍCH HỢP DỮ LIỆU VÀO KHO (SSIS)
Ở chương này, Sử dụng công cụ SSIS xây dựng các gói tích hợp dữ liệu, cài đặt các gói chạy tự động Viết truy vấn đưa dữ liệu từ OLTP đến kho dữ liệu.
3.1 Quá trình tạo project SSIS mới
Chọn tag File -> New -> Project…
Hình 9 Quá trình tạo project SSIS mới 1
Một dialog xuất hiện Chọn Nhập SSIS trên hộp thoại tìm kiếm rồi chọn Integration
Services Project
Trang 20Hình 10 Quá trình tạo project SSIS mới 2
3.2 Quá trình đỗ dữ liệu từ excel vào database
3.2.1 Quá trình tạo Excel Connection Manager
Nhấn chuột phải chọn New Connection:
Trang 21Hình 11 Quá trình tạo Excel Connection Manager 1
Dialog config hiện ra chọn Excel -> Add:
Hình 12 Quá trình tạo Excel Connection Manager 2
Chọn đường dẫn tới file excel và phiên bản file excel đó -> OK:
Trang 22Hình 13 Quá trình tạo Excel Connection Manager 3
3.2.2 Quá trình tạo OLE DB Connection
Nhấn chuột phải -> chọn new OLE DB Connection
Hình 14 Quá trình tạo OLE DB Connection 1
Trang 23Cử sổ mới hiện nha như sau:
Hình 15 Quá trình tạo OLE DB Connection 2
Từ dialog mới hiện ra, chọn New để tạo connection mới Cửa sổ mới hiện ra như sau:
Trang 24Hình 16 Quá trình tạo OLE DB Connection 3
Điền thông tin server name lấy từ server đang sử dụng như hình:
Hình 17 Quá trình tạo OLE DB Connection 4
Trang 25Sau khi điền tên server đang sử dụng, chọn tên database nguồn -> nhấn Test
Connection:
Hình 18 Quá trình tạo OLE DB Connection 5
Trang 26Hình 19 Quá trình tạo OLE DB Connection 6
Hiện thông báo như trên là đãn kết nối thành công -> nhấn OK Làm tương tự tạo
thêm OLE DB Connecttion
3.2.3 Quá trình tạo Control Flow
Kéo 1 Data Flow Task mới:
Trang 27Hình 20 Quá trình tạo Control Flow 1
Định nghĩa Data Flow cho Data Flow Fact:
Kéo một Excel source và OLE DB destination:
Hình 21 Quá trình tạo Control Flow 2
Trang 28Hình 22 Quá trình tạo Control Flow 3
Nhân đúp chuột vào Source Respondent -> Chọn Excel Connection đã tạo -> Chọn Excel Sheet fact:
Trang 29Hình 23 Quá trình tạo Control Flow 4
Preview:
Trang 30Hình 24 Quá trình tạo Control Flow 5
Columns:
Trang 31Hình 25 Quá trình tạo Control Flow 6
Nhấn OK Và kéo liên kết xanh đến source_respondent:
Trang 32Nhấn đúp chuột vào source_respondent -> chọn OLE DB Connecttion :
Hình 27 Quá trình tạo Control Flow 8
Nhấn new để tạo bảng mới trong Cơ sở dữ liệu:
Trang 33Hình 28 Quá trình tạo Control Flow 9
Chỉnh sửa code tạo bảng -> nhân OK để tạo bảng:
Mappings:
Trang 34Hình 29 Quá trình tạo Control Flow 10
Nhấn Ok để hoàn thành
Kéo 2 Data Flow Task mới và định nghĩa là Data Flow DoDuLieuVaoDatabase và
Data Flow DoResVaoDatabase:
Trang 35Hình 30 Quá trình tạo Control Flow 11
Data Flow DoDuLieuVaoDatabase:
Hình 31 Quá trình tạo Control Flow 12
Data Flow DoResVaoDatabase:
Trang 36Hình 32 Quá trình tạo Control Flow 13
3.2.4 Kết quả chạy project
Hình 33 Kết quả chạy project 1
Data Flow Fact
Trang 37Hình 34 Kết quả chạy project 2
Data Flow DoDuLieuVaoDatabase
Hình 35 Kết quả chạy project 3
Data Flow DoResVaoDatabase
Trang 38Hình 36 Kết quả chạy project 4
3.3 Quá trình đổ dữ liệu từ database vào kho dữ liệu
3.3.1 Quá trình tạo Connection Manager
Connection manager OLE DB db đã được nhận dữ liệu từ database nguồn:
Trang 39Hình 37 Quá trình tạo Connection Manager 1
Connection Manager db WH_servey dùng để phân tích và khai thác:
Trang 40Hình 38 Quá trình tạo Connection Manager 2
3.3.2 Quá trình tạo Control Flow
Trang 41Hình 39 Quá trình tạo Control Flow 1
3.3.2.1 Data Flow Fact
Hình 40 Quá trình tạo Control Flow 2
source_Respondent:
Trang 42Hình 41Quá trình tạo Control Flow 3
Trang 43Hình 42 Quá trình tạo Control Flow 4
Trang 44Hình 43 Quá trình tạo Control Flow 5
3.3.2.2 Data Flow source_database_vao_WH_servey
Trang 45Hình 44 Quá trình tạo Control Flow 6
3.3.2.3 Data Flow source_res_vao_WH-servey
Trang 46Hình 45 Quá trình tạo Control Flow 7
3.3.3 Quá trình tạo Execute SQL Task
Kéo một control Execute SQL Task vào và trỏ đường dẫn xanh tới Data Flow Task:
Hình 46 Quá trình tạo Execute SQL Task 1
Trang 47Nhấn đúp chuột vào Execute SQL Task và chọn ConnectionType và Connection nhưsau:
Hình 47 Quá trình tạo Execute SQL Task 2
Nhấn chọn SQL Statement:
Trang 48Hình 48 Quá trình tạo Execute SQL Task 3
Trang 49Đã tồn tại -> xóa bảng
alter table fact drop constraint fk_dimHobby
drop table DimHobby
END
lấy các giá trị không trùng từ fact -> đưa vào bảng Dim mới
select distinct(fact.Hobby) into DimHobby
from fact
Chỉnh sửa thông tin trường từ bảng dim mới
ALTER TABLE DimHobby ALTER COLUMN Hobby nvarchar(255) NOT NULL Tạo khoa chính cho bảng dim
alter table DimHobby add primary key(Hobby)
Tạo khóa ngoại từ bảng fact tới bảng dim mới
alter table fact add CONSTRAINT fk_dimHobby FOREIGN KEY (Hobby)REFERENCES DimHobby(Hobby)