Chương 1: LÝ DO CHỌN DATASET VÀ GIỚI THIỆU TỔNG QUAN DATASET 1. Lý do hình thành dự án 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át triể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. 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ự trong ngà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.
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 danh nghiệp có nhu cầu tuyển dụng nhân sự công nghệ thông tin, … 1.
Giới thiệu tổng quan Dataset 1. Nguồn dữ liệu sử dụng 1 Nguồn dữ liệu được thu thập từ stackoverflow.com, dataset stackoverflow.com Developer Survey Result 2018. 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. Thông số dataset Dữ liệu gồm có 2 bảng: survey_results_public có: 98.855 (dòng) * 129(cột), với mỗi dòng là một ngượi thực hiện một khảo sát Những câu trả đời đã được Stackoverflow xem xét, đủ điều kiện để có thể thực hiện phân tích dựa trên tỷ lệ hoàn thành và thời gian dành cho một khảo sát.441 người đã hoàn thành toàn bộ khảo sát. 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 2 Hình 2 Dữ liệu sau khi trích xuất 2 1. Mô tả chi tiết các thuộc tính trong dataset Tên thuộc tính Mô tả 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ỷ 3 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) 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? IDE Chọn các IDE mà bạn sử dung thường xuyên? 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à? Age Bạn bao nhiêu tuổi? 1. 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ệ o Business Intelligence o SQL server Data Tool(SSDT) ● SQL Server 2022 ● Ngôn ngữ lập trình: MDX, SQL, Python3 ● IDE sử dụng: Visual Studio 4 Chương 2. THIẾT KẾ XÂY DỰNG CƠ SỞ DỮ LIỆU TÁC NGHIỆP(OLAP) 2.
Tiền xử lý dữ liệu 2. Trích chọn những thuộc tính cần thiết cho bảng fact chính Tên thuộc tính Mô tả 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à? Age Bạn bao nhiêu tuổi? 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ại tớ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. 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 Bước 4: Sinh Id tự động ứng tới tứng giá trị 5 Các bảng Dim thu được được thể hiện ở mục 2.3 Dữ liệu sau khi sử lý và làm sạch 2. 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.
Mã nguồn: # tạo dictionary chức dữ liệu bảng dim gồm ID, và value IDE = { 10: 'Visual Studio Code', 1: 'Komodo', 2: 'IPython / Jupyter', 3: 'NA', 4: 'Visual Studio', 5: 'Notepad++', 6: 'IntelliJ', 7: 'Atom', 8: 'Eclipse', 9: 'Android Studio', 11: 'PHPStorm', 12: 'Vim', 13: 'NetBeans', 14: 'Emacs', 15: 'Xcode', 16: 'Sublime Text', 17: 'RStudio', 18: 'PyCharm', 19: 'Light Table', 20: 'RubyMine', 21: 'Coda', 22: 'TextMate', 23: 'Zend' } #Thực hiện chuyển đổi dữ liệu từ thuộc tính thành id def mo_file2(): # 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.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") 6 # 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) file3 = open("file_phantach_data/IDE/fact_res_IDE.txt", "w") str_arr = file2.read() arr = str_arr.split() print(len(arr)) arr2 = [] for line in file: arr2.split(";") for x in arr_temp: file3.close() mo_file3() 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: 7 Hì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: 8 Hình 6 Dữ liệu trong file PK_fact res. Lược đồ hình sao Hình 7 Lược đồ hình sao 9 2. Lược đồ hình bông tuyết Hình 8 Lược đồ hình bông tuyết 10 Chươ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. 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 11 Hình 10 Quá trình tạo project SSIS mới 2 3. Quá trình đỗ dữ liệu từ excel vào database 3.