Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.58 MB, 37 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINHKHOA CƠNG NGHỆ THƠNG TIN</b>
<b>BÁO CÁO CUỐI KỲ MƠN HỌC TRỰC QUAN HỐ DỮ LIỆU</b>
ĐỀ TÀI
Tp. Hồ Chí Minh, ngày30 tháng 5 năm 2022
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>TP.HCM KHOA CNTT</b>
<b>Độc lập – Tự do – Hạnh Phúc</b>
<i>Tp. Hồ Chí Minh, ngày30 tháng 5 năm 2022</i>
Giáo viên hướng dẫn
<i>(Ký & ghi rõ họ tên)</i>
<b>ĐH SƯ PHẠM KỸ THUẬTTP.HCM KHOA CNTT</b>
<b>XÃ HỘI CHỦ NGHĨA VIỆT NAM</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><i>Tp. Hồ Chí Minh, ngày 30 tháng 5 năm 2022</i>
Giáo viên phản biện
<i>(Ký & ghi rõ họ tên)</i>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Lời nói đầu tiên, nhóm thực hiện xin được gửi đến thầy Huỳnh Xuân Phụng – giảng viên bộ môn lời cảm ơn chân thành và sâu sắc nhất.
Thứ hai, nhóm cũng xin gửi lời cảm ơn chân thành đến các thành viên và các nhóm trong lớp học đã gửi những câu hỏi và lời góp ý đến nhóm. Thơng qua những góp ý này, nhóm chúng tơi đã hồn thiện và khắc phục những điểm thiếu sót.
Nhóm thực hiện xin cảm ơn sự quan tâm và giúp đỡ tận tình của thầy trong suốt quá trình giảng dạy. Cảm ơn thầy đã luôn giải đáp những thắc mắc cũng như đưa ra những nhận xét, góp ý giúp nhóm thực hiện cải thiện chất lượng cơng việc của nhóm.
Vì khả năng cịn hạn chế nên trong q trình thực hiện báo cáo khơng tránh khỏi sai sót, kính mong nhận được những ý kiến đóng góp từ thầy để nhóm có thể cải thiện hơn sau này.
Nhóm thực hiện xin chân thành cảm ơn thầy.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">2.1. Thiết kế cơ sở dữ liệu 16
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">7
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">8
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Trong bối cảnh kinh tế phát triển mạnh mẽ, nguồn tài chính dồi dào và có dư thừa. Việc tích trữ tiền tệ thơng qua nhu cầu gửi lãi có kỳ hạn là điều được nhiều khách hàng nhắm đến. Thế nhưng ngân hàng nào cũng cung cấp dịch vụ này, điều này tạo ra cuộc chiến giành giật khách hàng thông qua tiếp thị.
Tiếp thị cũng có nhiều chủng loại và hiệu suất đem lại cũng khác nhau. Tiếp thị trực tiếp thông qua gọi điện thoại đem lại hiệu quả cao với mức chi phí rất thấp. Tuy nhiên, khơng phải tiếp thị tới nhiều người nhất có thể sẽ đem lại được kết quả cao. Việc này phụ thuộc vào đối tượng và các thức tiếp thị. Để làm rõ được những yếu tố nào tác động đến khả năng thành công cuộc các chiến dịch tiếp thị trực tiếp (thông qua gọi điện thoại), nhóm đi đến quyết định lựa chọn đề tài “Ứng dụng Apache Superset để xây dựng dashboard nghiên cứu về tiếp thị ngân hàng”
<b>1.2 Mục đích của đề tài</b>
Ứng dụng Apache Superset để xây dựng dashboard nghiên cứu về tiếp thị ngân hàng với dữ liệu có liên quan đến các chiến dịch tiếp thị trực tiếp (cuộc gọi điện thoại) của một tổ chức ngân hàng Bồ Đào Nha. Mục tiêu phân loại là dự đốn xem khách hàng có đăng ký khoản tiền gửi có kỳ hạn
<b>1.3 Đối tượng và phạm vi nghiên cứu</b>
- Đối tượng nghiên cứu: Đối tượng nghiên cứu của đồ án là tìm hiểu, phân tích và xây dựng dashboard thông qua superset.
- Phạm vi nghiên cứu: Đồ án chỉ nghiên cứu trong phạm vi mà dịch vụ AWS hỗ trợ cho tài khoản sinh viên. Phần mềm sử dụng chủ yếu: Apache Superset
<b>1.4 Kết quả dự kiến đạt được</b>
Trong phạm vi nghiên cứu của đề tài nhóm chúng em dự kiến sẽ hoàn thiện được một dashboard cung cấp đầy đủ thơng tin hữu ích về các tệp khách hàng đã và đang sử dụng dịch vụ tiền gửi của ngân hàng. Cung cấp thơng tin về nhóm đối tượng thành công cao khi thực hiện các biện pháp tiếp thị.
9
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>1.1 Sơ lược về điện toán đám mây (Cloud)</b>
Điện toán đám mây là việc các tài nguyên CNTT được phân phối theo nhu cầu của người sử dụng thông qua môi trường Internet. Công nghệ điện toán được đảm bảo và quản lý bởi một cơng ty hoặc tổ chức như Amazon, Google,... Thay vì phải tốn nhiều tiền bạc, thời gian và công sức để xây dựng và quản lý tài nguyên vật lý, việc sử dụng điện toán đám mây là cách thức bạn có thể tiếp cận các dịch vụ cơng nghệ, điện toán, cơ sở dữ liệu khi cần thiết và các dịch vụ này thường sẽ có chính sách thanh toán theo nhu cầu của khách hàng (pay-as-you-go).
Các tổ chức thuộc mọi loại hình, quy mơ và ngành cơng nghiệp đang sử dụng các dịch vụ đám mây cho nhiều trường hợp sử dụng. Chúng bao gồm sao lưu dữ liệu, ảo hố hệ thống máy tính, phát triển và kiểm tra phần mềm, phân tích dữ liệu và các ứng dụng website của khách hàng.
Đám mây cho phép bạn dễ dàng tiếp cận nhiều cơng nghệ để bạn có thể đổi mới nhanh hơn và phát triển gần như mọi thứ mà bạn có thể tưởng tượng.
<b>1.2 Sơ lược về AWS</b>
<b>1.2.1 Giới thiệu AWS</b>
Amazon Web Services (AWS) là nền tảng đám mây được cung cấp bởi Amazon. Amazon Web Services là nền tảng đám mây toàn diện và được sử dụng rộng rãi nhất, cung cấp trên 200 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên toàn thế giới. Là dịch vụ cung cấp cơ sở hạ tầng CNTT cho các doanh nghiệp với chi phí thấp, độ linh hoạt, an tồn cao.
<b>1.2.2 Các dịch vụ đã sử dụng</b>
AWS cung cấp rất nhiều dịch vụ (trên 200 dich vụ) một số dịch vụ còn được sử dụng miễn phí. Trong đó, các dịch vụ cơ bản như: Compute, Storage, Database, Networking and content delivery, Developer tools, Management Tools, Analytics, Internet of things, Machine learning... Trong đề tài này, nhóm có sử dụng một vài dịch vụ về điện toán và cơ sở dữ liệu như sau:
- EC2 là một cơ sở hạ tầng điện toán đám mây được cung cấp bởi Amazon Web Services (AWS) giúp cung cấp tài nguyên máy tính ảo hố theo u cầu. - RDS là viết tắt của Amazon Relational Database Service là một web service cho
phép dễ dàng setup thao tác, scale relational database (cơ sở dữ liệu quan hệ) trên AWS Cloud.
10
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><b>1.3 Sơ lược về Docker và các dịch vụ chính1.3.1 Khái niệm </b>
Docker là nền tảng mở cho phép tạo, kiểm thử và triển khai các ứng dụng containers (trên nền tảng ảo hóa) một cách nhanh chóng. Được viết bằng ngơn ngữ Python nhưng sau đó đã chuyển thành Golang.
<b>1.3.2 Docker Image</b>
Docker image là một khn mẫu đề tạo một container. Nó là nơi chứa source code, các thư viện, các tools cần thiết để chạy một ứng dụng.
<b>1.3.3 Docker Container</b>
Docker container là môi trường mà ở đó người dùng có thể triển khai ứng dụng một cách độc lập. Các container này rất gọn, nhẹ, cho phép chạy các ứng dụng trong đó một cách nhanh chóng, dễ dàng.
Docker Container có tính chuẩn xác cao trong việc chạy ứng dụng trong container. Ngồi ra, nó cịn đảm bảo cho ứng dụng hoạt động như nhau trong các môi trường giống nhau, làm đơn giản việc cài đặt và chia sẻ.
Container hoạt động độc lập nên nó khơng làm ảnh hưởng tới các Container khác cũng như server mà Container đó đang chạy. Vì vậy, khơng cần lo lắng việc máy tính bị xung đột do các ứng dụng đang được phát triển chạy trong container.
<b>1.3.4 Docker Compose</b>
Docker compose là công cụ dùng để định nghĩa và sử dụng nhiều container cho ứng dụng chạy bằng Docker. Docker compose sử dụng file YAML để cấu hình các services cho các ứng dụng. Sau đó dùng command để create và run từ những cấu hình đó. Các bước sử dụng:
- Khai báo môi trường trong Dockerfile.
- Khai báo các services cần thiết để chạy ứng dụng trong file docker-compose.yml.
- Chạy câu lệnh docker-compose up để start Compose và chạy chương trình.
<b>1.4 Giới thiệu về Apache Superset1.4.1 Khái niệm</b>
Apache Superset là một cơng cụ trực quan hóa dữ liệu mã nguồn mở và là một nền tảng khám phá dữ liệu và trực quan hóa dữ liệu hiện đại. Superset tích hợp nhiều ngôn ngữ khác nhau.
Superset được phát triển bằng ngôn ngữ Python và tương tác bằng việc sử dụng Flask Framework. Superset sử dụng SQLAlchemy để hỗ trợ phần lớn các RDBMS. Các ưu điểm Superset cung cấp:
- Một giao diện thuận tiện cho việc xây dựng biểu đồ một cách nhanh chóng. 11
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">- Có SQL Lab mạnh mẽ, dựa trên web để truy vấn nâng cao. - Hỗ trợ hầu hết mọi cơ sở dữ liệu hoặc công cụ dữ liệu SQL.
- Trực quan hoá đẹp hiển thị dữ liệu, từ biểu đồ đơn giản đến hình ảnh hóa khơng gian địa lý.
- Có thể định dạng cấu hình để giúp tải cơ sở dữ liệu dễ dàng nhờ bộ nhớ đệm. - Có các tùy chọn xác thực và vai trò bảo mật có thể mở rộng cao.
- Cung cấp API dễ dàng tùy chỉnh.
<b>1.4.2. Chart</b>
Biểu đồ thường được sử dụng để dễ dàng trực quan hóa cho dữ liệu. Các chart trong Superset được chia thành nhiều loại tùy theo mục đích sử dụng của người dùng. Superset hỗ trợ rất nhiều loại biểu đồ khác nhau từ đơn giản 2D, biểu đồ địa lý thế giới, từng quốc gia, đến các biểu đồ 3D địa lý phức tạp cũng như các biểu đồ real time...
<b>1.4.3. Dashboard</b>
Dashboard có thể được hiểu là một bảng điều khiển kỹ thuật số (digital control), hay là một giao diện số được dùng để thu thập và tổng hợp dữ liệu của toàn bộ tổ chức. Dashboard trong superset là tập hợp của nhiều thành phần như: chart, filter, các tabs, ... Trong khi thiết kế dashboard, Superset cung cấp nhiều công cụ để thiết kế như tạo các row, col, thêm các markdown để việc thiết kế đơn giản và đẹp hơn.
Công việc backup và tái sử dụng dashboard rất đơn giản, bạn chỉ cần backup lại thông qua file zip, khi cần cho mục đích backup, Superset sẽ khơi phục lại dữ liệu như ban đầu từ: data, chart, các cấu hình đã định sẵn, ...
<b>1.4.4. Database</b>
Superset có thể dễ dàng kết nối tới cơ sở dữ liệu được hỗ trợ thông qua SQLAlchemy. Nếu cần kết nối với một database chưa được cài đặt sẵn driver kết nối, bạn chỉ cần thêm tên của driver để kết nối trong file requirements. Chỉ cần thêm đường dẫn kết nối, Superset sẽ đảm bảo việc kết nối tới kho dữ liệu nhanh chóng và bắt đầu xây dựng biểu đồ. Một số database mà Superset hỗ trợ
12
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Để truy vấn cơ sở dữ liệu SQL mới, Superset yêu cầu:
- SQLAlchemy + driver có sẵn trong thư viện Python DB-API 2 để kích hoạt chức năng cơ bản.
- Một số mã kết nối dành riêng cho cơ sở dữ liệu để kích hoạt tất cả các tính năng
- Ngồi ra, trong phần advanced, có thể cài đặt các ràng buộc cho cơ sở dữ liệu có thể truy cập và sử dụng bởi các tính năng trong Superset
<b>1.4.5. Dataset</b>
Dataset hay còn gọi là specific table, là một tập dữ liệu được đưa vào SuperSet và dùng để vẽ các biểu đồ và thực thi các truy vấn trong SuperSet.
Có nhiều cách để thêm một dataset vào một database như: Từ một file csv, từ một columnar file, từ file excel.
Cách Thêm một dataset: Chọn database, schema phù hợp, table
13
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Trong SuperSet, Dataset được chia làm 2 loại : vật lý và virtual (ảo)
+ Dataset vật lý trong Superset đại diện cho một bảng hoặc dạng view trong cơ sở dữ liệu. Bởi vì tập dữ liệu vật lý phản ánh một bảng thực (real) nên Superset có thể tự động lấy thơng tin có liên quan từ cơ sở dữ liệu (như lược đồ (chema)và cột(column)). Thông tin này được lưu trong cơ sở dữ liệu metadata của Superset.
+ Dataset ảo cho phép nâng cao một truy vấn SQL dạng tự do dựa trên cơ sở dữ liệu gốc thành một thực thể tập dữ liệu trong Superset
<b>1.4.6. Bảo mật</b>
Việc bảo mật trong Superset được xử lý bởi Flask AppBuilder (FAB). Ta có thể hiểu FBA ở đây là một “khung phát triển ứng dụng đơn giản và nhanh chóng được xây dựng trên Flask”. FBA cung cấp việc xác thực , quản lý quyền và vai trò của người dùng.
Superset thực hiện các biện pháp bảo mật thích hợp để chuyển dữ liệu cá nhân nhằm bảo vệ chống lại việc truy cập trái phép, thay đổi , tiết lộ hoặc phá hủy dữ liệu cá nhân mà superset thu thập và lưu trữ.
Các biện pháp bảo mật của Superset sẽ khác nhau dựa trên loại và độ nhạy của dữ liệu. Tất cả các quyền truy cập vào các ứng dụng superset đều được ghi lại và kiểm tra.
<b>1.4.7. Filter</b>
Dùng để lọc các biểu đồ dữ liệu trong các dashboard theo một điều kiện do người sử dụng nhập vào để phù hợp với mục đích sử dụng.
<b>1.4.8. SQL Labs</b>
SQL Labs là một SQL IDE mạnh mẽ trong Superset. SQL Labs có thể hoạt động với bất kỳ cơ sở dữ liệu nào chỉ cần có trình kết nối SQLAlchemy Python. SQL 14
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">13 - pdays: number of days that passed by after the client was last contacted from a previous campaign (numeric; 999 means client was not previously contacted)
14 - previous: number of contacts performed before this campaign and for this client (numeric)
15 - poutcome: outcome of the previous marketing campaign (categorical: "failure","nonexistent","success")
# Social and economic context attributes
16 - emp.var.rate: employment variation rate - quarterly indicator (numeric) 17 - cons.price.idx: consumer price index - monthly indicator (numeric) 18 - cons.conf.idx: consumer confidence index - monthly indicator (numeric)
19 - euribor3m: euribor 3-month rate - daily indicator (numeric) 20 - nr.employed: number of employees - quarterly indicator (numeric) Output variable (desired target):
21 - y - has the client subscribed a term deposit? (Binary: "yes","no")
<b>2.1.2. Cơ sở dữ liệu</b>
- Cấu hình RDS:
<i><small>Hình 1: Thơng tin cấu hình RDS</small></i>
- Thơng tin kết nối:
17
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><b>2.1.3. Kết nối cơ sở dữ liệu</b>
Sử dụng cơ sở dữ liệu PostgreSQL:
<i><small>Hình 3: Superset kết nối tới RDS</small></i>
- Để thêm các dataset (table) từ RDS vào superset, ta cần kích hoạt:
18
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">- Thơng tin dữ liệu sau khi thêm vào:
<i><small>Hình 5: Lấy thơng tin dataset của database</small></i>
<b>2.1.4. Điều chỉnh cơ sở dữ liệu</b>
- Code cập nhật database tự động từ nguồn github bằng python:
19
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><b>2.3. Xây dựng dashboard2.3.1. Bảo mật dashboard</b>
● Phân quyền cho user public
- Tạo user Another User đại diện cho public user
<i><small>Hình 7: Tạo User</small></i>
Tạo quyền readonly cho user public truy cập
20
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21"><b>2.3.2. Xây dựng các chart* Chart về Khách hàng</b>
1) Thông tin về nghề nghiệp của khách hàng và những khách hàng nào là chủ yếu
<i><small>Hình 9: Cơng việc của khách hàng</small></i>
=> Khách hàng chủ yếu là: admin, blue-collar.
2) Thống kê xem tỷ lệ gửi tiền theo từng loại ngành nghề của khách hàng
21
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">=> Ta thấy tỉ lệ của student cao nhất, nhưng do số lượng của student ít, và nếu chia tỉ lệ thì admin vẫn là ngành nghề có tỷ lệ gửi tiết kiệm nhiều nhất
3) Thống kê lại số lượng khách hàng có gửi tiết kiệm theo cơng việc của họ
<i><small>Hình 11: Biểu đồ</small></i>
=> admin, blue-collar là những khách hàng có tỷ lệ đăng ký gửi tiền nhiều nhất 4) Thống kê xem với độ tuổi nào thì khách hàng có xu hướng gửi tiết kiệm nhiều
22
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">=> Khoảng độ tuổi 33-38
5) Thống kê về các phương thức liên hệ với khách hàng và tỉ lệ thành cơng bằng các phương thức đó
<i><small>Hình 13: Biểu đồ barchat và table theo phương thức liên hệ</small></i>
=> Tỷ lệ thành công với cách thức liên hệ bằng telephone sẽ lớn hơn 6) Tỷ lệ khách hàng có gửi tiết kiệm tại ngân hàng
23
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">=> Tỷ lệ khách hàng ký gửi còn khá thấp
<b>* Chart về yếu tố kinh tế</b>
1) Lãi suất trung bình, chỉ số giá tiêu dùng và tỷ lệ thay đổi việc làm tại một thời điểm
<i><small>Hình 15: Big number về kinh tế</small></i>
2) Chỉ số kinh tế so với mức bình quân tại một thời điểm
24
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">=> màu đậm: lớn hơn mức bình quân
3) Lãi suất cho vay của xã hội thời điểm đó có ảnh hưởng tới khả năng gửi tiết kiệm khơng?
<i><small>Hình 17: Bar chart về lãi suất</small></i>
=> Có ảnh hưởng, tỷ lệ lãi thấp thì sẽ có xu hướng gửi ngân hàng cịn lãi cao thì tỷ lệ gửi ngân hàng là rất thấp
4) Tỷ lệ gửi tiết kiệm so với yếu tố niềm tin của người tiêu dùng tại một thời điểm
25
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><b>2.3.4. Xây dựng filter* Khách hàng </b>
<i><small>Hình 19: Filter cho tab khách hàng</small></i>
<b>=> Dùng để filter các chart theo các thuộc tính : age, job, contact* Kinh tế</b>
26
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">=> Dùng để filter các thuộc tính : chỉ số giá tiêu dùng, tỷ lệ thay đổi việc làm
<b>2.3.5. Xây dựng dashboard</b>
a. Xây dựng tab thông tin khách hàng
27
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">b. Xây dựng thông tin về kinh tế
28
</div>