ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
BÁO CÁO
ĐỒ ÁN TỐT NGHIỆP
HỆ THỐNG PHÂN TÍCH DỮ LIỆU
VÀ BI CHO THƯƠNG MẠI ĐIỆN TỬ
Ngành: Khoa học Máy tính
HỘI ĐỒNG: Hội đồng 12 Khoa học Máy tính
GVHD: ThS. Đỗ Thanh Thái
PGS.TS Trần Minh Quang
GVPB: PGS.TS Võ Thị Ngọc Châu
TKHĐ: Ths. Trần Thị Quế Nguyệt
Nhóm sinh viên thực hiện: Lê Ngọc Hòa - 2013247
Hồ Trương Đức Tiến - 2012196
Lữ Hoàng Anh - 2010113
TP. HỒ CHÍ MINH, THÁNG 05 NĂM 2024
Lời cam đoan
Chúng tôi xin cam đoan mọi điều được ghi trong báo cáo, cũng như mã nguồn là do
nhóm tự thực hiện - trừ các kiến thức tham khảo có trích dẫn cũng như mã nguồn mẫu
do chính nhà sản xuất cung cấp, hoàn toàn không sao chép từ bất cứ nguồn nào khác.
Nếu lời cam đoan trái với sự thật, nhóm xin chịu mọi trách nhiệm trước Khoa và Nhà
trường.
Nhóm sinh viên thực hiện đề tài
1
Lời cảm ơn
Lời đầu tiên, nhóm chúng em xin đặc biệt gửi lời cảm ơn đến ThS. Đỗ Thanh Thái và
PGS.TS Trần Minh Quang - Giảng viên hướng dẫn của nhóm đã hỗ trợ nhiệt tình cho
quá trình hoàn thiện Đồ án tốt nghiệp của nhóm.
Bên cạnh đó, nhóm cũng xin chân thành cảm ơn các giảng viên tại Trường Đại
học Bách Khoa - Đại học Quốc gia Thành phố Hồ Chí Minh, đặc biệt là các giảng viên
của khoa Khoa học và Kỹ thuật Máy tính đã truyền đạt những kiến thức quý báu, là nền
tảng vững chắc để nhóm tiếp tục nghiên cứu và hoàn thiện đề tài trong suốt thời gian qua.
Cuối cùng, nhóm xin được gửi lời cảm ơn tới các bạn, các anh, các chị khoá trên
đã không ngừng hỗ trợ, chia sẻ kiến thức và góp ý chân thành để hệ thống được hoàn
thiện hơn.
Nhóm sinh viên thực hiện đề tài
2
Tóm tắt
Thương mại điện tử đã và đang trở thành một phần không thể thiếu trong đời sống
hàng ngày của chúng ta với sự mở rộng và đa dạng hóa không ngừng. Các nền tảng
thương mại điện tử cho phép mọi doanh nghiệp từ lớn đến nhỏ đều có thể tiếp cận khách
hàng một cách dễ dàng và thuận tiện nhất. Tuy nhiên, bên cạnh những lợi ích mang lại
thì việc quản lý và tận dụng hiệu quả nguồn dữ liệu trở thành một thách thức không hề
nhỏ.
Trong thế giới số hóa ngày nay, dữ liệu được tạo ra ở mọi lúc, mọi nơi, từ các giao
dịch hay các hoạt động tương tác trên nền tảng thương mại điện tử. Đối với các doanh
nghiệp, đây không chỉ là nguồn thông tin quý báu mà còn là chìa khóa giúp tối ưu hóa
hoạt động kinh doanh và nâng cao sức cạnh tranh trên thị trường. Tuy nhiên, việc phân
tích dữ liệu đang trở nên ngày càng phức tạp do khối lượng lớn và đòi hỏi sử dụng công
nghệ tiên tiến, điều này tạo ra khó khăn đặc biệt cho các nhà kinh doanh nhỏ lẻ không
am hiểu về công nghệ. Điều này làm rõ nhu cầu thiết yếu cho một giải pháp có thể đơn
giản hóa quá trình phân tích dữ liệu, đặc biệt là cho những người không có nền tảng kỹ
thuật mạnh.
Vì vậy, trong đề tài này, nhóm đề xuất xây dựng hệ thống phân tích dữ liệu và trí tuệ
kinh doanh (BI) để phục vụ cho việc phân tích và khai phá dữ liệu trong thương mại điện
tử. Hệ thống này sẽ được thiết kế để tự động hóa các quá trình phức tạp và cung cấp
giao diện trực quan, giúp người dùng dễ dàng hiểu và sử dụng các công cụ phân tích.
Đặc biệt, hệ thống sẽ tích hợp các công cụ hỗ trợ quyết định, giúp các doanh nghiệp nhỏ
lẻ không chỉ theo dõi dữ liệu mà còn phân tích và tạo ra các giá trị cụ thể từ dữ liệu đó.
Thông qua việc phát triển hệ thống này, nhóm mong muốn sẽ giúp các doanh nghiệp nhỏ
giải quyết các thách thức kỹ thuật, giúp họ tận dụng tối đa nguồn dữ liệu quý báu thu
thập được, qua đó đưa ra những quyết định kinh doanh chính xác, hiệu quả và kịp thời.
Nhóm sinh viên thực hiện đề tài
3
MỤC LỤC
DANH SÁCH HÌNH VẼ
9
DANH SÁCH BẢNG
10
I
Giới thiệu đề tài
11
1
Thực trạng đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2
Mục tiêu đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.1
Thu thập và lưu trữ dữ liệu . . . . . . . . . . . . . . . . . . . .
12
2.2
Thống kê và theo dõi tình hình kinh doanh . . . . . . . . . . . .
13
2.3
Giải quyết các bài toán kinh doanh . . . . . . . . . . . . . . . .
13
2.4
Xây dựng chatbot hỗ trợ truy vấn và trích xuất thông tin . . . .
13
Định hướng nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.1
Đối tượng nghiên cứu . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Khách thể nghiên cứu . . . . . . . . . . . . . . . . . . . . . . .
14
3.3
Phương pháp nghiên cứu . . . . . . . . . . . . . . . . . . . . . .
14
Phạm vi đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3
4
II Cơ sở lý thuyết
1
2
16
Khái lược về thương mại điện tử . . . . . . . . . . . . . . . . . . . . . .
16
1.1
Tổng quan về thương mại điện tử . . . . . . . . . . . . . . . . .
16
1.2
Các dịch vụ tích hợp trong thương mại điện tử . . . . . . . . . .
17
Công nghệ và kỹ thuật . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.1
19
2.2
Ngôn ngữ lập trình . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.a
Python . . . . . . . . . . . . . . . . . . . . . .
19
2.1.b
JavaScript . . . . . . . . . . . . . . . . . . . .
19
Framework xây dựng ứng dụng . . . . . . . . . . . . . . . . . .
20
2.2.a
ReactJS . . . . . . . . . . . . . . . . . . . . .
20
2.2.b
Django . . . . . . . . . . . . . . . . . . . . . .
20
2.3
Hệ quản trị cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . .
21
2.4
Môi trường triển khai . . . . . . . . . . . . . . . . . . . . . . . .
21
2.5
Công nghệ lưu trữ và xử lý dữ liệu lớn . . . . . . . . . . . . . .
22
2.5.a
Minio . . . . . . . . . . . . . . . . . . . . . .
22
2.5.b
Delta Lake . . . . . . . . . . . . . . . . . . .
23
2.5.c
Apache Spark . . . . . . . . . . . . . . . . . .
24
4
2.5.d
Apache Hive . . . . . . . . . . . . . . . . . .
26
2.5.e
Trino SQL Engine . . . . . . . . . . . . . . .
28
OpenAI API . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Kho dữ liệu và hệ hỗ trợ quyết định . . . . . . . . . . . . . . . . . . . .
31
3.1
Tổng quan về Data Lakehouse . . . . . . . . . . . . . . . . . .
31
3.2
Dimensional modeling . . . . . . . . . . . . . . . . . . . . . . .
33
3.3
Phương pháp phân tích dữ liệu . . . . . . . . . . . . . . . . . .
34
3.4
Hệ hỗ trợ quyết định trong kinh doanh . . . . . . . . . . . . . .
35
Kiến thức về học máy (Machine Learning) . . . . . . . . . . . . . . . .
37
4.1
Recurrent Neural Networks . . . . . . . . . . . . . . . . . . . .
37
4.2
Long-Short Term Memory Networks (LSTM) . . . . . . . . . .
38
Một số bài toán kinh doanh trong thương mại điện tử . . . . . . . . . .
40
5.1
Phân tích giỏ hàng bằng thuật toán FP-Growth . . . . . . . . .
40
5.2
Phân khúc khách hàng bằng mô hình RFM . . . . . . . . . . . .
41
2.6
3
4
5
III Phân tích yêu cầu
44
1
Yêu cầu chức năng hệ thống . . . . . . . . . . . . . . . . . . . . . . . .
44
2
Yêu cầu phi chức năng hệ thống . . . . . . . . . . . . . . . . . . . . . .
44
3
Mô hình hóa yêu cầu hệ thống . . . . . . . . . . . . . . . . . . . . . . .
45
3.1
Use-case Diagram . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.2
Activity Diagram . . . . . . . . . . . . . . . . . . . . . . . . . .
55
IV Thiết kế hệ thống
60
1
Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
2
Kiến trúc Data Lakehouse cho Data Service . . . . . . . . . . . . . . .
62
3
Thiết kế cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
4
Thiết kế star schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.1
Chọn business process . . . . . . . . . . . . . . . . . . . . . . .
66
4.2
Xác định độ chi tiết . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.3
Xác định dimenional table . . . . . . . . . . . . . . . . . . . . .
66
4.4
Xác định fact table . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.5
Star schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
Thiết kế các Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.1
Module 1: Xác thực người dùng . . . . . . . . . . . . . . . . .
67
5.2
Module 2: Thu thập và lưu trữ dữ liệu . . . . . . . . . . . . . .
68
5
5
6
7
5.3
Module 3: Phân tích dữ liệu . . . . . . . . . . . . . . . . . . . .
68
5.4
Module 4: Bảng báo cáo Dashboard . . . . . . . . . . . . . . .
68
5.5
Module 5: Chatbot hỗ trợ truy vấn . . . . . . . . . . . . . . . .
69
Mô hình dự đoán các sản phẩm bán chạy trong tương lai . . . . . . . .
69
6.1
Tập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
6.2
Thử nghiệm và đánh giá . . . . . . . . . . . . . . . . . . . . . .
70
6.3
Dữ liệu đầu vào và dữ liệu đầu ra . . . . . . . . . . . . . . . . .
71
Thiết kế phương pháp tự động tạo câu lệnh truy vấn dựa trên yêu cầu
người dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
7.1
Chuẩn bị thông tin ban đầu . . . . . . . . . . . . . . . . . . . .
72
7.2
Hệ thống cấu hình . . . . . . . . . . . . . . . . . . . . . . . . .
72
7.3
Xử lý phản hồi . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
7.4
Thực hiện truy vấn . . . . . . . . . . . . . . . . . . . . . . . . .
74
V Hiện thực hệ thống
75
1
Quản lý mã nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
2
Chức năng xác thực người dùng . . . . . . . . . . . . . . . . . . . . . .
75
3
Chức năng thu thập và lưu trữ dữ liệu . . . . . . . . . . . . . . . . . . .
75
3.1
Hiện thực giao diện . . . . . . . . . . . . . . . . . . . . . . . . .
75
3.2
Hiện thực hệ thống . . . . . . . . . . . . . . . . . . . . . . . . .
76
4
Chức năng phân tích dữ liệu . . . . . . . . . . . . . . . . . . . . . . . .
78
5
Chức năng bảng báo cáo Dashboard . . . . . . . . . . . . . . . . . . . .
80
6
Chức năng chatbot hỗ trợ truy vấn . . . . . . . . . . . . . . . . . . . . .
87
VI Kiểm thử, đánh giá hệ thống
89
1
Đăng nhập, đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
2
Tải dữ liệu lên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
3
Tùy chỉnh Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
4
Tương tác với Chatbot . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
5
Đánh giá hiệu suất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
VIITổng kết
94
1
Kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
2
Những đóng góp của hệ thống . . . . . . . . . . . . . . . . . . . . . . .
94
3
Hạn chế của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
4
Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
6
Tài liệu tham khảo
97
7
DANH SÁCH HÌNH VẼ
1
Dashboard quản lý thương mại điện tử bằng Shopify . . . . . . . . . . .
12
2
Kiến trúc chung của Data Lakehouse [29] . . . . . . . . . . . . . . . . .
32
3
Quá trình hiện thực hệ hỗ trợ quyết định [11] . . . . . . . . . . . . . . .
36
4
Kiến trúc cơ bản của các mô hình RNN . . . . . . . . . . . . . . . . . .
38
5
Kiến trúc cơ bản của mô hình LSTM . . . . . . . . . . . . . . . . . . .
39
6
Cơ chế hoạt động của mô hình LSTM [17] . . . . . . . . . . . . . . . .
39
7
Phân tích giỏ hàng bằng thuật toán FP-Growth [32] . . . . . . . . . . .
41
8
Thực hiện phân khúc khách hàng dựa trên chỉ số RFM . . . . . . . . . .
42
9
Use-case đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
10
Use-case thu thập và lưu trữ dữ liệu . . . . . . . . . . . . . . . . . . . .
48
11
Use-case xem Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . .
50
12
Use-case phân tích và dự đoán . . . . . . . . . . . . . . . . . . . . . . .
52
13
Use-case Chatbot hệ thống . . . . . . . . . . . . . . . . . . . . . . . . .
54
14
Activity Diagram thu thập và lưu trữ dữ liệu . . . . . . . . . . . . . . .
55
15
Activity Diagram hoạt động xem Dashboard . . . . . . . . . . . . . . .
56
16
Activity Diagram phân tích và dự đoán . . . . . . . . . . . . . . . . . .
57
17
Activity Diagram sử dụng Chatbot . . . . . . . . . . . . . . . . . . . . .
58
18
Kiến trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
19
Django Rest Framework . . . . . . . . . . . . . . . . . . . . . . . . . .
61
20
Kiến trúc Data Service . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
21
Lược đồ ERD cho hệ thống . . . . . . . . . . . . . . . . . . . . . . . . .
64
22
Star Schema [link] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
23
Biểu đồ tổng số sản phẩm bán ra theo thời gian (hàng ngày) . . . . . . .
69
24
Đánh giá kết quả model LSTM . . . . . . . . . . . . . . . . . . . . . . .
71
25
Giao diện đăng nhập Website . . . . . . . . . . . . . . . . . . . . . . . .
75
26
Giao diện đăng ký Website . . . . . . . . . . . . . . . . . . . . . . . . .
75
27
Giao diện nhập dữ liệu vào hệ thống . . . . . . . . . . . . . . . . . . . .
76
28
Giao diện xem trước dữ liệu được nhập vào . . . . . . . . . . . . . . . .
76
29
Giao diện Minio với user ”test-user” . . . . . . . . . . . . . . . . . . . .
78
30
Giao diện tổng quan Dashboard . . . . . . . . . . . . . . . . . . . . . .
80
31
Giao diện tùy chỉnh và các chỉ số chính . . . . . . . . . . . . . . . . . .
81
32
Bảng chọn thêm mới biểu đồ trong Dashboard . . . . . . . . . . . . . .
82
33
Bảng chọn thêm mới bộ lọc trong Dashboard . . . . . . . . . . . . . . .
83
8
34
Quá trình sử dụng bộ lọc cho phân tích . . . . . . . . . . . . . . . . . .
83
35
Biểu đồ thể hiện tổng doanh thu theo thời gian . . . . . . . . . . . . . .
84
36
Giao diện phân tích thống kê sản phẩm . . . . . . . . . . . . . . . . . .
84
37
Giao diện hiển thị thông tin chi tiết sản phẩm . . . . . . . . . . . . . . .
85
38
Giao diện dự đoán các sản phẩm bán chạy . . . . . . . . . . . . . . . .
85
39
Giao diện đề xuất các sản phẩm combo . . . . . . . . . . . . . . . . . .
86
40
Giao diện đề xuất phân khúc khách hàng . . . . . . . . . . . . . . . . .
87
41
Giao diện tổng quan của Chatbot . . . . . . . . . . . . . . . . . . . . . .
87
42
Giao diện quá trình sử dụng Chatbot . . . . . . . . . . . . . . . . . . . .
88
9
DANH SÁCH BẢNG
1
Tổng hợp các dịch vụ tích hợp thương mại điện tử phổ biến . . . . . . .
18
2
So sánh lý do chọn Apache Spark và pandas . . . . . . . . . . . . . . .
26
3
Tổng hợp các khả năng được hỗ trợ bởi OpenAI API . . . . . . . . . .
30
4
Đặc tả use-case đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . .
46
5
Đặc tả use-case đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
6
Đặc tả use-case nhập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . .
49
7
Đặc tả use-case xem Dashboard . . . . . . . . . . . . . . . . . . . . . .
51
8
Đặc tả use-case phân tích và dự đoán . . . . . . . . . . . . . . . . . . .
53
9
Đặc tả use-case Chatbot hệ thống . . . . . . . . . . . . . . . . . . . . .
54
11
Bảng dự đoán giá trị tăng trưởng sau 30 ngày của 10 sản phẩm đầu . . .
71
17
Đánh giá hiệu suất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
10
I. Giới thiệu đề tài
1. Thực trạng đề tài
Thương mại điện tử đã phát triển và trở nên phổ biến rộng rãi trên toàn thế giới, biến
đổi cách mà chúng ta mua sắm và kinh doanh. Sự phát triển này không chỉ đem lại cơ
hội mới cho các doanh nghiệp mà còn tạo ra một lượng lớn dữ liệu hay thậm chí là ”Big
Data”. Nguồn dữ liệu này nếu được phân tích và khai thác đúng cách, có thể mở ra
những tri thức mới và tạo ra nhiều giá trị tiềm năng cho doanh nghiệp.
Tuy nhiên, phần lớn các doanh nghiệp hiện nay vẫn chưa tận dụng và ứng dụng được
”sức mạnh” từ những nguồn dữ liệu này. Họ chủ yếu chỉ dừng lại ở việc lưu trữ và quản
lý dữ liệu mà chưa thực sự đi sâu vào việc phân tích và khai thác dữ liệu để cải thiện
hoạt động kinh doanh và tạo ra lợi thế cạnh tranh trên thị trường.
Hiện nay, đã có nhiều phần mềm và công cụ hỗ trợ cho việc kinh doanh thương mại
điện tử như Shopify, WooCommerce, hay Magento. Ngoài ra, kinh doanh trên các nền
tảng thương mại điện tử lớn như Shopee, Tiki, và Lazada cũng được cung cấp đầy đủ
các tính năng cần thiết. Tuy nhiên, những nền tảng này chủ yếu giúp cho doanh nghiệp
theo dõi và thống kê tình hình kinh doanh của mình, mà chưa chú trọng trong việc hỗ
trợ doanh nghiệp đưa ra các quyết định kinh doanh dựa trên dữ liệu.
11
Hình 1: Dashboard quản lý thương mại điện tử bằng Shopify
Do đó, nhóm nhận thấy được sự quan trọng và cấp thiết cho việc phát triển các công
cụ và giải pháp giúp cho doanh nghiệp có thể phân tích và khai thác dữ liệu một cách
hiệu quả hơn, từ đó đưa ra các quyết định kinh doanh thông minh và chính xác. Điều
này sẽ giúp doanh nghiệp tận dụng tối đa lợi ích từ nguồn dữ liệu mà thương mại điện
tử mang lại, đồng thời cải thiện hiệu suất và sức cạnh tranh trên thị trường.
2. Mục tiêu đề tài
Mục tiêu của nhóm nghiên cứu là tạo ra một hệ thống có thể phục vụ cho việc hỗ trợ
ra quyết định kinh doanh về thương mại điện tử dựa trên dữ liệu thu thập được từ lịch
sử đơn hàng của doanh nghiệp được ghi lại trên các nền tảng website.
Để có thể xây dựng được một hệ thống đảm bảo chất lượng và hiệu quả, nhóm đã đặt
ra mục tiêu phát triển các chức năng cụ thể như sau:
2.1
Thu thập và lưu trữ dữ liệu
− Xác định định dạng dữ liệu đầu vào và chuẩn hóa dữ liệu để đảm bảo tính nhất quán
và dễ dàng xử lý trong các bước tiếp theo.
− Có khả năng tích hợp dữ liệu từ những nguồn khác nhau để tạo thành một hệ thống
thống nhất.
12
− Xây dựng cơ sở dữ liệu phù hợp để lưu trữ dữ liệu một cách an toàn và hiệu quả.
2.2
Thống kê và theo dõi tình hình kinh doanh
− Thực hiện các kỹ thuật phân tích dữ liệu để hiểu rõ hơn về hoạt động kinh doanh
và hành vi mua sắm của khách hàng.
− Tạo ra bảng điều khiển trực quan (Dashboard) để hiển thị các chỉ số kinh doanh
quan trọng và dễ dàng theo dõi tình hình hoạt động qua nhiều tiêu chí khác nhau.
− Hệ thống cho phép người dùng có thể tùy chỉnh báo cáo một cách linh hoạt để phục
vụ cho nhiều nhu cầu và mục đích khác nhau .
2.3
Giải quyết các bài toán kinh doanh
− Sử dụng các mô hình học máy để dự đoán xu hướng thị trường hay nhu cầu về sản
phẩm và dịch vụ trong tương lai.
− Có khả năng đề xuất các chiến lược kinh doanh như về sản phẩm, giá cả, khách
hàng hay tiếp thị quảng cáo...
− Trình bày và lý giải được độ tin cậy và hiệu quả của các dự đoán và đề xuất trên.
2.4
Xây dựng chatbot hỗ trợ truy vấn và trích xuất thông tin
− Tự động trích xuất thông tin từ cơ sở dữ liệu theo nhu cầu của người dùng.
− Đáp ứng được các thông tin cơ bản về hoạt động kinh doanh như doanh thu, lợi
nhuận, số lượng bán theo thời gian hay từng mặt hàng.
− Có thể tóm tắt tổng quan về tình hình kinh doanh hay đưa ra các gợi ý phân tích sâu
sắc hơn.
3. Định hướng nghiên cứu
3.1
Đối tượng nghiên cứu
− Dữ liệu thu thập được trong quá trình kinh doanh của doanh nghiệp từ các nền tảng
kinh doanh thương mại điện tử.
− Bố cục trình bày bảng điều khiển (Dashboard) để tối ưu hóa giao diện và trải nghiệm
người dùng.
13
− Mô hình học máy (Machine Learning) dùng để dự đoán các chỉ số quan trọng theo
thời gian.
− Các bài toán phổ biến và hướng giải quyết trong việc kinh doanh hay bán lẻ.
− Chatbot được tích hợp ChatGPT thông qua API để xử lý các yêu cầu và nhận phản
hồi.
3.2
Khách thể nghiên cứu
Nhóm tập trung vào các cá nhân, tổ chức hay doanh nghiệp kinh doanh nhỏ lẻ trên
thương mại điện tử. Họ là những người không am hiểu nhiều về công nghệ, gặp khó
khăn trong việc sử dụng các công cụ hay nền tảng phân tích dữ liệu đòi hỏi kỹ thuật
chuyên môn cao.
3.3
Phương pháp nghiên cứu
− Nghiên cứu định lượng: Sử dụng phương pháp thu thập và phân tích dữ liệu số từ
lịch sử đơn hàng và các hoạt động kinh doanh để xác định xu hướng, mẫu hành vi
mua hàng và hiệu quả của các chiến dịch tiếp thị. Nhóm sẽ áp dụng các kỹ thuật
thống kê và học máy để phân tích dữ liệu, từ đó tạo ra các dự báo và đề xuất chiến
lược.
− Nghiên cứu định tính: Phân tích các phản hồi, đánh giá trải nghiệm từ người dùng
để thu thập thông tin chi tiết về thái độ hay sự hài lòng. Nhóm sẽ dùng những thông
tin này để hiểu rõ hơn về nguyện vọng của khách hàng và cải thiện tính năng của
hệ thống.
− Nghiên cứu tài liệu: Sử dụng các nghiên cứu, báo cáo, và tài liệu liên quan đến kinh
doanh trên thương mại điện tử và phương pháp phân tích dữ liệu hiện có để bổ trợ
cho quá trình đề xuất giải quyết các bài toán trong kinh doanh.
4. Phạm vi đề tài
Thứ nhất, về dữ liệu sử dụng
Nhóm tập trung vào dữ liệu liên quan đến lịch sử đơn hàng được ghi nhận lại trên các
nền tảng về thương mại điện tử. Dữ liệu được tải lên chỉ cho phép ở định dạng file CSV
hoặc XLSX. Ngoài ra, dung lượng cho phép tải lên của dữ liệu không được quá 2GB.
14
Thứ hai, về ngôn ngữ hệ thống
Hiện tại nhóm thực hiện giao diện sử dụng cho người dùng hoàn toàn bằng ngôn ngữ
Tiếng Anh. Tuy nhiên, trong phần chatbot, người dùng vẫn có thể sử dụng Tiếng Việt
để thực hiện tra cứu và truy xuất thông tin.
Thứ ba, về thời gian thực hiện
Nhóm tập trung vào việc nghiên cứu và hiện thực hệ thống trong 30 tuần kể từ khi
hoàn thành việc chọn đề tài nghiên cứu.
15
II. Cơ sở lý thuyết
1. Khái lược về thương mại điện tử
1.1
Tổng quan về thương mại điện tử
Thương mại điện tử, hay E-commerce, là việc sử dụng các phương tiện điện tử, đặc
biệt là Internet, để thực hiện giao dịch kinh doanh mua bán hàng hóa và dịch vụ. Nó đã
ảnh hưởng rất nhiều đến hệ thống thị trường truyền thống trên thế giới và giúp cải thiện
cuộc sống của con người. Phạm vi của thương mại điện tử rất rộng, bao gồm nhiều hình
thức và khía cạnh khác nhau [1].
Dưới đây là tổng quan về các mô hình kinh doanh phổ biến trong lĩnh vực thương
mại điện tử hiện nay:
− Mô hình B2B (Business to Business): Giao dịch giữa các doanh nghiệp.
− Mô hình B2C (Business to Consumer): Giao dịch giữa doanh nghiệp và người tiêu
dùng.
− Mô hình C2C (Consumer to Consumer): Giao dịch giữa người tiêu dùng với người
tiêu dùng.
− Mô hình C2B (Consumer to Business): Người tiêu dùng cung cấp sản phẩm hoặc
dịch vụ cho doanh nghiệp.
Thương mại điện tử không chỉ mang lại lợi ích lớn cho doanh nghiệp mà còn cho
người tiêu dùng. Nó giúp tiết kiệm thời gian và chi phí, đồng thời tăng cường khả năng
cạnh tranh thông qua việc mở rộng thị trường và tiếp cận nhiều khách hàng hơn, cũng
như nâng cao chất lượng dịch vụ. Sự phát triển mạnh mẽ của thương mại điện tử được
thúc đẩy bởi sự phổ biến của công nghệ thông tin, cách thức giao dịch qua cổng thanh
toán điện tử, Big Data và phân tích dữ liệu, mạng xã hội hay gần đây nhất là sự bùng nổ
của Trí tuệ nhân tạo (AI).
Tuy nhiên, bên cạnh những lợi ích và cơ hội, thương mại điện tử cũng đối mặt với
nhiều thách thức như đảm bảo an ninh mạng hay rủi ro trong quá trình giao dịch trực
tuyến. Các nước đang phát triển cũng phải đối mặt với nhiều thách thức để thực hiện
thương mại điện tử hiệu quả khi so sánh với các nước phát triển. Khi giá cước internet
giảm, thương mại điện tử sẽ phát triển nhanh chóng và nhiều doanh nghiệp sẽ bị loại bỏ.
Sự tiện lợi là một trong những lợi thế chính của thương mại điện tử đối với người tiêu
dùng và điều đó mới có thể tăng cường sự trung thành của khách hàng.
16
Tại Việt Nam, thương mại điện tử bán lẻ (B2C) đã đạt tổng doanh thu 16,4 tỷ USD
năm 2022, chiếm 7,5% tổng doanh thu bán lẻ hàng hóa và dịch vụ tiêu dùng của cả nước,
tăng trưởng 20% so với năm 2021. Trong đó, có đến 78% người dùng Internet tham gia
mua sắm trực tuyến, tăng 3% so với năm 2021. Bên cạnh đó, Bộ Công Thương ghi
nhận đăng ký của 1.622 website, ứng dụng thương mại điện tử thuộc 44% tổng số doanh
nghiệp trong nước, tăng 1% so với năm 2021 [2].
Từ những thống kê trên, ta có thể thấy rằng thương mại điện tử đang phát triển rất
mạnh mẽ ở Việt Nam. Điều đó dẫn đến sự ban hành của nhiều văn bản quy phạm
pháp luật mới có ảnh hưởng trực tiếp đến hoạt động kinh doanh trên không gian mạng,
như Luật Bảo vệ quyền lợi người tiêu dùng, Luật Giao dịch điện tử, Nghị định số
91/2022/NĐ-CP về quản lý, sử dụng dịch vụ công trực tuyến [2]... Đây chính là cách
để giúp thiết lập một môi trường kinh doanh trực tuyến an toàn, công bằng và bền vững,
đồng thời tăng cường sự tin cậy và niềm tin của người tiêu dùng.
1.2
Các dịch vụ tích hợp trong thương mại điện tử
Trong thời kỳ đầu của thương mại điện tử, các nhà bán lẻ thường áp dụng các giải
pháp tích hợp dọc để kiểm soát toàn bộ chuỗi giá trị thương mại điện tử. Tuy nhiên, họ
dần nhận ra rằng để đạt được sự linh hoạt, một cách tiếp cận tốt hơn là tập trung vào
một số khả năng cốt lõi và sau đó xây dựng một hệ thống có thể được mở rộng bằng các
dịch vụ bổ sung từ các nhà cung cấp bên thứ ba. Do đó, việc nắm bắt các khả năng của
nền tảng thương mại điện tử hiện đại trong việc hỗ trợ dịch vụ tích hợp là cực kì là quan
trọng, nhằm mở đường cho kiến trúc nền tảng dịch vụ tích hợp [3].
Các nhà cung cấp iPaaS (Integration Platform as a Service) kết hợp khả năng quản lý
API cùng với quản trị SOA (Service-Oriented Architecture) để cung cấp giải pháp toàn
diện cho cả dịch vụ SOA và REST web. Cả hai đều dựa trên nguyên tắc thiết kế kiến
trúc hướng dịch vụ và nhằm mục đích quản lý chu trình dịch vụ từ thiết kế, triển khai,
vận hành, bảo trì và hoạt động của các dịch vụ và API. Trong đó với khả năng linh động
và tính chất mở rộng của API có thể được sử dụng cả bên trong và bên ngoài hệ thống
[3]. Dưới đây bảng tổng hợp các các dịch vụ có thể tích hợp để hỗ trợ và tối ưu hóa hệ
thống trong lĩnh vực thương mại điện tử:
17
Dịch vụ tích hợp
Tính năng
Tự động cập nhật thông tin về hàng tồn kho, giúp quản
Quản lý hàng tồn kho
lý tồn kho hiệu quả và giảm thiểu rủi ro hết hàng hoặc
tồn kho quá mức.
Quản lý bán hàng và quan
hệ khách hàng (CRM)
Tích hợp nhà cung cấp dịch
vụ vận chuyển
Hỗ trợ theo dõi tương tác với khách hàng, quản lý dữ
liệu bán hàng và cung cấp thông tin chi tiết để cải thiện
mối quan hệ với khách hàng.
Tự động hóa việc tính phí vận chuyển, in nhãn vận
chuyển, theo dõi các đơn hàng và cập nhật trạng thái
giao hàng cho khách hàng.
Tự động hóa việc ghi chép tài chính, quản lý hóa đơn,
Tích hợp kế toán
và theo dõi thu chi, giảm thiểu rủi ro và tăng hiệu quả
quản lý tài chính.
Kết nối giỏ hàng trên website với các hệ thống khác như
Tích hợp giỏ hàng
quản lý hàng tồn kho, xử lý thanh toán, và quản lý đơn
hàng.
Kết nối hệ thống thương mại điện tử với các sàn giao
Tích hợp thị trường
dịch trực tuyến như Amazon, eBay cho phép tự động
hóa công việc từ một nền tảng trung tâm.
Hệ thống hoạch định tài
nguyên cho doanh nghiệp
(ERP)
Tích hợp điểm bán hàng
(POS)
Tự động hóa và tối ưu hóa các quy trình kinh doanh như
quản lý hàng tồn kho, tài chính, nhân sự.
Liên kết hệ thống bán lẻ trực tuyến với các điểm bán
hàng giúp đồng bộ hóa dữ liệu bán hàng và tồn kho một
cách toàn diện.
Kết nối hệ thống thương mại điện tử với các cổng thanh
Tích hợp thanh toán
toán trực tuyến giúp xác thực thanh toán, quản lý giao
dịch và cung cấp các lựa chọn thanh toán đa dạng cho
khách hàng.
Bảng 1: Tổng hợp các dịch vụ tích hợp thương mại điện tử phổ biến
Bên cạnh đó, còn có một dạng tích hợp nữa là tích hợp BI (Business Intelligent) vào
thương mại điện tử. Đây là một lĩnh vực triển vọng trong bối cảnh hiện nay nhưng chưa
18
được khai thác đầy đủ. Sự kết hợp giữa BI và thương mại điện tử cho phép công ty tăng
cường sức cạnh tranh, cải thiện quản lý hàng tồn kho, tối ưu hóa quy trình, nhận biết xu
hướng thị trường, tăng cường hiệu suất tài chính và thực hiện các chiến dịch marketing
có mục tiêu rõ ràng [4]. Do đó, nhóm quyết định sẽ tập trung nghiên cứu vào dịch vụ
tích hợp này này giải quyết bài toán phân tích và khai thác dữ liệu để cải thiện hoạt động
kinh doanh và tạo ra lợi thế cạnh tranh trên thị trường cho doanh nghiệp.
2. Công nghệ và kỹ thuật
2.1
2.1.a
Ngôn ngữ lập trình
Python
Python là ngôn ngữ lập trình bậc cao, mã nguồn mở của tác giả Guido van Rossum
và lần đầu ra mắt vào năm 1990. Python sử dụng kiểu cấp phát bộ nhớ động, hỗ trợ tốt
cho lập trình theo hướng đối tượng, lập trình hàm.
Cú pháp và cấu trúc code của Python dễ hiểu, dễ sử dụng ngay cả khi người dùng có
ít kiến thức về lập trình. Python hỗ trợ rất mạnh các vấn đề về machine learning, deep
learning,... nhờ vào kho tàng thư viện khổng lồ của mình. Một số thư viện Python nổi
tiếng như numpy, pandas,...
Ngoài kho thư viện hỗ trợ lớn, cũng có nhiều framework được xây dựng sử dụng
Python, có thể kể đến như là Django, Pyramid, Flask,... Các framework này được ra đời
với những mục đích khác nhau và có ý nghĩa sử dụng khác nhau phù hợp cho từng loại
hệ thống.
Qua hơn 30 năm ra mắt, Python đã trở thành một ngôn ngữ lập trình quen thuộc trong
giới lập trình. Phiên bản mới nhất của Python tính tới thời điểm nhóm thực hiện đề tài
là 3.12.1 và nhóm đã sử dụng phiên bản này để hiện thực các nội dung khác.
2.1.b
JavaScript
Javascript là ngôn ngữ lập trình thông dịch ra mắt lần đầu tiên vào năm 1955 bỏi một
nhân viên của Netscape. Ngôn ngữ lập trình này ngay từ khi ra đời đã trở nên cực kì phổ
biến và kéo dài cho đến tận ngày nay bởi những ưu việt của nó: Không cần trình biên
dịch vì có thể biên dịch trực tiếp bằng HTML, dễ học dễ sừ dụng,...
Javascript có thể được dùng cho cả việc xây dựng thành phần server hoặc thành
phần client. Một số framework Javascript nổi tiếng: NodeJS, React, VueJS, jQuery,
AngularJS,...
19
2.2
Framework xây dựng ứng dụng
2.2.a
ReactJS
ReactJS là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản
thân nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành
phần trên website. Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ
liệu không chỉ thực hiện được trên tầng Server mà còn ở dưới Client nữa.
Một số lợi ích của ReactJS [5]:
− Tốc độ phát triển: Về cơ bản, React cho phép các nhà phát triển sử dụng các phần
riêng lẻ trong ứng dụng của họ ở cả phía máy khách và phía máy chủ, điều này cuối
cùng giúp tăng tốc độ của quá trình phát triển.
− Tính linh hoạt: So với các framework frontend khác, các đoạn mã ReactJS dễ bảo
trì hơn và linh hoạt hơn do cấu trúc mô-đun của nó. Sự linh hoạt này giúp tiết kiệm
rất nhiều thời gian và chi phí cho nhà phát triển.
− Hiệu suất: ReactJS được thiết kế để mang lại hiệu suất cao. Cốt lõi của framework
này cung cấp một chương trình DOM ảo và server-side rendering, giúp các ứng
dụng phức tạp chạy cực nhanh.
− Tính dễ sử dụng: Việc triển khai React khá dễ thực hiện nếu bạn có một số kiến
thức cơ bản về JavaScript.
− Sử dụng component: Một trong những lợi ích chính của việc sử dụng React JS là
khả năng tái sử dụng các component. Nó tiết kiệm thời gian cho các nhà phát triển
vì họ không phải viết nhiều mã khác nhau cho cùng một tính năng.
2.2.b
Django
Việc xử lý dữ liệu trích xuất thông tin của hệ thống đều được thực hiện trên ngôn ngữ
Python, vì vậy thành phần Server cũng được xây dựng bằng framework của Python để
đồng bộ ngôn ngữ.
Django [6] là một framework sử dụng ngôn ngữ Python để xây dựng ứng dụng phía
Server. Django có các ưu điểm như:
− Mã nguồn mở: Việc cung cấp mã nguồn mở giúp cho việc nghiên cứu trở nên
nhanh chóng và hiệu quả trong thời gian giới hạn của đề tài. Đây cũng là một
framework phổ biến, có cộng đồng sử dụng lớn.
20
− Nguồn thư viện dồi dào: Khi nhắc tới Python, người ta nhắc tới nguồn thư viện
lớn mà ngôn ngữ này hỗ trợ. Với việc sử dụng ngôn ngữ Python thì Django cũng
cung cấp một nguồn lớn các thư viện hỗ trợ cho người lập trình làm việc dễ dàng
hơn.
− Dễ dàng trong việc mở rộng duy trì: Django cung cấp hàng trăm gói thư viện
giúp cho người lập trình có thể phân chia các thành phần của mã nguồn để tái sử
dụng và mở rộng sau này.
− Khả năng bảo mật: Khi lập trình với Django, người lập trình có thể tránh được
những lỗi liên quan tới bảo mật tốt hơn so với một số framework hay ngôn ngữ
lập trình khác. Django có thể tránh được những hình thức tấn công như XSS, SQL
injection, click jacking,...
2.3
Hệ quản trị cơ sở dữ liệu
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở và
miễn phí, được biết đến với khả năng chạy ổn định trên nhiều nền tảng khác nhau như
MacOS, Solaris, và Windows. Nổi bật với cộng đồng người dùng lớn và khả năng mở
rộng cao, PostgreSQL cho phép người dùng tự định nghĩa các kiểu dữ liệu riêng, xây
dựng các hàm tùy chỉnh, và kết nối dễ dàng với các ứng dụng được viết trên nhiều ngôn
ngữ lập trình khác nhau mà không yêu cầu biên dịch lại cơ sở dữ liệu. Điều này giúp tạo
ra một môi trường linh hoạt và mạnh mẽ cho việc phát triển ứng dụng [7].
2.4
Môi trường triển khai
Việc setup và deploy application lên một hoặc nhiều server rất vất vả từ việc phải cài
đặt các công cụ, môi trường cần cho application đến việc chạy được ứng dụng chưa kể
việc không đồng nhất giữa các môi trường trên nhiều server khác nhau. Chính vì lý do
đó nhóm đã chọn docker để triển khai hệ thống vào thực tế.
Bên cạnh đó, Docker compose là một công cụ giúp định nghĩa và chạy multi-container
trong những ứng dụng sử dụng Docker. Với Compose, chúng ta có thể config các services để phục vụ cho ứng dụng. Và thuận tiện hơn khi chỉ với một câu lệnh, chúng ta có
thể tạo và bắt đầu tất cả các Docker containers services mà chúng ta sử dụng [8].
21
2.5
Công nghệ lưu trữ và xử lý dữ liệu lớn
2.5.a
Minio
MinIO là dịch vụ lưu trữ đối tượng mã nguồn mở, hiệu suất cao, được thiết kế cho
môi trường dựa trên nền tảng đám mây và môi trường được chứa trong vùng chứa. Nó
được xây dựng dựa trên triết lý thiết kế tối giản, tập trung vào hiệu suất và khả năng mở
rộng đồng thời cung cấp các tính năng giúp nó trở thành lựa chọn lý tưởng cho các ứng
dụng yêu cầu tính sẵn sàng cao và quản lý dữ liệu quy mô lớn. MinIO tương thích với
API Amazon S3, giúp nó có khả năng thích ứng và tích hợp rộng rãi với nhiều dịch vụ
đám mây (cloud services) và khung xử lý dữ liệu (data processing framework).
Các tính năng chính của Minio:
− Hiệu suất cao (high performance): MinIO cung cấp hiệu suất cực cao cho cả hoạt
động đọc và ghi, điều này rất cần thiết để xử lý các tập dữ liệu lớn thường thấy
trong các hồ dữ liệu.
− Khả năng mở rộng (Scalability): Nó có thể mở rộng từ một phiên bản đơn lẻ thành
một thiết lập phân tán quy mô lớn có thể xử lý hàng petabyte dữ liệu và hàng triệu
IOPS (Hoạt động đầu vào/đầu ra mỗi giây).
− Tích hợp Kubernetes (Kubernetes integration):MinIO có thể dễ dàng triển khai
trong các môi trường được phối hợp (như docker và kubernetes), khiến nó trở nên
phù hợp tuyệt vời cho các ứng dụng phân tán hiện đại.
− Multi-tenancy: MinIO hỗ trợ multi-tenancy cho phép nhiều người dùng hoặc ứng
dụng hoạt động trong một phiên bản duy nhất mà không bị nhiễu, điều này rất hữu
ích cho bối cảnh dữ liệu phức tạp.
− Bảo vệ dữ liệu (data protection): Nó cung cấp các tính năng bảo vệ dữ liệu mạnh
mẽ, bao gồm mã hóa xóa và bảo vệ bitrot, đảm bảo tính toàn vẹn và độ bền của dữ
liệu.
− Khả năng tương thích API: Khả năng tương thích của nó với API Amazon S3 cho
phép MinIO tích hợp liền mạch với nhiều ứng dụng và dịch vụ tương thích với S3,
bao gồm các công cụ xử lý dữ liệu phổ biến như Apache Spark và Apache Hive.
Vai trò của MinIO trong Kiến trúc Data Lakehouse: Việc tích hợp MinIO vào
kiến trúc Data Lakehouse cung cấp giải pháp lưu trữ mạnh mẽ và có thể mở rộng, hỗ trợ
cả khối lượng công việc vận hành và phân tích.
22
− MinIO đóng vai trò là xương sống cho việc lưu trữ, có khả năng lưu trữ đa dạng
các định dạng dữ liệu, từ dữ liệu có cấu trúc đến dữ liệu phi cấu trúc như nhật ký
và đa phương tiện.
− MinIO cho phép tách biệt hoạt động lưu trữ và xử lý, giúp dữ liệu có thể được xử
lý bởi các môi trường điện toán khác nhau theo nhu cầu, nâng cao tính linh hoạt và
hiệu quả.
− Tính năng bảo mật của MinIO, bao gồm mã hóa và chính sách truy cập, đảm bảo
rằng dữ liệu được bảo vệ và tuân thủ các tiêu chuẩn ngành.
− Là giải pháp nguồn mở, MinIO giúp giảm chi phí sở hữu cơ sở hạ tầng dữ liệu so
với các giải pháp lưu trữ độc quyền, làm giảm tổng chi phí cho tổ chức.
2.5.b
Delta Lake
Delta Lake là một dự án nguồn mở cung cấp lớp lưu trữ có khả năng mang lại các
giao dịch ACID (Atomicity, Consistency, Isolation, Durability) cho Apache Spark và
khối lượng công việc dữ liệu lớn. Bắt nguồn từ Databricks, Delta Lake được thiết kế để
cải thiện độ tin cậy của dữ liệu và hỗ trợ các hoạt động xử lý dữ liệu phức tạp vốn rất
quan trọng trong môi trường dựa trên dữ liệu hiện đại, đặc biệt là trong việc xử lý dữ
liệu lớn, chịu tải cao và thực hiện các thao tác dữ liệu cùng lúc (concurrency). Điều này
cho phép Delta Lake hỗ trợ việc đọc và ghi đồng thời (concurrent read-write), điều mà
các định dạng lưu trữ dữ liệu truyền thống không hỗ trợ.
tính năng chính của Delta Lake:
− ACID Transactions: Delta Lake đảm bảo rằng các hoạt động dữ liệu mang tính giao
dịch và nguyên tử (atomic), do đó duy trì tính toàn vẹn dữ liệu trên các tập dữ liệu
quy mô lớn và nhiều hoạt động đồng thời.
− Xử lý metadata mở rộng: Nó xử lý siêu dữ liệu (metadata) ở quy mô lớn một cách
hiệu quả, cho phép hiệu suất nhanh hơn và đáng tin cậy hơn ngay cả với hàng
petabyte dữ liệu và hàng tỷ tệp.
− Thực thi lược đồ (schema enforcement):Delta Lake cung cấp xác thực lược đồ mạnh
mẽ, giúp ngăn ngừa hỏng dữ liệu và đảm bảo chất lượng dữ liệu bằng cách thực thi
các loại và cấu trúc dữ liệu khi dữ liệu được nhập.
23
− Phiên bản dữ liệu (Data versioning/Time travel): Nó cho phép các kỹ sư dữ liệu và
nhà khoa học truy cập và hoàn nguyên về các phiên bản dữ liệu trước đó để kiểm
tra, khôi phục hoặc tái tạo các thử nghiệm.
− Xử lý hàng loạt và truyền phát thống nhất: Delta Lake xử lý dữ liệu hàng loạt (batch)
và truyền phát (stream) như một thực thể, đơn giản hóa việc phát triển đường ống
dữ liệu và giảm sự phức tạp của việc xây dựng và duy trì các hệ thống riêng biệt để
xử lý hàng loạt và thời gian thực.
Vai trò của Delta Lake trong kiến trúc Data Lakehouse:
− Độ tin cậy dữ liệu nâng cao: Delta Lake biến hồ dữ liệu (data lake) thông thường
thành kho lưu trữ đáng tin cậy hơn bằng cách đảm bảo rằng tất cả các hoạt động dữ
liệu đều tuân thủ ACID, giảm đáng kể các vấn đề về dị thường và không nhất quán
của dữ liệu.
− Quản lý dữ liệu liền mạch: Với các tính năng như thực thi lược đồ và du hành thời
gian (time travel), Delta Lake đơn giản hóa việc quản lý dữ liệu, giúp các tổ chức
dễ dàng duy trì chất lượng dữ liệu và khả năng truy xuất nguồn gốc trong suốt vòng
đời dữ liệu.
− Hiệu suất được cải thiện: Delta Lake tối ưu hóa hiệu suất truy vấn bằng cách duy
trì siêu dữ liệu có thể mở rộng và cho phép đọc và ghi dữ liệu hiệu quả hơn, điều
này rất cần thiết cho khối lượng công việc phân tích và học máy.
− Hiệu quả chi phí: Bằng cách cải thiện thời gian xử lý dữ liệu và giảm nhu cầu về
nhiều bản sao dữ liệu, Delta Lake có thể giúp giảm chi phí lưu trữ và xử lý tổng thể
trong cơ sở hạ tầng dữ liệu.
2.5.c
Apache Spark
Apache Spark là một hệ thông xử lý phân tán, mã nguồn mở được sử dụng cho khối
lượng công việc dữ liệu lớn. Nó dựa trên Hadoop MapReduce và mở rộng mô hình
MapReduce để đạt được hiệu quả tính toán cao hơn bằng cách xử lý dữ liệu trong bộ
nhớ, và giảm số các bước xử lý nhờ vào việc sử dụng lại dữ liệu trên nhiều hoạt động
song song. Với Spark, chỉ cần một bước tải dữ liệu vào trong bộ nhớ, tất cả các thao tác
thực hiện và kết quả sẽ đều được ghi lại dẫn đến việc thực thi nhanh hơn.
Các thành phần chính của Spark:
24
− Apache Spark Core: là công cụ thực thi chung, cở bản của Spark. Toàn bộ các
chức năng khác đều được xây dựng trên nó. Spark core cung cấp các bộ dữ liệu
tham chiếu và tính toán trong bộ nhớ trong các hệ thống lưu trữ bên ngoài.
− Spark SQL: cung cấp giao diện SQL để truy vấn dữ liệu từ nhiều nguồn khác nhau.
Spark SQL hỗ trợ xử lý dữ liệu cấu trúc và bán cấu trúc thông qua Dataframe và
cung cấp một trình tự xử lý dữ liệu dựa trên SQL.
− Spark Streaming: được thiết kế để xử lý dữ liệu streaming theo thời gian thực.
Nó cung cấp một API để phân tích và xử lý dữ liệu từ nguồn dữ liệu streaming như
Apache Kafka, Flume, HDFS, socket text streams, etc.
− Spark MLlib: là một thư viện học máy (machine learning) tích hợp trong hệ sinh
thái Apache Spark, được thiết kế để hỗ trợ các nhiệm vụ học máy trên dữ liệu lớn.
MLlib cung cấp một loạt các thuật toán học máy phổ biến và các công cụ hỗ trợ để
xử lý và phân tích dữ liệu.
− GraphX: là một framework xử lý dữ liệu đồ thị phân tán trên Spark. Nó cung cấp
API trừu tượng Pregel để thực hiện các phép biến đổi và tính toán trên đồ thị. Ngoài
ra nó tối ưu hóa thời gian chạy cho sự trừu tượng hóa này.
Apache Spark có thể triển khai theo ba cách:
1. Độc lập: Spark Standalone là cách triển khai độc lập của Spark trên hệ thống HDFS,
nghĩa là Spark sẽ chiếm một vị trí và được phân bổ không gian rõ ràng trên HDFS.
Ở đây, Spark sẽ chạy song song với MapReduce để thực hiện tất cả các spark job
trên cluster.
2. Hadoop Yarn: Với cách triển khai này, Spark sẽ chạy trên Yarn mà không cần cài
đặt sẵn hoặc yêu cầu quyền truy cập root. Cách này giúp tích hợp Spark vào hệ
sinh thái Hadoop hoặc Hadoop Stack. Nó cho phép các thành phần khác chạy trên
Hadoop Stack.
3. Spark in MapReduce (SIMR): được sử dụng để triển khai spark job bên cạnh việc
triển khai độc lập. Với SIMR, người dùng có thể chạy Spark và sử dụng shell của
nó mà không cần quyền truy cập.
Trong đồ án này, nhóm sử dụng cách triển khai Hadoop Yarn.
Nhóm chọn Spark cho công việc xử lý dữ liệu sau khi đã so sánh giữa Spark và Pandas
cho đồ án này với các lý do như sau:
25
Tiêu chí
Bảng 2: So sánh lý do chọn Apache Spark và pandas
Apache Spark
pandas
Xử lý dữ liệu lớn Hỗ trợ xử lý dữ liệu lớn trên Phù hợp với dữ liệu nhỏ
cụm máy tính phân tán
và trung bình trên một máy
tính
Hiệu suất
Hiệu suất cao do xử lý dữ Hiệu suất tốt cho dữ liệu
liệu cụm
nhỏ, nhưng có thể giảm khi
dữ liệu lớn
Lập trình
Hỗ trợ nhiều ngôn ngữ như Chủ yếu sử dụng Python
Scala, Java, Python
Tính khả dụng
Phù hợp cho môi trường có Thích hợp cho phân tích và
nhiều nguồn dữ liệu và yêu xử lý dữ liệu tại một địa
cầu xử lý phức tạp
Tích hợp
điểm
Tích hợp nhiều thành phần Tích hợp tốt với nhiều thư
như Spark SQL, MLlib, viện Python như NumPy,
GraphX
Độ phổ cập
SciPy
Được sử dụng rộng rãi Phổ biến trong cộng đồng
trong lĩnh vực big data và khoa học dữ liệu Python
phân tích dữ liệu phức tạp
2.5.d
Apache Hive
Apache Hive là một công cụ kho dữ liệu phân tán, cung cấp giao diện giống SQL
cho phép tương tác giữa người dùng và HDFS. Hive rất hữu ích trong việc thực hiện
các công việc lưu trữ dữ liệu thường xuyên như Truy vấn Adhoc, Đóng gói dữ liệu và
Phân tích các tập dữ liệu lớn được lưu trữ trong các hệ thống tệp phân tán như HDFS
(Hệ thống tệp phân tán Hadoop), tích hợp Hadoop.
Hive cho phép phân tích dữ liueej ở quy mô lớn và nâng cao khả năng chịu lỗi, hiệu suất,
khả năng mở rộng và khả năng kết nối lỏng lẻo với các định dạng đầu vào của nó. Điều
đặc biệt của Hive là khả năng trừu tượng hóa sự phức tạp của các công việc MapReduce.
Thay vì viết các công việc MapReduce phức tạp, chúng ta có thể viết các truy vấn đơn
giản giống như SQL, giúp giảm chi phí ghi nhớ các Java phức tạp.
Các tính năng chính của Hive:
− Truy vấn dữ liệu lớn:Hive tạo điều kiện truy cập vào các tệp được lưu trữ trực tiếp
trong HDFS hoặc trong các hệ thống lưu trữ dữ liệu khác như HBase và quản lý các
26
bộ dữ liệu khổng lồ.
− Đa dạng định dạng file: Nó hỗ trợ nhiều loại định dạng tệp khác nhau như tệp
văn bản, ORC, Parquet, LZO Compression, SEQUENCE FILE, RCFILE (Record
Columnar File), v.v.
− HiveQL: Chỉ cần kiến thức cơ bản về SQL là đủ để làm việc với Hive, chẳng hạn
như bảng, hàng, cột, lược đồ, v.v. Nó giúp việc học dễ tiếp cận hơn bằng cách sử
dụng các khái niệm quen thuộc có trong cơ sở dữ liệu quan hệ, chẳng hạn như cột,
bảng, hàng, lược đồ, v.v. . Sự khác biệt đáng kể nhất giữa HiveQL và SQL là Hive
thực hiện các truy vấn trên cơ sở hạ tầng của Hadoop, trong khi SQL thực hiện các
truy vấn trên cơ sở dữ liệu truyền thống.
− Hỗ trợ phân vùng dữ liệu: Để cải thiện hiệu suất truy vấn, Hive sử dụng cấu trúc
thư mục để “phân vùng”dữ liệu. Các phân vùng và nhóm giúp truy xuất dữ liệu
nhanh chóng.
− Hỗ trợ UDF: Các lập trình viên có thể xác định các hàm Hive do người dùng xác
định (UDF) cho các công việc như làm sạch và lọc dữ liệu theo yêu cầu của họ.
UDF tích hợp thao tác các chuỗi, ngày tháng cũng như các công cụ lưu trữ và khai
thác dữ liệu khác.
− Hỗ trợ ETL: Apache Hive hỗ trợ các Chức năng ETL, tức là trích xuất, chuyển đổi
và tải dữ liệu vào các bảng được kết hợp với các phép nối, phân vùng, v.v.
Vai trò của Hive trong kiến trúc Data Lakehouse: Hive đóng vai trò là Metastore
- là nơi lưu trữ metadata cho các hệ thống kho dữ liệu. Trong một kiến trúc Data Lakehouse, Hive Metastore tạo điều kiện cho việc truy cập và quản lý dữ liệu liền mạch giữa
các hệ thống xử lý dữ liệu khác nhau:
− Điều phối Metadata: Nó phục vụ như một điểm điều phối trung tâm cho tất cả thông
tin metadata, cho phép các hệ thống khác nhau truy cập và chia sẻ một cách nhất
quán.
− Hỗ trợ Phân tích và ML: Hive Metastore giúp việc tích hợp dữ liệu cho phân tích
và học máy trở nên dễ dàng hơn, bởi các kỹ sư dữ liệu có thể sử dụng metadata để
tạo và quản lý các mô hình dữ liệu phức tạp.
− Nâng cao Hiệu suất: Bằng cách cung cấp thông tin chi tiết về cấu trúc dữ liệu
27
2.5.e
Trino SQL Engine
Trino là một công cụ truy vấn SQL phân tán, mã nguồn mở được thiết kế để truy vấn
phân tích nhanh đối với các tập dữ liệu lớn, trải rộng trên nhiều nguồn dữ liệu. Trino
cho phép người dùng truy vấn dữ liệu theo thời gian thực, trực tiếp từ nguồn, điều này
lý tưởng cho các trường hợp sử dụng yêu cầu truy vấn lượng lớn dữ liệu một cách nhanh
chóng và hiệu quả trên một môi trường không đồng nhất.
Các tính năng chính của Trino:
− Hiệu suất cao: Trino được thiết kế để đạt được tốc độ và có thể xử lý các truy vấn
phân tích phức tạp trong thời gian thực, nhanh hơn đáng kể so với nhiều công cụ
SQL khác do công cụ thực thi và kiến trúc phân tán được tối ưu hóa cao.
− Truy vấn liên kết: Một trong những tính năng nổi bật của Trino là khả năng thực
hiện các truy vấn liên kết trên nhiều nguồn dữ liệu khác nhau, chẳng hạn như cơ sở
dữ liệu quan hệ, cơ sở dữ liệu NoSQL và hồ dữ liệu, tất cả đều nằm trong cùng một
truy vấn.
− Khả năng mở rộng: Là một hệ thống phân tán, Trino mở rộng quy mô theo chiều
ngang, thêm nhiều nút hơn để tăng khả năng xử lý truy vấn và xử lý khối lượng dữ
liệu lớn hơn một cách dễ dàng.
− Thực thi truy vấn theo thời gian thực: Trino thực hiện các truy vấn một cách nhanh
chóng mà không cần xử lý trước hoặc di chuyển dữ liệu vào một hệ thống phân tích
riêng biệt. Điều này cho phép hiểu biết ngay lập tức từ dữ liệu hoạt động trực tiếp.
− Tích hợp dễ dàng: Trino tích hợp trơn tru với các nền tảng dữ liệu hiện có và hỗ
trợ các giao diện như JDBC và ODBC, giúp nhiều ứng dụng và công cụ có thể truy
cập được.
Vai trò của Trino trong kiến trúc Data Lakehouse:
− Tương tác trực tiếp với Hồ dữ liệu: Trino có thể truy vấn dữ liệu trực tiếp từ hồ dữ
liệu mà không yêu cầu lưu trữ trung gian hoặc di chuyển dữ liệu, duy trì tính toàn
vẹn và kịp thời của thông tin chuyên sâu về dữ liệu.
− Phân tích hợp nhất: Bằng cách bật truy vấn SQL trên các nguồn dữ liệu khác nhau,
Trino cho phép phân tích hợp nhất, giảm độ phức tạp và chi phí liên quan đến việc
quản lý nhiều hệ thống xử lý dữ liệu.
28
− Khả năng truy cập dữ liệu nâng cao: Khả năng xử lý các truy vấn SQL của Trino
giúp nhiều người dùng hơn, từ nhà phân tích dữ liệu đến người dùng doanh nghiệp,
truy cập và tương tác với dữ liệu được lưu trữ trong Lakehouse dễ dàng hơn, dân
chủ hóa việc truy cập dữ liệu.
− Hoạt động dữ liệu hiệu quả về chi phí: Vì Trino truy vấn dữ liệu tại chỗ và không
yêu cầu các lớp xử lý hoặc lưu trữ dữ liệu bổ sung nên nó có thể giảm đáng kể chi
phí cơ sở hạ tầng và chi phí hoạt động.
2.6
OpenAI API
Khi nhắc đến OpenAI, đa phần người ta sẽ nghĩ ngay đến ChatGPT (Chat Generative
Pre-training Transformer) là một chatbot do chính công ty khởi nghiệp này phát triển.
Đây là một trợ lý ảo sử dụng AI (Trí tuệ nhân tạo) hỗ trợ việc tạo ra các cuộc trò chuyện
tự động và trả lời câu hỏi về đa dạng các chủ đề, lĩnh vực khác nhau. ChatGPT có thể
thực hiện các chức năng từ việc cung cấp thông tin trên nhiều lĩnh vực, sáng tạo nội
dung, xử lý văn bản cho đến việc hỗ trợ lập trình.
Bên cạnh đó, OpenAI còn cung cấp dịch vụ API cho phép các nhà phát triển tích hợp
khả năng xử lý ngôn ngữ tự nhiên của mô hình GPT vào ứng dụng hoặc dịch vụ của họ.
Điều này giúp truy cập vào các mô hình GPT mới nhất của OpenAI, bao gồm cả những
phiên bản được tối ưu hóa cho hội thoại tương tự như ChatGPT. Dưới đây là những khả
năng nổi bật có thể thực hiện được từ dịch vụ Open API [9]:
29
Khả năng thực hiện
Sáng tạo văn bản
(Text generation)
Mô tả
Mô hình sinh văn bản của OpenAI có thể áp dụng cho
cả ngôn ngữ, code và hình ảnh, phản hồi thông qua lệnh
(prompts).
Chuyển đổi yêu cầu thành định dạng JSON thông qua
Gọi hàm
(Function calling)
Nhúng (Embeddings)
việc phát triển hàm để xác nhận người dùng trước khi
thực hiện.
Mô tả các vector số biểu diễn mức độ liên quan của văn
bản, hữu ích cho việc tìm kiếm, phân loại, và đề xuất.
Tùy chỉnh lại mô hình cho phù hợp với các ngữ cảnh cụ
Tinh chỉnh (Fine-tuning)
thể, giúp cải thiện chất lượng, giảm độ trễ và tiết kiệm
chi phí token.
Sáng tạo hình ảnh
(Image generation)
Nhận diện hình ảnh
(Vision)
Bao gồm phương thức sáng tạo hình ảnh, chỉnh sửa và
tạo biến thể ảnh hiện có thông qua mô hình Dall-E 3
hoặc Dall-E 2.
Mô hình có thể hiểu hình ảnh được cho bên cạnh văn
bản, mở rộng khả năng nhận biết giúp cho đa dạng đầu
vào.
Chuyển đổi văn bản và
giọng nói (Text - speech)
Kiểm duyệt nội dụng
(Moderation)
Audio API với TTS giúp biến văn bản thành âm thanh
hỗ trợ nhiều ngôn ngữ và Whisper model có thể chuyển
đổi âm thanh thành văn bản.
Kiểm tra nội dung tuân thủ theo chính sách OpenAI,
phân loại nội dung gây thù hận, quấy rối, tự hại, tình
dục, bạo lực...
Bảng 3: Tổng hợp các khả năng được hỗ trợ bởi OpenAI API
Trong đề tài này, nhóm muốn phát triển tính năng Chatbot cung cấp điểm cuối API
REST HTTP để trả lời các truy vấn của người dùng về tình hình kinh doanh hiện tại từ
nguồn dữ liệu được lưu trữ trong hệ thống. Tận dụng OpenAI API để thực hiện gọi hàm
(Function Calling) và tạo hội thoại (Chat Completion) để tạo ra trợ lý AI phục vụ công
việc kinh doanh.
30
3. Kho dữ liệu và hệ hỗ trợ quyết định
3.1
Tổng quan về Data Lakehouse
Data Lakehouse là một kiến trúc dữ liệu tiên tiến, kết hợp những ưu điểm của Data
Lake và Data Warehouse để tạo ra một nền tảng lưu trữ và phân tích dữ liệu thống nhất.
Mô hình này cung cấp một giải pháp linh hoạt và hiệu quả để quản lý khối lượng dữ liệu
lớn và đa dạng, đồng thời hỗ trợ cả phân tích chi tiết và thông tin chiến lược.
Đặc Điểm của Data Lakehouse: Data Lakehouse giữ nguyên khả năng lưu trữ dữ
liệu lớn không cấu trúc của Data Lake, trong khi tích hợp các tính năng quản lý metadata
và ACID transactions của Data Warehouse. Điều này cho phép nó hỗ trợ các truy vấn và
phân tích dữ liệu hiệu quả cao, cung cấp cái nhìn tổng quan và chi tiết về dữ liệu trong
một môi trường thống nhất.
Lợi Ích của Data Lakehouse:
− Tích Hợp và Quản Lý Dữ Liệu: Data Lakehouse cho phép tích hợp dữ liệu từ
nhiều nguồn khác nhau, bao gồm dữ liệu không cấu trúc và cấu trúc, tạo điều kiện
cho việc truy cập và quản lý dữ liệu một cách trơn tru.
− Hỗ Trợ Phân Tích Đa Dạng: Nền tảng này hỗ trợ cả phân tích truyền thống và
hiện đại, bao gồm machine learning và phân tích thời gian thực, trên cùng một hệ
thống dữ liệu.
− Hiệu Suất và Khả Năng Mở Rộng: Kiến trúc Data Lakehouse được thiết kế để
xử lý hiệu quả các truy vấn lớn và phức tạp, đồng thời có khả năng mở rộng để đáp
ứng nhu cầu ngày càng tăng của dữ liệu.
− Chi Phí Thấp: So với việc duy trì cả Data Lake và Data Warehouse riêng biệt,
Data Lakehouse giảm thiểu sự trùng lặp trong lưu trữ và quản lý dữ liệu, giúp giảm
chi phí tổng thể.
− Bảo Mật và Tuân Thủ: Mô hình này cung cấp các tính năng bảo mật dữ liệu nâng
cao và hỗ trợ tuân thủ các quy định về dữ liệu, đảm bảo an toàn thông tin trong môi
trường kinh doanh hiện đại.
Kiến Trúc của Data Lakehouse
Kiến trúc chung cho data lakehouse chung bao gồm một số lớp (layer):
− Lớp trích xuất: Lớp này trích xuất dữ liệu từ nhiều nguồn khác nhau như cơ sở dữ
liệu giao dịch, API, luồng thời gian thực, hệ thống CRM và cơ sở dữ liệu NoSQL rồi
31
Hình 2: Kiến trúc chung của Data Lakehouse [29]
nhập dữ liệu đó vào hồ dữ liệu. Các công cụ như Amazon Data Migration Service
và Apache Kafka thường được sử dụng cho những tác vụ này.
− Lớp lưu trữ: Dữ liệu được nhập sẽ được lưu trữ trong các giải pháp lưu trữ tiết
kiệm chi phí như Amazon S3. Lớp này tách lưu trữ đối tượng khỏi điện toán, cho
phép truy cập trực tiếp vào dữ liệu thông qua các công cụ hoặc API ưa thích, sử
dụng các định dạng tệp mở như Parquet để tổ chức dữ liệu có cấu trúc và không cấu
trúc.
− Lớp siêu dữ liệu: Lớp này quản lý siêu dữ liệu liên quan đến dữ liệu được lưu trữ,
chẳng hạn như công việc điều phối dữ liệu, mô hình chuyển đổi và dòng dữ liệu.
Nó hỗ trợ các tính năng như giao dịch ACID, lập chỉ mục, sao chép không sao chép
và lập phiên bản dữ liệu để duy trì tính toàn vẹn và chất lượng của dữ liệu.
− Lớp API: API tạo điều kiện thuận lợi cho sự tương tác giữa các công cụ phân tích
và dữ liệu được lưu trữ, cho phép truy xuất, chuyển đổi và truy vấn phức tạp dữ
liệu. Họ cũng hỗ trợ xử lý dữ liệu theo thời gian thực để cập nhật liên tục các luồng.
− Lớp tiêu thụ dữ liệu: Lớp cuối cùng cho phép người dùng cuối như nhà khoa học
và nhà phân tích dữ liệu sử dụng các công cụ (ví dụ: Power BI, Tableau) để truy
cập dữ liệu và thực hiện các tác vụ phân tích như tạo bảng điều khiển, trực quan
32
hóa dữ liệu và chạy các mô hình học máy.
3.2
Dimensional modeling
Dimensional Modeling: là một trong những kỹ thuật mô hình hóa mô hình dữ liệu
được sử dụng trong thiết kế kho dữ liệu. Khái niệm dimensional modeling được phát
triển bởi Ralph Kimball, bao gồm các bảng fact và dimension. Vì mục tiêu chính của mô
hình này là cải thiện việc truy xuất dữ liệu nên nó được tối ưu hóa cho câu lệnh SELECT.
Ưu điểm của việc sử dụng mô hình này là chúng ta có thể lưu trữ dữ liệu theo cách dễ
dàng lưu trữ và truy xuất dữ liệu hơn sau khi được lưu trữ trong kho dữ liệu. Tuy là một
mô hình thường được dùng trong kho dữ liệu (data warehouse) nhưng trong kiến trúc
data lakehouse, để giúp cải thiện thêm hiệu suất của câu truy vấn và phân tích, ta vẫn có
thể sử dụng dimension model tại lớp tiêu thụ dữ liệu. Do đó, phương pháp dimensional
modeling được sử dụng trong đồ án này.
− Facts: Sự kiện là các yếu tố dữ liệu có thể đo lường được, đại diện cho các số liệu
kinh doanh được quan tâm.
− Dimensions: là các thành phần dữ liệu mô tả được sử dụng để phân loại hoặc phân
loại dữ liệu.
Quy trình thiết kế dimensional model 4 bước:
1. Chọn business process: đây là bước đầu cần được thực hiện để xác định quy trình
kinh doanh mà dữ liệu của data warehouse liên quan đến.
2. Xác định độ chi tiết: việc này có nghĩa là xác định độ chi tiết của thông tin liên
quan đến các thuộc tính measure trong bảng fact thể hiện. Nó cung cấp câu trả lời
cho câu hỏi“Làm cách nào để mô tả một hàng trong bảng fact?”Thông tin chi tiết
được xác định bởi thực tế vật lý của hệ thống vận hành nhằm nắm bắt các sự kiện
của quy trình kinh doanh.
3. Xác định các dimension: Việc xác định các dimension có ý nghĩa rất lớn cho việc
mô tả các thông tin có liên quan đến các measure trong bảng fact, nó thể hiện các
thông tin liên quan trong một ngữ cảnh cụ thể của mỗi measure.
4. Xác định bảng fact: Việc xác định bảng fact là đáp án của câu hỏi ”Cái gì dùng
để đo lường quy trình?”. Người dùng doanh nghiệp sẽ quan tâm đến việc phân tích
các số liệu này. Tất cả các fact tuân theo độ chi tiết đã được xác định tại bước 2.
33
3.3
Phương pháp phân tích dữ liệu
Khi tập trung vào quá trình phân tích dữ liệu, đó là sự kết hợp các phương pháp về
phân tích dữ liệu hệ thống, kiến trúc hệ thống, khai thác dữ liệu và sử dụng các công
cụ phân tích để trích xuất giá trị từ dữ liệu. Giai đoạn quan trọng nhất trong phân tích
dữ liệu lớn là nghiên cứu dữ liệu, nơi các giá trị quan trọng được xem xét, để đưa ra đề
xuất, và thực hiện quyết định thông qua hệ thống thông tin điều hành và xử lý phân tích
trực tuyến. Điều này đặc biệt quan trọng vì sự phức tạp của việc phân tích và diễn giải
dữ liệu yêu cầu các nhà nghiên cứu và doanh nghiệp sử dụng các thuật toán để xử lý dữ
liệu thời gian thực, phân tích và sinh ra các kết quả phân tích chính xác cao.
Mục tiêu chung của phân tích dữ liệu bao gồm trả lời ba hạng mục câu hỏi: những
gì đã xảy ra trong quá khứ, điều gì đang xảy ra ngay bây giờ, và điều gì được dự đoán
sẽ xảy ra trong tương lai. Việc xử lý và thu thập thông tin cần thiết từ cơ sở dữ liệu đòi
hỏi nhiều thời gian và khả năng xử lý, đồng thời việc tìm hiểu kiến thức liên ngành làm
tăng khó khăn cho các doanh nghiệp trong việc xác định các kỹ năng chuyên môn cần
thiết để thực hiện kiểm tra thực tế trên quy mô lớn. Có nhiều phương pháp và quy trình
được đề xuất để trích xuất giá trị từ phân tích dữ liệu, dưới đây là quy trình hiện thực
bảy bước của Dr. Carol Anne Hargreaves [10].
− Xác định nhu cầu kinh doanh: Bước đầu tiên trong quy trình phân tích dữ liệu
là hiểu rõ mục tiêu và yêu cầu của doanh nghiệp. Điều này bao gồm việc xác định
vấn đề cần giải quyết hoặc cơ hội cần khai thác.
− Khám phá dữ liệu: Tiếp cận dữ liệu từ các nguồn khác nhau, thực hiện quá trình
đánh giá sơ bộ để xác định chất lượng và cấu trúc dữ liệu.
− Phân tích dữ liệu: Sử dụng các phương pháp thống kê và kỹ thuật phân tích để tìm
hiểu sâu hơn về dữ liệu, xác định mẫu và xu hướng.
− Dự đoán tình hình: Áp dụng các mô hình dự đoán và máy học để đánh giá các
kịch bản tương lai dựa trên dữ liệu hiện tại và lịch sử.
− Tối ưu hóa: Tìm ra giải pháp tốt nhất cho vấn đề dựa trên kết quả phân tích, thường
là thông qua mô hình hóa và mô phỏng.
− Đưa ra quyết định và đo lường kết quả: Chọn lựa hành động dựa trên kết quả tối
ưu và đánh giá hiệu suất của quyết định đó.
34
− Cập nhật hệ thống kết quả của quyết định: Tích hợp phản hồi và kết quả vào hệ
thống để cải thiện quy trình quyết định trong tương lai.
Bằng cách áp dụng các phương pháp phân tích dữ liệu, khai thác dữ liệu, và sử dụng
các công cụ phân tích mạnh mẽ, các tổ chức có thể khám phá ra những thông tin quan
trọng từ lượng dữ liệu mà họ thu thập, dẫn đến việc đưa ra quyết định thông minh và
chiến lược kinh doanh sáng suốt. Mặc dù việc này đòi hỏi thời gian và nguồn lực đáng
kể, nhưng với sự hỗ trợ của các chuyên gia và áp dụng công nghệ phù hợp, phân tích dữ
liệu không chỉ khả thi mà còn rất cần thiết để tối ưu hóa hiệu suất, tăng cường sức cạnh
tranh, và thúc đẩy sự phát triển bền vững trong kinh doanh.
3.4
Hệ hỗ trợ quyết định trong kinh doanh
Trong thời đại của công nghệ thông tin, việc hỗ trợ quyết định nếu được quản lý một
cách hiệu quả là một yếu tố then chốt cho sự thành công của doanh nghiệp. Điều này
phụ thuộc rất nhiều vào việc có sẵn nguồn thông tin chất lượng cao, được tổ chức một
cách hợp lý và trình bày một cách dễ hiểu và kịp thời. Dựa trên những thông tin ở phần
trước, có thể thấy rằng kho dữ liệu (Data Warehouses) đã trở thành một giải pháp quan
trọng để phục vụ cho cả dữ liệu nội bộ và bên ngoài nhằm hiểu và đánh giá doanh nghiệp
một cách sâu sắc hơn. Với sự kết hợp của các mô hình, công cụ phân tích, và giao diện
người dùng, kho dữ liệu có khả năng cung cấp thông tin cho quy trình BI (Trí tuệ kinh
doanh) để nhận diện vấn đề và cơ hội trong những chiến lược và quyết định quan trọng.
Dưới đây là bốn mục tiêu chủ đạo đã được định hình rõ ràng và hiệu quả trong việc quản
lý các kho dữ liệu để ứng dụng cho hệ hỗ trợ quyết định [11].
35
Hình 3: Quá trình hiện thực hệ hỗ trợ quyết định [11]
Đó là quá trình bao gồm các giai đoạn tích hợp, triển khai, học hỏi và đổi mới:
− Tích hợp (Intergration): Tích hợp dữ liệu từ các nguồn khác nhau vào một kho
dữ liệu nhất quán và toàn diện. Ngoài ra còn giúp đồng bộ hóa các quy trình kinh
doanh trong và ngoài tổ chức để thuận lợi trong việc hỗ trợ quyết định.
− Triển khai (Implementation): Xác định cấu trúc dữ liệu phù hợp cho các mục
đích phân tích và báo cáo, đồng thời cập nhật và duy trì các mô hình theo thời gian.
Ngoài ra, chúng ta cũng phải thiết kế giao diện thân thiện, trực quan để người dùng
có thể sử dụng dữ liệu một cách hiệu quả. Bên cạnh đó, cần đảm bảo an ninh, bảo
mật, và quyền riêng tư dữ liệu khi thực hiện chia sẻ và trao đổi.
− Học hỏi (Intelligence): Thông tin phải được diễn giải trong bối cảnh phù hợp để
36
phục vụ cho trí tuệ kinh doanh. Đây là những suy luận và kiến thức được phát hiện
bằng cách áp dụng các phương pháp tính toán như khai phá dữ liệu, thuật toán di
truyền, mạng nơ-ron, và lý luận dựa trên các trường hợp.
− Đổi mới (Innovation): Qua quá trình thực hiện quy trình BI (Trí tuệ kinh doanh
ở trên), đây sẽ là tiền đề cho những đổi mới tích cực về sản phẩm, dịch vụ và quy
trình kinh doanh của doanh nghiệp.
4. Kiến thức về học máy (Machine Learning)
4.1
Recurrent Neural Networks
Recurrent Neural Networks (RNN) là cấu trúc mạng thần kinh có khả năng cho
hiệu suất cao trong các tác vụ khác nhau với dữ liệu chuỗi thời gian (time series data).
Mục đích của RNN là xử lý thông tin tuần tự. Bên trong cấu trúc mạng nơ-ron thông
thường, tất cả đầu vào và đầu ra đều được độc lập với nhau. Tuy nhiên, nhiều trường
hợp dữ liệu thực có cấu trúc dữ liệu chuỗi thời gian thay đổi theo thời gian và có mối
quan hệ ngữ cảnh giữa dữ liệu với nhau, điều đó gây cho neural network thông thường
gặp khó khăn trong việc đánh giá chính xác. [15]
RNN là cấu trúc mạng thần kinh thích hợp với dữ liệu có xu hướng liên quan với
nhau kể trên. Nếu dữ liệu thị trường tài chính (financial market data) được sử dụng để
dự đoán xu hướng trên thị trường tài chính thì việc sử dụng mối quan hệ phụ thuộc giữa
dữ liệu để phản ánh thị trường tài chính trong kết quả là tốt hơn, thay vì giả định dữ liệu
thị trường tài chính riêng biệt. Vì RNN có cấu trúc lặp lại (recurrent structure) nên kết
quả (output) của phần tử trước sẽ ảnh hưởng đến kết quả của phần tử tiếp theo. Nghĩa là,
RNN có bộ nhớ về thông tin kết quả được tính toán cho đến thời điểm hiện tại và thông
tin đó sẽ ảnh hưởng đến kết quả tiếp theo.
37
Hình 4: Kiến trúc cơ bản của các mô hình RNN
Tuy nhiên, RNN có một nhược điểm là gặp khó khăn khi xử lý với dữ liệu phụ
thuộc lâu dài (the Long Term Dependency problem) do hiện tượng vanishing gradient
problem, tức là sau quá trình đạo hàm dần qua các lần lặp, dẫn đến mất mát thông tin.
[15]
4.2
Long-Short Term Memory Networks (LSTM)
LSTM là một kiến trúc Recurrent Neural Network (RNN), được sử dụng nhiều
trong lĩnh vục Deep Learning, nó được phát triển để có thể khắc phục hạn chế của mạng
RNN truyền thống bằng cách lưu trữ các dữ liệu phụ thuộc dài hạn, tránh hiện tượng
vanishing gradient, phù hợp cho các nhiệm vụ đưa ra dự đoán có trình tự, cụ thể hơn
trong bối cảnh dữ liệu của nhóm liên quan đến time series. [16]
Điểm khác của LSTM so với các kiến trúc RNN là cho phép xử lý toàn bộ chuỗi
dữ liệu chứ không chỉ các điểm dữ liệu riêng lẻ. Cấu trúc trong LSTM gọi là memory
cell thay vì neural, tiếp nhận dữ liệu đầu vào (input) của state trước đó và input hiện tại
làm input của nó, sau đó đưa ra quyết định sẽ thêm bao nhiêu hay loại bỏ bao nhiêu dữ
liệu, và tính toán giá trị sẽ lưu lại dựa trên trạng thái hiện tại và giá trị đầu vào của ô nhớ.
Yếu tố cốt lõi của LSTM để có thể làm việc này là Cell State trong mô hình kiến trúc
của nó, LSTM có thể thêm vào hoặc xóa đi thông tin của Cell State, giúp điều chỉnh đầu
ra tiếp theo và trạng thái tiếp theo. [15]
38
Hình 5: Kiến trúc cơ bản của mô hình LSTM
Tuy nhiên mô hình LSTM vẫn còn một điểm yếu đó là thông tin được đọc từ trái
sang phải (hay từ quá khứ đến tương lai), tuy nhiên có những thông tin sẽ liên quan nhau
theo chiều ngược lại từ phải sang trái (tương lai đến quá khứ). Do vậy mô hình cải tiến
của LSTM, được gọi là LSTM hai chiều (Bidirectional LSTMs) ra đời. Ý tưởng đơn
giản là một chuỗi sẽ được xử lý ở cả 2 chiều từ trái sang phải và từ phải sang trái rồi sau
đó được ghép lại. Điều này giúp việc mô hình học một chuỗi được thông tin liên quan
của một chuỗi ở cả 2 chiều từ trái sang và từ phải sang. [16]
Hình 6: Cơ chế hoạt động của mô hình LSTM [17]
39
5. Một số bài toán kinh doanh trong thương mại điện tử
5.1
Phân tích giỏ hàng bằng thuật toán FP-Growth
FP-Growth là một thuật toán phân tích giỏ hàng (Association Rule Mining) được
phát triển bởi Han et al. vào năm 2000. Thuật toán này được sử dụng rộng rãi trong các
ứng dụng như phân tích dữ liệu bán hàng, phân tích hành vi người dùng, và phát triển
các chiến lược marketing hiệu quả. [18] FP-Growth hoạt động dựa trên khái niệm của
cây quyết định (Decision Tree) và cây quyết định không phân nhánh (Non-Branching
Decision Tree). Thuật toán này được chia thành hai giai đoạn chính:
1. Giai đoạn xây dựng cây quyết định: Đây là giai đoạn quan trọng nhất trong FPGrowth. Ở giai đoạn này, thuật toán sẽ xây dựng một cây quyết định dựa trên dữ
liệu giỏ hàng. Cây quyết định này được sử dụng để phân tích các mối quan hệ giữa
các sản phẩm trong giỏ hàng.
2. Giai đoạn tìm kiếm quy tắc (Rule Mining): Ở giai đoạn này, thuật toán sẽ tìm
kiếm các quy tắc (Rule) trong cây quyết định được xây dựng. Quy tắc này được
sử dụng để dự đoán các sản phẩm có thể được thêm vào giỏ hàng dựa trên các sản
phẩm đã được thêm vào giỏ hàng trước đó.
40
Hình 7: Phân tích giỏ hàng bằng thuật toán FP-Growth [32]
So với Apriori, FP-Growth chỉ cần quét dữ liệu một lần để xây dựng cây quyết định,
trong khi Apriori cần quét dữ liệu nhiều lần để tìm ra các tập phổ biến. Điều này làm cho
FP-Growth hiệu quả hơn đáng kể so với Apriori, đặc biệt với các tập dữ liệu lớn. Thuật
toán này có thể xử lý các dữ liệu giỏ hàng lớn và phức tạp, và có thể tìm kiếm các quy
tắc hiệu quả. Ngoài ra, FP-Growth cũng có thể được áp dụng trong các ứng dụng khác
nhau, như phân tích dữ liệu bán hàng, phân tích hành vi người dùng, và phát triển các
chiến lược marketing hiệu quả. Chính vì những lợi ích này, nhóm muốn sử dụng thuật
toán FP-Growth để phân tích giỏ hàng trong thương mại điện tử, nhằm tìm ra các mối
quan hệ giữa các sản phẩm và đưa ra các gợi ý sản phẩm hiệu quả cho khách hàng.
5.2
Phân khúc khách hàng bằng mô hình RFM
Trong lĩnh vực thương mại điện tử, việc hiểu rõ khách hàng là chìa khóa để tối ưu
hóa các chiến lược kinh doanh và marketing. Một trong những phương pháp hiệu quả
để phân tích hành vi khách hàng là sử dụng mô hình RFM. Chỉ số RFM là một phương
pháp phân tích quan trọng, giúp xác định những khách hàng có giá trị cao thông qua ba
41
yếu tố:
− Recency (R): Khoảng thời gian kể từ lần mua hàng gần nhất của khách hàng. Khách
hàng mua gần đây nhất được coi là có khả năng quay lại cao hơn.
− Frequency (F): Số lần khách hàng mua hàng trong một khoảng thời gian nhất định.
Khách hàng mua thường xuyên hơn là những người có mức độ trung thành cao.
− Monetary (M): Tổng số tiền khách hàng đã chi tiêu cho các mua hàng. Điều này
phản ánh giá trị tài chính mà khách hàng mang lại cho công ty.
Hình 8: Thực hiện phân khúc khách hàng dựa trên chỉ số RFM
Một số lợi ích của mô hình RFM trong thương mại điện tử: [19]
− Tối ưu hóa chiến dịch marketing: Phân khúc khách hàng cho phép doanh nghiệp
tạo ra các chiến dịch tiếp thị cá nhân hóa, từ đó tăng tỷ lệ chuyển đổi và giữ chân
khách hàng hiệu quả hơn.
− Hiểu rõ giá trị khách hàng: RFM giúp xác định khách hàng có giá trị cao, từ đó
tập trung nguồn lực để tối ưu hóa lợi nhuận từ những khách hàng này.
− Dự đoán hành vi khách hàng: Mô hình này cũng có thể dùng để dự đoán xu hướng
mua sắm của khách hàng, giúp doanh nghiệp chủ động trong việc quản lý hàng tồn
kho và lập kế hoạch kinh doanh.
42
Để xây dựng mô hình RFM, doanh nghiệp cần thu thập dữ liệu chi tiết về lịch sử mua
hàng của khách hàng. Sau đó, khách hàng sẽ được xếp hạng từ 1 đến 5 cho mỗi tiêu chí
RFM, với 1 là thấp nhất và 5 là cao nhất. Cách tiếp cận này cho phép doanh nghiệp phân
khúc khách hàng vào các nhóm dựa trên tổng điểm RFM, từ đó có thể phát triển chiến
lược tiếp thị mục tiêu phù hợp.
Một số ví dụ về phân khúc khách hàng trong mô hình RFM bao gồm:
− Champions: Đây là những khách hàng tốt nhất với điểm số cao về Recency, Fre-
quency và Monetary. Họ mua sắm gần đây, thường xuyên và chi tiêu nhiều. Đây
là nhóm khách hàng nên được ưu tiên cao nhất trong các chiến dịch tiếp thị và bán
hàng.
− Loyal Customers: Những khách hàng này có điểm Frequency cao, cho thấy họ
mua hàng thường xuyên. Họ thường có điểm Recency thấp, điều này chứng tỏ họ
mua hàng gần đây.
− Hibernating: Khách hàng này ít mua hàng và đã lâu không quay lại. Mặc dù họ
không tích cực, nhưng vẫn có tiềm năng quay trở lại nếu được kích thích đúng cách
thông qua các chương trình khuyến mãi hoặc ưu đãi đặc biệt.
− Potential Loyalists: Những khách hàng này có điểm Frequency và Monetary ở
mức trung bình đến cao, và Recency thấp. Họ là những khách hàng có tiềm năng
trở thành khách hàng trung thành nếu được chăm sóc tốt.
− At Risk: Đây là những khách hàng đã từng mua sắm thường xuyên và chi tiêu
cao nhưng đã không còn mua hàng trong thời gian gần đây. Điểm Recency cao và
Frequency thấp cho thấy những khách hàng này có nguy cơ chuyển sang nhà cung
cấp khác.
Việc áp dụng mô hình này không chỉ giúp doanh nghiệp hiểu rõ hơn về cơ sở khách
hàng của mình mà còn hỗ trợ trong việc phát triển các chiến lược kinh doanh và tiếp thị
hiệu quả hơn. Vì vậy, nhóm quyết định chọn giải quyết bài toán này để triển khai cho
hệ thống phân tích dữ liệu và BI của mình.
43
III. Phân tích yêu cầu
1. Yêu cầu chức năng hệ thống
Hệ thống sẽ có những yêu cầu chức năng sau:
− Chức năng đăng nhập, đăng kí tài khoản cho người dùng
− Chức năng import dữ liệu có sẵn của người dùng như tệp CSV hoặc Excel
− Chức năng tạo block lưu trữ dữ liệu theo từng người dùng
− Chức năng xử lý dữ liệu
− Chức năng phân tích dữ liệu, tạo báo cáo và hiển thị lên Dashboard
− Chức năng tùy chỉnh trực quan hóa, chọn lọc (filter) dữ liệu để hiển thị phân tích
theo yêu cầu
− Chức năng hiển thị đề xuất, dự đoán để hỗ trợ quyết định kinh doanh
− Chức năng giao tiếp với chatbot: hỗ trợ truy vấn đa dạng và nhanh chóng về thông
tin mong muốn hiển thị
2. Yêu cầu phi chức năng hệ thống
Hệ thống sẽ có yêu cầu phi chức năng như sau:
1. Yêu cầu về bảo mật
− Thông tin người dùng phải được bảo mật.
− Mật khẩu đăng nhập phải được mã hoá
− Đảm bảo dữ liệu được bảo vệ một cách hiệu quả và tuân thủ các chuẩn bảo mật
thông tin
− Quản lý quyền truy cập vào dữ liệu của từng người dùng
2. Yêu cầu về hiệu suất (Performance)
− Thời gian xử lý dữ liệu tối đa 30 phút (đối với dữ liệu <= 2GB)
− Thời gian phản hồi kết quả phân tích không quá 5s
− Thời gian phản hồi của Chatbot không quá 2s (chưa tính thời gian load trang
web)
44
− Hệ thống cho phép ít nhất 20 người sử dụng cùng lúc
− Đảm bảo tính chính xác (accuracy) và tính hợp nhất (consistency) trong quá
trình xử lý dữ liệu
− Hệ thống có thể chứa được 100GB dữ liệu
3. Yêu cầu về tính khả dụng (Usability)
− Giao diện người dùng thân thiện, dễ nhìn
− Thực hiện các chức năng dễ dàng, nhanh chóng
4. Yêu cầu về tính sẵn dùng (Availability)
− Hệ thống sẵn sàng cho người dùng truy cập ở mọi thời điểm.
− Hệ thống không bị sập (crash) khi người dùng thực hiện không đúng thao tác.
5. Yêu cầu về tính bảo trì và mở rộng (Maintainability)
− Hệ thống có khả năng mở rộng quy mô trong tương lai
3. Mô hình hóa yêu cầu hệ thống
3.1
Use-case Diagram
Qua phân tích các yêu cầu trên, nhóm xây dựng use-case cho hệ thống cụ thể như
sau:
1. Use-case Diagram của chức năng đăng nhập của người dùng.
45
Hình 9: Use-case đăng nhập
Tên use-case
Mô tả:
Điều kiện kích hoạt:
Tiền điều kiện:
Hậu điều kiện:
Đăng nhập
Người dùng sẽ đăng nhập vào hệ thống để theo dõi quá
trình kinh doanh
Người dùng hoàn thành thông tin đăng nhập vào nhấn
”Sign In”
Người dùng truy cập vào website và đã có tài khoản từ
trước
Người dùng đăng nhập thành công vào hệ thống
1. Người dùng nhập thông tin và nhấn ”Sign In”
Luồng sự kiện chính:
2. Hệ thống xác thực người dùng và điều hướng tới
trang thông tin riêng của người dùng
Luồng sự kiện thay thế:
Luồng sự kiện ngoại lệ:
Không có
Thông tin đăng nhập không chính xác hoặc tài khoản
chưa được tạo mới
Bảng 4: Đặc tả use-case đăng nhập
46
Tên use-case
Mô tả:
Điều kiện kích hoạt:
Tiền điều kiện:
Hậu điều kiện:
Luồng sự kiện chính:
Đăng ký
Người dùng thực hiện đăng ký tài khoản trước khi thực
hiện đăng nhập
Người dùng truy cập vào trang đăng ký, nhập thông tin
và nhấn ”Sign Up”
Người dùng chưa thực hiện đăng ký tài khoản trước đó
Người dùng đăng ký thành công và chuyển về trang
đăng nhập
1. Người dùng vào trang đăng ký và nhập thông tin
2. Hệ thống xác nhận đăng ký thành công
Luồng sự kiện thay thế:
Không có
Luồng sự kiện ngoại lệ:
Tài khoản đã được đăng ký
Bảng 5: Đặc tả use-case đăng ký
2. Use-case Diagram của chức năng thu thập và lưu trữ dữ liệu.
47
Hình 10: Use-case thu thập và lưu trữ dữ liệu
48
Tên use-case
Nhập dữ liệu
Người dùng thực hiện nhập dữ liệu trên thiết bị vào hệ
Mô tả:
thống như file csv hoặc xlsx
Người dùng truy cập vào phần tạo mới và chọn vào phần
Điều kiện kích hoạt:
Upload dữ liệu
Người dùng cần chuẩn bị file chứa dữ liệu trong thiết
Tiền điều kiện:
bị của mình
Hậu điều kiện:
Dữ liệu người dùng được lưu vào hệ thống
1. Người dùng vào trang ”Create” và chọn ”Import
Data” sau đó tải file dữ liệu từ thiết bị
Luồng sự kiện chính:
2. Hệ thống sẽ hiển thị bảng xem trước dữ liệu
3. Tiến hành lưu và áp dụng dữ liệu cho báo cáo
Luồng sự kiện thay thế:
Luồng sự kiện ngoại lệ:
Không có
Thông tin các cột trong dữ liệu không phù hợp với yêu
cầu của hệ thống
Bảng 6: Đặc tả use-case nhập dữ liệu
3. Use-case Diagram cho hoạt động xem Dashboard của người dùng.
49
Hình 11: Use-case xem Dashboard
50
Tên use-case
Xem Dashboard
Người dùng xem tình hình kinh doanh bằng Dashboard
Mô tả:
trong bản báo cáo
Sau khi dữ liệu đã được cập nhật và người dùng điều
Điều kiện kích hoạt:
chỉnh bộ lọc
Thông tin về bản báo cáo đã được xác định và dữ liệu
Tiền điều kiện:
phải được truy xuất hợp lệ trong quá trình lọc dữ liệu
Hậu điều kiện:
Hiển thị Dashboard được mô tả phù hợp theo bộ lọc
1. Người dùng truy cập vào phần ”Dashboard” của
Website
2. Thêm biểu đồ hoặc điều chỉnh bộ lọc theo mong
muốn
3. Theo dõi biểu đồ hoặc thực hiện các hành động tương
tác cụ thể như:
Luồng sự kiện chính:
− Tải lại dữ liệu
− Phóng to / Thu nhỏ
− Tải dữ liệu về máy
− Xóa biểu đồ
Luồng sự kiện thay thế:
Luồng sự kiện ngoại lệ:
Không có
Dữ liệu không phù hợp với yêu cầu trong quá trình nhập
dữ liệu trước đó
Bảng 7: Đặc tả use-case xem Dashboard
4. Use-case Diagram cho chức năng phân tích và dự đoán.
51
Hình 12: Use-case phân tích và dự đoán
52
Tên use-case
Xem phân tích và dự đoán
Người dùng xem dự đoán xu hướng các sản phẩm thịnh
hành trong tương lai và phân tích các bài toán kinh
Mô tả:
doanh bao gồm phân tích giỏ hàng và phân khúc khách
hàng
Điều kiện kích hoạt:
Sau khi người dùng chọn khoảng thời gian mong muốn
nhấn ”Apply”
Thông tin về bản báo cáo đã được xác định và dữ liệu
Tiền điều kiện:
phải được truy xuất hợp lệ trong quá trình chọn khoảng
thời gian
Hiển thị biểu đồ dự đoán sản phẩm thịnh hành và kết
quả đề xuất trong việc phân tích giỏ hàng và phân khúc
Hậu điều kiện:
khách hàng được mô tả phù hợp khoảng thời gian được
chọn
Tên use-case
Xem phân tích và dự đoán
1. Người dùng truy cập vào phần ”Suggestion” ở trên
Website
2. Lựa chọn khoảng thời gian mong muốn
3. Theo dõi biểu đồ hoặc thực hiện các hành động tương
Luồng sự kiện chính:
tác trên biểu đồ như:
− Tải lại dữ liệu
− Phóng to / Thu nhỏ
− Tải dữ liệu về máy
Luồng sự kiện thay thế:
Luồng sự kiện ngoại lệ:
Không có
Dữ liệu không phù hợp với yêu cầu trong quá trình nhập
dữ liệu trước đó
Bảng 8: Đặc tả use-case phân tích và dự đoán
5. Use-case Diagram cho việc sử dụng Chatbot của hệ thống.
53
Hình 13: Use-case Chatbot hệ thống
Tên use-case
Chatbot hệ thống
Người dùng thực hiện tương tác với Chatbot để tra cứu
Mô tả:
và truy vấn dữ liệu theo mong muốn
Người dùng nhập yêu cầu hoặc câu hỏi mong muốn vào
Điều kiện kích hoạt:
khung chat và gửi lệnh
Dữ liệu phải tồn tại trong quá trình nhập dữ liệu trước
Tiền điều kiện:
đó
Hệ thống nhận lệnh được yêu cầu và phản hồi thông tin
Hậu điều kiện:
phù hợp lên khung chat
1. Người dùng truy cập vào phần ”Chatbot” của Web-
Luồng sự kiện chính:
site
2. Nhập lệnh vào khung chat của hệ thống
3. Nhận phản hồi từ hệ thống
Luồng sự kiện thay thế:
Không có
Luồng sự kiện ngoại lệ:
Không có
Bảng 9: Đặc tả use-case Chatbot hệ thống
54
3.2
Activity Diagram
Với các use-case scenarios ở trên, việc thiết kế activity diagram cho mỗi use case
tương ứng là cần thiết để có thể xác định và kiểm soát luồng hoạt động của các chức
năng tốt hơn khi hầu hết các module đều có xử lý dữ liệu, từ đó giúp tăng khả năng chính
xác và tối ưu trong quá trình hiện thực ứng dụng. Dưới đây là các activity diagram của
các chức năng chính trong hệ thống:
1. Activity Diagram của chức năng thu thập và lưu trữ dữ liệu.
Hình 14: Activity Diagram thu thập và lưu trữ dữ liệu
Mô tả:
− Người dùng chọn nhập dữ liệu từ User Interface, nếu người dùng chưa đăng
nhập thì API Gateway sẽ gửi thông báo yêu cầu đăng nhập. Ngược lại, User
tiếp tục chọn nguồn dữ liệu, có thể import từ thiết bị hoặc kết nối tới Database
55
có sẵn để lấy dữ liệu. Trong đó, nếu User sử dụng dữ liệu import từ Database,
họ sẽ phải cung cấp các thông tin cần thiết như DB username, DB password,...
API Gateway sẽ kiểm tra kết nối tới Database và sẽ gửi thông báo cho kết quả
tương ứng (Fail hoặc Successful)
− Sau khi import dữ liệu thành công, Data Service sẽ lấy dữ liệu vừa được import,
xử lý nó và trả về kết quả xem trước cho người dùng thông qua User Interface.
Nếu thấy đã hợp lý thì user có thể áp dụng nó, ngược lại có thể hủy thao tác và
điều chỉnh lại Data nếu muốn.
− Data sau khi được User apply sẽ được lưu bản đã xử lý vào hệ thống, và gửi
thông báo thành công tương ứng tới người dùng thông qua User Interface.
2. Activity Diagram cho hoạt động xem Dashboard của người dùng.
Hình 15: Activity Diagram hoạt động xem Dashboard
Mô tả:
56
− Sau khi người dùng chọn View Dashboard trên User Interface, API Gateway sẽ
chuyển tiếp Request tới Data Service để lấy dữ liệu ở đó và hiển thị cho người
dùng.
− Hệ thống sẽ trả về Dashboard mặc định nếu người dùng không sử dụng bộ lọc,
ngược lại nếu có, Data Service sẽ xử lí theo filter được chọn tương ứng và trả về
người dùng thông qua User Interface. Ngoài ra, người dùng có thể điều chỉnh
lại bộ lọc của mình để có thể nhận được kết quả hợp ý hơn.
− Trong quá trình sử dụng, User có thể hủy thao tác bất kì lúc nào nếu muốn.
3. Activity Diagram cho chức năng phân tích và dự đoán.
Hình 16: Activity Diagram phân tích và dự đoán
Mô tả:
− Trên User Interface, người dùng chọn phân tích và dự đoán sau khi đã import
dữ liệu, API Gateway sẽ chuyển tiếp yêu cầu tới Prediction Service. Ở đây sẽ
diễn ra quá trình xử lý của Model, và các thuật toán phân tích dữ liệu.
− Sau khi hoàn thành, kết quả tương ứng sẽ được trả về, display qua API Gateway
và hiển thị trên User Interface.
57
4. Activity Diagram cho việc sử dụng Chatbot hệ thống.
Hình 17: Activity Diagram sử dụng Chatbot
Mô tả:
− Người dùng có thể nhận kết quả mình mong muốn thông qua tương tác trực
tiếp với Chatbot. Sau khi đặt yêu cầu trong box, API Gateway sẽ chuyển tiếp
58
yêu cầu tới Chatbot Service, nơi sẽ xử lý các dữ liệu mà người dùng cung cấp.
− Chatbot trước tiên sẽ kiểm tra xem request của user có phù hợp không (theo các
chức năng đã được train), nếu không đúng thì hệ thống sẽ gửi Error Message
cho người dùng trên box chat với Chatbot. Nếu đúng, Chatbot sẽ xử lý các yêu
cầu và sử dụng Service tương ứng để lấy kết quả, sau đó trả về thông qua API
Gateway và hiển thị trên User Interface.
− Người dùng xem kết quả và có thể kết thúc phiên chat của mình với Chatbot
bất cứ lúc nào nếu muốn.
59
IV. Thiết kế hệ thống
1. Kiến trúc hệ thống
Với các yêu cầu và các công nghệ đã đề cập, nhóm quyết định đề xuất kiến trúc
dựa trên Service-Based Architecture (SBA) cho ứng dụng như sau:
Hình 18: Kiến trúc hệ thống
Service-Based Architecture (SBA) hay còn gọi là Service-Oriented Architecture
(SOA). Kiến trúc này tạo ra cách thức giúp cho các thành phần trong phần mềm (software
components) có thể tái sử dụng và tương tác với nhau thông qua các giao diện dịch vụ
(service interfaces). SOA được xem là một mẫu kiến trúc phân tán trong đó ứng dụng
được tổ chức thành các tập hợp dịch vụ có liên kết với nhau khá yếu (loosely coupled),
do đó mỗi dịch vụ có thể coi như độc lập với nhau và ít ảnh hưởng hay phụ thuộc vào
phần còn lại. Mỗi dịch vụ thực hiện một nhiệm vụ hoặc chức năng cụ thể và giao tiếp
với các dịch vụ khác bằng các giao thức giao tiếp tiêu chuẩn (standard interfaces), chẳng
hạn như REST, SOAP hoặc gRPC, giúp chúng có thể nhanh chóng kết hợp với nhau để
hình thành nên một ứng dụng hoàn toàn mới.
Các chức năng trong sản phẩm của nhóm có các tính chất tương tự như trên nên
nhóm quyết định sử dụng SOA để thiết kế kiến trúc cho ứng dụng. Kiến trúc của sản
phẩm có 3 thành phần chính như sau:
1. User Interface:
60
Là Client hay các component sử dụng các services. Đây là nơi sẽ thiết kế UI/UX
cho ứng dụng để khách hàng có thể tương tác, nhận dữ liệu đầu vào hay yêu cầu
(request) từ khách hàng và hiển thị kết quả được trả về bởi các services. Ở đây
người dùng sẽ tương tác trực tiếp với ứng dụng thông qua Browser.
2. API Layer (API Gateway):
− Trong kiến trúc Service-oriented, các services giao tiếp với user interface hay
giữa các services với nhau (trao đổi dữ liệu, gọi lẫn nhau) thông qua các giao
thức giao tiếp (communication protocol). Việc kết hợp thêm một lớp API Gateway cụ thể được đánh giá là tốt cho kiến trúc, giúp kết hợp các chức năng mạnh
mẽ hơn tại một bộ xử lý tập trung.
− Lớp API có thể định tuyến các yêu cầu đến các dịch vụ thích hợp dựa trên
đường dẫn yêu cầu, tiêu đề hoặc các tham số khác. Việc định tuyến này đảm
bảo rằng mỗi yêu cầu đều đến đúng vi dịch vụ, giúp đơn giản hóa nhiệm vụ
xử lý yêu cầu của khách hàng. Bên cạnh đó, nó có thể quản lý các yêu cầu về
chính sách của CORS Header, cho phép các request chéo giữa các thành phần,
dịch vụ diễn ra một cách an toàn. Ngoài ra, API Layer có thể đóng vai trò như
một reverse proxy, đảm bảo sự tính bảo mật cho các services bên dưới.
− Nhóm quyết định sử dụng Django, cụ thể là Django Rest Framework đóng vai
trò chính như một API Layer cho hệ thống của ứng dụng:
Hình 19: Django Rest Framework
Django Rest Framework tiếp nhận các yêu cầu xử lý từ Client thông qua các
API. Các input từ người dùng sẽ đi qua thành phần View của Server. View sau
đó sẽ xử lý các tác vụ làm việc với dữ liệu và trả về cho Client dưới dạng JSON
61
thông qua thành phần Serializer. Django Rest Framework sử dụng RestfulAPI
để làm giao thức chuẩn cho các giao tiếp giữa các thành phần trong hệ thống,
kết hợp với thư viện hỗ trợ CORS Headers - hoạt động như một Middleware,
đáp ứng khá đầy đủ các yêu cầu của vai trò là một API Layer.
− API Gateway đảm nhận vai trò xác thực và cấp quyền cho người dùng, cũng
như bảo vệ cho hệ thống phía bên dưới nhằm tăng yếu tố bảo mật cho dữ liệu
của khách hàng và tránh các xâm nhập phá hoại hệ thống, giảm độ chính xác
và sẵn sàng của ứng dụng.
3. Service Base:
Như đã mô tả ở trên, Service Base của ứng dụng tập hợp các service được thiết kế
để phục vụ các chức năng nhất định, phần lớn hoạt động độc lập, hoặc một vài trong
số đó có liên kết lỏng lẻo (loosely-coupled) với nhau. Dưới đây là một số service
sẽ phục vụ cho sản phẩm của nhóm:
− Data service: có chức năng xử lý, thu thập và lưu trữ dữ liệu nhập vào của
người dùng, đồng thời có thể tương tác với Database trong vấn đề tạo, lưu và
truy xuất các dữ liệu được yêu cầu.
− Analysis and Prediction Service: chứa model, chịu trách nhiệm xử lý data để
đưa vào model, từ đó xuất ra các kết quả phân tích, dự đoán cũng như đề xuất
cho người dùng. Service này cho phép dữ liệu được xuất ra dưới dạng Visualization hoặc trình bày theo report để người dùng có thể tải về.
− Chatbot Service: đảm nhiệm vai trò của một con Chatbot, tương tác trực tiếp
với người dùng. Service này chịu trách nhiệm đưa dữ liệu được phân tích bởi
model chatbot được tích hợp phía bên trong cho các Service tương ứng khác,
lấy kết quả về và trả ra cho người dùng. Chatbot Service giúp người dùng tiết
kiệm được thời gian khi tương tác trực tiếp hệ thống bằng câu chữ và nhận kết
quả ngay trên boxchat thay vì phải thực hiện các bước filter bằng tay.
Ngoài ra còn sử dụng Postgresql để làm nơi lưu trữ thông tin khách hàng sử dụng ứng
dụng (User, Password, Details,...), lưu trữ các thông tin dữ liệu khác (Tùy vào Policy
nhóm đặt ra).
2. Kiến trúc Data Lakehouse cho Data Service
Data Service là một phần cực kì quan trọng đối với hệ thống. Nó đảm nhận vai trò
lưu trữ, xử lý dữ liệu nhập vào từ người dùng đồng thời phải đảm bảo các yêu cầu về
62
tính khả dụng của dữ liệu, thời gian xử lý nhanh chóng, lưu trữ hiệu quả, tiết kiệm chi
phí và có khả năng mở rộng cao trên lượng lớn người dùng và dữ liệu lớn. Ngoài ra còn
phải đáp ứng được nhu cầu truy vấn phía người dùng đảm bảo được tính ACID như data
warehouse nhưng vẫn cần đáp ứng được tính linh hoạt và hiệu quả về chi phí như data
lake. Dựa vào các yêu cầu về mặt lưu trữ, xử lý và cung cấp dữ liệu như trên, nhóm
quyết định sử dụng kiến trúc Data Lakehouse để xây dựng một Data Service mạnh mẽ,
đáp ứng được toàn bộ nhu cầu trên một cách tốt nhất.
Hình 20: Kiến trúc Data Service
Các thành phần chính kiến trúc chính của Data Service tương ứng với các công nghệ
như sau:
1. Storage(lưu trữ): Nhóm sử dụng Minio, một giải pháp lưu trữ đối tượng Kubernetesnative và hiệu suất cao. Minio là lý tưởng cho kiến trúc cloud-agnostic như nhóm
hiện thực nhờ vào khả năng mở rộng cao và khả năng tương thích với Amazon S3
API. Điều này cho phép Spark và Hive tương tác với nó thông qua Hadoop AWS.
2. Data format: Nhóm sử dụng Delta Lake - một lớp lưu trữ mã nguồn mở, cung cấp
các giao dịch ACID, xử lý siêu dữ liệu mở rộng và thống nhất xử lý dữ liệu hàng
63
loạt (batch).
3. Data Processing Engine: Apache Spark, một công cụ phân tích hợp nhất, được sử
dụng để xử lý dữ liệu quy mô lớn. Nó cung cấp các API toàn diện để xử lý và phân
tích dữ liệu hiệu quả.
4. Data Catalog: Spark Catalog, được tích hợp trong Apache Spark, quản lý siêu dữ
liệu của dữ liệu và tính toán, tạo điều kiện thuận lợi cho việc quản lý và phát hiện
dữ liệu.
5. Metastore: Apache Hive, được hỗ trợ bởi PostgreSQL, đóng vai trò là Spark Metastore. Nó lưu trữ siêu dữ liệu cho Spark SQL và cho phép tối ưu hóa và vận hành
dữ liệu phức tạp hơn.
6. SQL Engine: Trino hoạt động như một cổng SQL, cho phép các ứng dụng bên
ngoài tương tác với Danh mục Spark thông qua giao diện JDBC/ODBC.
3. Thiết kế cơ sở dữ liệu
Đây là database được thiết kế cho phần quản lý website. Lược đồ được thiết kế để
lưu trữ thông tin tài khoản người dùng trong hệ thống
Hình 21: Lược đồ ERD cho hệ thống
Tài khoản người dùng: thông tin của tài khoản người dùng được thiết kế và lưu trữ
thông qua các thực thể: account, phone_number, email, address, retailer và business.
− Account bao gồm các thuộc tính:
64
+ ID: là mã của người dùng, là khóa chính.
+ account_name: tên tài khoản, là thuộc tính unique.
+ password: mật khẩu của tài khoản
+ type: loại tài khoản (doanh nghiệp hay nhà bán lẻ).
− Retailer: là thực thể con của account, cho biết loại tài khoản là của nhà bán lẻ,
gồm thuộc tính:
+ retailer_name: tên nhà bán lẻ
− Business: là thực thể con của account, cho biết loại tài khoản là của doanh nghiệp,
gồm thuộc tính:
+ business_name: tên doanh nghiệp
+ industry: ngành hàng kinh doanh của doanh nghiệp
− Phone_number: lưu trữ thông tin số điện thoại. Một tài khoản có nhiều số điện
thoại. Bao gồm các thuộc tính:
+ phone_number_id: mã số điện thoại trong database, là khóa
+ account_id: mã tài khoản cho biết tài khoản nào sở hữu số điện thoại này, là
khóa.
− Address: lưu trữ thông tin địa chỉ của tài khoản. Một tài khoản có nhiều địa chỉ.
Bao gồm các thuộc tính:
+ address_id: mã địa chỉ, là khóa
+ account_id: mã tài khoản cho biết tài khoản nào sở hữu số địa chỉ này, là khóa.
+ country: tên quốc gia
+ city: tên tỉnh/thành phố
+ district: tên quận/huyện
+ ward: tên xã/phường
+ address_detail: địa chỉ chi tiết
− Email: lưu thông tin email. Một tài khoản có nhiều email. Bao gồm các thuộc tính:
+ email_id: mã email, là khóa
+ account_id: mã tài khoản cho biết tài khoản nào sở hữu email này, là khóa.
+ email: tên email chi tiết
65
4. Thiết kế star schema
Để thiết kế dimensional schema (cụ thể là star schema) chung của hệ thống, lược đồ
này được thiết kế mục đích phân tích. Nhóm tuân thủ 4 bước trong quy trình thiết kế
dimensional schema.
4.1
Chọn business process
Bước đầu tiên trong thiết kế là quyết định business process nào cần lập mô hình.
Sau khi tìm hiểu và nghiên cứu, business process được xác định cho data warehouse để
lập mô hình là việc quản lý đơn hàng, sản phẩm từ giao dịch của POS (Point of Sales).
Dữ liệu này cho phép hệ thống phân tích về hoạt động buông bán các sản phẩm thông
qua các kênh thương mại điện tử tại các cửa hàng, xu hướng bán sản phẩm„... Ngoài ra
còn dựa trên các yếu tố khác được ghi lại từ POS.
4.2
Xác định độ chi tiết
Sau khi đã xác định được business process cho data warehouse. Nhóm phải đối mặt
với quyết định về độ chi tiết của data warehouse.
Vì dữ liệu cần phân tích liên quan đến sản phẩm, nên việc quyết định chọn độ chi tiết cho
data warehouse sẽ dựa trên từng sản phẩm riêng lẽ được ghi từ các giao dịch trong POS.
Ngoài ra, do không thể xác minh được tất cả các cách mà người dùng doanh nghiệp
cần cho data warehouse. Do đó, các dimensional table còn lại đều có một độ chi tiết
nhất định, còn dữ liệu về sản phẩm sẽ có độ chi tiết cao nhất, điều này cho phép data
warehouse cung cấp thông tin về từng bản ghi trong data warehouse linh hoạt hơn và chi
tiết hơn.
4.3
Xác định dimenional table
Sau khi đã xác định được độ chi tiết, thì việc xác định dimensional table khá đơn giản.
Các dimensional table được chọn: date dimension (dim_date), channel dimension (dim_channel),
customer dimension (dim_customer), time dimension (dim_time). promotion dimension
(dim_promotion), store dimension (dim_store).
4.4
Xác định fact table
Bước thứ tư và cũng là bước cuối cùng trong thiết kế là xác định cẩn thận những sự
kiện nào sẽ xuất hiện trong bảng fact. Các thông tin mà hệ thống POS thu thập có thể
là số lượng đơn hàng bán ra (order quantity), đơn giá (unit price), đơn giá khi áp dụng
66
khuyến mãi (unit discount), đơn giá sau cùng (unit cost), và các thông tin khác trên đơn
hàng như số đơn hàng (order number), ngày bán (order date), giờ bán (order time), ngày
vận chuyển (ship date), ngày thanh toán (payment date).
4.5
Star schema
Hình 22: Star Schema [link]
5. Thiết kế các Module
5.1
Module 1: Xác thực người dùng
− Đầu vào: Thông tin đăng nhập của người dùng (tên tài khoản và mật khẩu).
− Chức năng:
+ Xác minh danh tính người dùng
+ Quản lý và cập nhật dữ liệu dựa trên thông tin người dùng
+ Bảo mật và quản lý phiên làm việc
− Đầu ra: Trạng thái xác thực và quyền truy cập được cấp dựa vào mã jwt.
67
5.2
Module 2: Thu thập và lưu trữ dữ liệu
− Đầu vào: Dữ liệu được thu thập từ file tải lên của người dùng (CSV hoặc Excel)
− Chức năng:
+ Kiểm tra tính hợp lệ của dữ liệu và các cột thông tin quan trọng
+ Trích xuất, biến đổi và tải dữ liệu vào hệ thống
+ Mô hình hóa dữ liệu dưới dạng cấu trúc quan hệ
+ Lưu trữ dữ liệu để phục vụ truy vấn và phân tích
− Đầu ra: Cơ sở dữ liệu sẵn sàng việc truy vấn và phân tích.
5.3
Module 3: Phân tích dữ liệu
− Đầu vào: Dữ liệu từ quá trình thực hiện Module 2.
− Chức năng:
+ Áp dụng các kỹ thuật như phân tích thống kê, phân loại, mô tả
+ Tạo mô hình học máy để dự đoán xu hướng tương lai
+ Giải quyết các bài toán kinh doanh như phân tích giỏ hàng và phân khúc khách
hàng
− Đầu ra: Dữ liệu trả về dưới dạng json sẵn sàng cho quá trình truy xuất hoặc trực
quan hóa.
5.4
Module 4: Bảng báo cáo Dashboard
− Đầu vào: Dữ liệu và kết quả phân tích từ Module 3.
− Chức năng:
+ Tạo dashboard trực quan hóa dữ liệu
+ Tùy chỉnh biểu đồ hoặc phân tích qua bộ lọc
+ Thực hiện các tương tác với biểu đồ
− Đầu ra: Giao diện Dashboard cho người dùng.
68
5.5
Module 5: Chatbot hỗ trợ truy vấn
− Đầu vào: Lệnh được thực hiện bởi người dùng.
− Chức năng:
+ Mô tả ngắn gọn về thông tin lấy được
+ Trả về kết quả được truy xuất từ người dùng
+ Đưa ra các gợi ý hoặc đề xuất khác
− Đầu ra: Câu trả lời theo yêu cầu người dùng.
6. Mô hình dự đoán các sản phẩm bán chạy trong tương lai
6.1
Tập dữ liệu
Nhóm sử dụng tập dữ liệu kinh doanh tiêu dùng của một trang thương mại điện tử
với gần 2 triệu records thông tin, kéo dài trong 3 năm (từ 01-01-2020 đến 30-04-2023),
bao gồm đơn đặt hàng của 152 sản phẩm khác nhau trên nhiều cửa hàng. Mục tiêu của
ứng dụng là giúp người dùng dự đoán về tổng số sản phẩm bán hàng trong 30 ngày tiếp
theo (1 tháng). Dữ liệu được nhóm xử lý bao gồm tổng số lượng bán ra của sản phẩm
theo product_key trong một ngày, tiến hành huấn luyện và thử nghiệm trên nhiều mô
hình học máy khác nhau.
Sau khi trải qua giai đoạn tiền xử lý và thu gọn, tập dữ liệu mẫu của nhóm để sử
dụng có dạng như sau:
Hình 23: Biểu đồ tổng số sản phẩm bán ra theo thời gian (hàng ngày)
69
Tập dữ liệu của biến total_quantity theo từng ngày (Date) được đánh giá là Stationary, với P_value = 0.000038 < 0.05, phù hợp để tiếp tục sử dụng cho quá trình thử
nghiệm các mô hình học máy trong lĩnh vực Time Series Forecasting.
6.2
Thử nghiệm và đánh giá
Nhóm tiến hành thử nghiệm trên 3 mô hình học máy khác nhau ứng với 3 kĩ thuật:
ARIMA model (Statistics) [12], Random Forest (Machine Learning) [13], LSTM (Deep
Learning) [14].
Sau khi thử nghiệm với 3 model ứng với các kĩ thuật khác nhau ở trên, nhóm có một
bảng đánh giá sử dụng các Evaluation Metrics khác nhau cho Time Series Forecasting
Models:
ARIMA Random Forest LSTM
R-square
-0.5225
0.6718
0.928
MSE
0.0037
0.0029
0.0018
RMSE
0.0607
0.0315
0.042
MAE
0.0491
0.0258
0.034
WMAPE (%)
5.0830
2.5988
3.566
Từ kết quả đánh giá, có thể thấy rằng Random Forest và LSTM là 2 mô hình khá
tốt (các thông số được tính toán dựa trên tập Test). Nhìn chung LSTM cho ra kết quả
tốt nhất trong số 3 model, có thể kể đến như chỉ số MAE chỉ khoảng 3.4%, cho thấy độ
chính xác của model (Accuracy) lên tới hơn 96%, hay chỉ số R-squared trong thang đo
0 - 1 có giá trị là 0.928 và RMSE cũng chỉ khoảng 4,2%. Cho thấy rằng LSTM model
là model phù hợp cho việc dự đoán doanh số bán hàng trong tương lai khi dựa trên biến
total_quantity theo thời gian.
70
Hình 24: Đánh giá kết quả model LSTM
6.3
Dữ liệu đầu vào và dữ liệu đầu ra
− Tập dữ liệu huấn luyện: tổng số lượng bán ra tính theo ngày trong 2 năm của 152
sản phẩm khác nhau.
− Dữ liệu đầu vào: các dữ liệu về thông tin bán hàng (như order_date, product_key,
total_quantity, total_sale...)
− Dữ liệu đầu ra: Dự đoán mức độ tăng trưởng sau 30 ngày của sản phẩm.
Bảng 11: Bảng dự đoán giá trị tăng trưởng sau 30 ngày của
10 sản phẩm đầu
Product Key
Current Total Quantity
Predict Total Quantity
Growth (%)
9
13.0
51
288.278
8
108.0
139
28.383
6
136.0
150
10.245
3
473.0
485
2.362
5
148.0
148
-0.416
2
643.0
599
-6.851
10
171.0
159
-7.131
1
677.0
621
-8.358
7
216.0
188
-13.030
4
823.0
650
-21.080
7. Thiết kế phương pháp tự động tạo câu lệnh truy vấn dựa trên yêu
cầu người dùng
Quá trình này yêu cầu sự tích hợp chặt chẽ giữa việc hiểu ngôn ngữ tự nhiên và khả năng xử
lý dữ liệu của hệ thống, cùng với việc cung cấp71thông tin cấu trúc cơ sở dữ liệu đầy đủ và chính
xác. Dưới đây là các bước thiết kế nhóm định hướng thực hiện cho phương pháp này.
7.1
Chuẩn bị thông tin ban đầu
Trước khi bắt đầu tạo câu lệnh truy vấn, hệ thống cần được cung cấp các thông tin ban đầu
về cơ sở dữ liệu. Điều này bao gồm các thông tin về cấu trúc bảng, các cột và kiểu dữ liệu tương
ứng. Các thông tin này thường được biểu diễn dưới dạng JSON để dễ dàng xử lý và truyền tải.
− Cấu trúc: Bao gồm tên CSDL, tên bảng và các cột trong bảng đó.
− Kiểu dữ liệu: Mỗi cột phải được xác định rõ kiểu dữ liệu để hệ thống có thể tạo ra các câu
lệnh SQL chính xác.
Ví dụ minh họa:
{
"database": "[retail_mart].[dbo]",
"tables": {
"fact_ecommerce_sales": [
{"COLUMN_NAME": "date_key", "DATA_TYPE": "int"},
{"COLUMN_NAME": "product_key", "DATA_TYPE": "int"},
{"COLUMN_NAME": "channel_key", "DATA_TYPE": "int"},
{"COLUMN_NAME": "customer_key", "DATA_TYPE": "int"}
],
"dim_product": [
{"COLUMN_NAME": "product_key", "DATA_TYPE": "int"},
{"COLUMN_NAME": "product_name", "DATA_TYPE": "nvarchar"},
{"COLUMN_NAME": "product_category", "DATA_TYPE": "nvarchar"},
{"COLUMN_NAME": "product_subcategory", "DATA_TYPE": "nvarchar"}
]
}
}
7.2
Hệ thống cấu hình
Hệ thống cấu hình ban đầu cần được thiết lập để hướng dẫn mô hình GPT tạo ra các câu lệnh
truy vấn phù hợp. Cấu hình này định nghĩa vai trò của mô hình và cách mà nó phản hồi lại yêu
cầu của người dùng.
− Mô hình sử dụng: Nhóm sử dụng phiên bản mô hình gpt-4-turbo để nâng cao khả năng
hiểu yêu cầu và cải thiện độ chính xác kết quả trả về.
− Vai trò hệ thống: Chúng ta sẽ định nghĩa mặc định hệ thống như là một chatbot chuyên
gia về phân tích dữ liệu, có nhiệm vụ tạo ra các câu lệnh SQL.
72
− Định dạng phản hồi: Phản hồi của hệ thống cần tuân thủ một định dạng nhất định để dễ
dàng phân tích và thực hiện. Phản hồi có thể được định dạng dưới dạng JSON với các
trường như ”message” và ”query”. Ví dụ:
{
"message": "Query to fetch the top 10 best-selling products",
"query": "SELECT TOP 10 p.product_name,
SUM(f.order_quantity) AS total_quantity
FROM [retail_mart].[dbo].[fact_ecommerce_sales] f
JOIN [retail_mart].[dbo].[dim_product] p
ON f.product_key = p.product_key
GROUP BY p.product_name
ORDER BY total_quantity DESC"
}
7.3
Xử lý phản hồi
Sau khi có kết quả trả về từ mô hình GPT-4, chúng ta cần thực hiện một số bước xử lý để đảm
bảo rằng câu lệnh truy vấn SQL sẽ được thực thi chính xác và hiệu quả. Quá trình này bao gồm
các bước sau:
− Xử lý ngoại lệ (try-catch): Trong quá trình xử lý kết quả trả về, có thể xảy ra các lỗi không
mong muốn do dữ liệu không hợp lệ hoặc các vấn đề khác. Để đảm bảo ứng dụng không
bị gián đoạn và có thể xử lý lỗi một cách thích hợp, chúng ta sử dụng các khối try-catch
để bắt và xử lý ngoại lệ. Khi xảy ra lỗi, chúng ta có thể ghi log chi tiết về lỗi đó, thực hiện
các bước khắc phục tạm thời hoặc thông báo cho người dùng về vấn đề gặp phải. Điều này
giúp ngăn chặn các lỗi không mong muốn và đảm bảo quá trình xử lý dữ liệu diễn ra suôn
sẻ, không làm gián đoạn trải nghiệm người dùng.
− Trích xuất chuỗi JSON phù hợp: Kết quả trả về từ mô hình GPT-4 có thể chứa nhiều chi
tiết thừa hoặc không theo đúng định dạng JSON chuẩn. Điều này có thể gây ra khó khăn
trong việc phân tích và sử dụng dữ liệu. Để trích xuất chuỗi JSON cần thiết, chúng ta có thể
sử dụng các phương pháp như regex (regular expression) để xác định và tách phần JSON
chính xác trong chuỗi trả về. Sau đó, chúng ta có thể sử dụng các thư viện phân tích JSON
để parse chuỗi này thành đối tượng dữ liệu có thể sử dụng. Việc này giúp loại bỏ các phần
dữ liệu không cần thiết và đảm bảo rằng chúng ta chỉ làm việc với dữ liệu có cấu trúc đúng.
Bằng cách thực hiện các bước này, chúng ta có thể đảm bảo rằng dữ liệu trả về từ mô hình
GPT-4 sẽ được xử lý một cách chính xác và hiệu quả. Việc xử lý dữ liệu trước khi thực hiện truy
vấn SQL không chỉ giúp giảm thiểu các lỗi có thể xảy ra mà còn đảm bảo rằng quá trình truy
vấn diễn ra suôn sẻ, nhanh chóng và đạt được kết quả mong muốn. Điều này đặc biệt quan trọng
trong các hệ thống yêu cầu độ tin cậy và hiệu suất cao.
73
7.4
Thực hiện truy vấn
Sau khi câu lệnh SQL được tạo ra, hệ thống sẽ thực hiện truy vấn trên cơ sở dữ liệu và trả về
kết quả cho người dùng. Quá trình này bao gồm các bước sau:
− Thực hiện truy vấn: Sử dụng câu lệnh SQL đã tạo để truy vấn cơ sở dữ liệu và lấy kết quả
thông qua kết nối JDBC. Hệ thống sẽ gửi câu lệnh SQL tới cơ sở dữ liệu, thực thi truy vấn
và thu thập kết quả trả về.
− Kết quả trả về: Phản hồi cuối cùng đến người dùng bao gồm một đoạn thông báo mô tả
ngắn gọn cùng với dữ liệu từ quá trình truy vấn. Kết quả này sẽ được định dạng dưới dạng
JSON, gồm hai trường: answer và data. Trường answer chứa thông điệp mô tả ngắn gọn
về truy vấn, trong khi trường data chứa dữ liệu trả về từ cơ sở dữ liệu, cũng được định
dạng dưới dạng JSON. Khi hiển thị cho người dùng, dữ liệu trong data sẽ được trình bày
dưới dạng bảng để dễ nhìn và dễ hiểu hơn.
Ví dụ về kết quả trả về:
{'answer': 'Dưới đây là top 10 sản phẩm bán chạy nhất', 'data':
[
'{"product_name":"Miến khác","total_quantity":112}',
'{"product_name":"Cafe đen lon","total_quantity":93}',
'{"product_name":"Cháo Yến Mạch","total_quantity":261}',
'{"product_name":"Xay tiêu, tỏi","total_quantity":94}'
...
]
}
Phương pháp tạo câu lệnh truy vấn từ yêu cầu của người dùng là một giải pháp phù hợp cho
những người kinh doanh thương mại điện tử không am hiểu nhiều về công nghệ và phân tích dữ
liệu. Hệ thống này giúp họ dễ dàng truy xuất dữ liệu và hiểu rõ tình hình kinh doanh hiện tại mà
không cần phải biết ngôn ngữ SQL.
Bằng cách này, các nhà kinh doanh có thể tận dụng tối đa sức mạnh của dữ liệu để đưa ra các
quyết định kinh doanh chính xác và kịp thời, mà không gặp phải rào cản về kỹ thuật.
74
V. Hiện thực hệ thống
1. Quản lý mã nguồn
Nhóm sử dụng Github để quản lý mã nguồn. Đường dẫn tới kho lưu trữ mã nguồn của nhóm
tại đây: https://github.com/MarcoLuw/capstone_project
2. Chức năng xác thực người dùng
Hình 25: Giao diện đăng nhập Website
Hình 26: Giao diện đăng ký Website
Người dùng cần phải đăng nhập để có thể sử dụng các chức năng theo dõi và phân tích dữ
liệu trên hệ thống. Nếu người dùng chưa có tài khoản trước đó, họ sẽ cần đăng ký tại trang tạo
tài khoản. Quá trình đăng ký yêu cầu cung cấp thông tin cá nhân cần thiết để tạo tài khoản. Sau
khi hoàn tất việc đăng ký, người dùng có thể tiến hành đăng nhập bằng thông tin đã đăng ký.
Khi đăng nhập thành công, hệ thống sẽ tự động xác thực người dùng và gửi một mã JSON Web
Token (JWT) để xác nhận danh tính. Mã JWT này sẽ được sử dụng trong các lần truy cập tiếp
theo để đảm bảo an toàn và bảo mật thông tin người dùng.
3. Chức năng thu thập và lưu trữ dữ liệu
3.1
Hiện thực giao diện
Trong quá trình này, người dùng có thể tải lên tệp dữ liệu của mình để bắt đầu xây dựng báo
cáo. Giao diện hỗ trợ nhập liệu từ các tệp CSV và Excel. Người dùng có thể chọn tệp dữ liệu
bằng cách nhấp vào nút ”Choose...” và sau đó nhấp vào ”Upload File” để tải tệp lên hệ thống.
Sau khi tệp được tải lên, dữ liệu sẽ được xử lý và hiển thị ở dưới phần Preview Data trước khi
áp dụng cho báo cáo.
75
Hình 27: Giao diện nhập dữ liệu vào hệ thống
Hình 28: Giao diện xem trước dữ liệu được nhập vào
3.2
Hiện thực hệ thống
Để hiện thực chức năng lưu trữ dữ liệu do người dùng nhập vào, nhóm thực hiện lớp đầu tiên
của kiến trúc Data Lakehouse (storage layer). Ở phần này, công nghệ Minio được dùng để lưu
dữ liệu thô từ người dùng. Dữ liệu của mỗi người dùng nhập vào sẽ được lưu trữ trực tiếp trên
Minio với đúng định dạng file ban đầu.
76
Thách thức đặt ra đối với chức năng lưu trữ này chính là tính bảo mật và khả năng sao lưu
dữ liệu của người dùng. Đầu tiên là giải quyết về khả năng sao lưu và phục hồi dữ liệu. Để giải
quyết được vấn đề này trong giai đoạn phát triển, cộng với tiết kiệm chi phí, nhóm đã triển khai
Minio theo hướng Multi Node Multi Drive. Với giải pháp này, nhóm đã có thể được các vấn đề
sau về mặt lưu trữ dữ liệu:
− Tính sẵn sàng cao (High Availability): Trong mô hình Multi-Node, MinIO phân tán dữ liệu
qua nhiều máy chủ. Điều này không chỉ giúp cải thiện khả năng mở rộng mà còn đảm bảo
tính sẵn sàng cao. Nếu một node gặp sự cố, các node khác trong cụm vẫn tiếp tục hoạt
động, giảm thiểu thời gian ngừng hoạt động và ảnh hưởng đến người dùng.
− Khả năng phục hồi (Resilience): Mỗi node trong cấu hình Multi-Node có thể được cấu hình
với Erasure Coding, một phương pháp mà MinIO sử dụng để phân chia và lưu trữ dữ liệu
trên nhiều ổ đĩa và node. Điều này không chỉ giúp bảo vệ dữ liệu khỏi mất mát do hỏng đĩa
mà còn giúp phục hồi dữ liệu khi một số ổ đĩa hoặc node bị lỗi.
− Sao chép dữ liệu (Data Replication): MinIO hỗ trợ sao chép dữ liệu giữa các cụm, đảm bảo
dữ liệu có thể được sao chép ở các vị trí địa lý khác nhau để bảo vệ chống lại thảm họa và
giảm độ trễ truy cập dữ liệu cho người dùng ở các khu vực địa lý khác nhau.
Đối với về tính bảo mật dữ liệu của người dùng, yêu cầu là mỗi người dùng chỉ thấy và chỉ
được sử dụng, truy cập trên chính dữ liệu của mình. Nhóm đã làm như sau:
− Mỗi người dùng sẽ được cung cấp tài khoản và một vùng lưu trữ (bucket) trên Minio
− Mỗi tài khoản người dùng sẽ được áp dụng một chính sách (policy) để đảm bảo chỉ có thể
truy cập trên bucket của mình.
− Ngoài ra để đảm bảo mức độ bảo mật cao hơn và tuân thủ các quy định bảo mật dữ liệu,
nhóm tích hợp Minio với hệ thống IAM để quản lý tốt hơn việc xác thực và phân quyền
người dùng trên Minio bằng Keycloak.
1
policy = {
2
" Version ": "2012 -10 -17",
3
" Statement ": [
4
{
5
" Action ": ["s3 :*"],
6
" Effect ": "Allow ",
7
" Resource ": ["arn:aws:s3 ::: users - bucket "],
8
" Condition ": {
" StringEquals ": {
9
10
"s3: prefix ": ["", "${aws: username }/"],
11
"s3: delimiter ": ["/"]
}
12
13
}
77
14
},
15
{
16
" Action ": ["s3 :*"],
17
" Effect ": "Allow ",
18
" Resource ": ["arn:aws:s3 ::: users - bucket "],
19
" Condition ": {
" StringLike ": {
20
"s3: prefix ": ["users - bucket /${aws: username }/*"]
21
}
22
}
23
24
},
25
{
26
" Effect ": "Allow ",
27
" Action ": ["s3 :*"],
28
" Resource ": ["arn:aws:s3 ::: users - bucket /${aws: username }/*
"]
29
},
30
{
31
"Sid": " AllowUseeOn - Warehouse ",
32
" Action ": ["s3 :*"],
33
" Effect ": "Allow ",
34
" Resource ": ["arn:aws:s3 ::: hive/ warehouse /${aws: username
}- warehouse /*"],
}
35
]
36
37
}
Hình 29: Giao diện Minio với user ”test-user”
4. Chức năng phân tích dữ liệu
Để mô phỏng quá trình phân tích dữ liệu, nhóm sử dụng tệp dữ liệu về lịch sử các giao dịch
của khách hàng khi thanh toán trên các sàn thương mại điện tử.
78
Trường dữ liệu
Mô tả
order_number
Mã định danh duy nhất cho mỗi đơn hàng
order_line_number
Số thứ tự dòng trong mỗi đơn hàng cho từng mặt hàng
order_date
Ngày đặt hàng
product_key
Mã định danh duy nhất cho mỗi sản phẩm
unit_price
Giá tiền cho mỗi đơn vị sản phẩm
order_quantity
Số lượng sản phẩm được đặt hàng
total_sale
Tổng số tiền bán được cho mục sản phẩm đó
product_name
Tên của sản phẩm
product_category
Danh mục chung của sản phẩm
product_subcategory
Danh mục phụ cụ thể của sản phẩm
customer_key
Mã định danh duy nhất cho khách hàng
customer_name
Họ và tên của khách hàng
Trong quá trình phân tích, nhóm đã tiến hành áp dụng các phương pháp phân tích dữ liệu để
đánh giá hiệu suất kinh doanh và đưa ra các đề xuất chiến lược. Các phương pháp này bao gồm:
− Phân tích mô tả: Nhóm tập trung vào việc thu thập thông tin từ các chỉ số cốt lõi như tổng
doanh số, tổng số đơn hàng, và tổng số lượng sản phẩm đã bán, như được hiển thị trên bảng
điều khiển chính của hệ thống. Các số liệu này giúp chúng ta nắm bắt được tình hình hiện
tại một cách nhanh chóng.
− Phân tích xu hướng: Sử dụng biểu đồ thể hiện các chỉ số theo thời gian để theo dõi sự
thay đổi của doanh số và số đơn hàng, từ đó chúng ta có thể nhận diện được sự tăng trưởng
hoặc giảm sút theo thời gian.
− Phân tích dự báo: Nhóm áp dụng mô hình học máy để dự đoán các sản phẩm bán chạy
trong tương lai. Phương pháp này dựa trên dữ liệu lịch sử và xu hướng hiện tại để đưa ra các
ước lượng về tổng số lượng bán được của từng sản phẩm, hỗ trợ doanh nghiệp trong việc
đẩy mạnh kinh doanh các sản phẩm tăng trưởng mạnh hoặc loại bỏ các sản phẩm không
bán được.
− Phân tích luật kết hợp: Sử dụng thuật toán FP-Growth để phát hiện các mẫu giao dịch
phổ biến và các mặt hàng thường được mua cùng nhau. Phân tích này giúp doanh nghiệp
xác định các cơ hội bán chéo và tối ưu hóa việc sắp xếp sản phẩm.
− Phân tích khách hàng: Áp dụng mô hình RFM (Recency, Frequency, Monetary) để phân
khúc khách hàng dựa trên thời gian gần nhất của giao dịch, tần suất giao dịch và tổng giá
trị tiền hàng. Phân khúc này giúp doanh nghiệp xác định các nhóm khách hàng có giá trị
cao và xây dựng các chiến lược tiếp thị phù hợp.
79
Nhờ vào việc áp dụng những phương pháp này, chúng ta không chỉ hiểu rõ được hiện trạng
kinh doanh mà còn có thể dự đoán được các xu hướng và diễn biến trong tương lai. Điều này
giúp cho doanh nghiệp đưa ra những quyết định kinh doanh hợp lý và đáng tin cậy, đồng thời
tận dụng tối đa các cơ hội kinh doanh từ việc phân tích giỏ hàng và phân khúc khách hàng.
5. Chức năng bảng báo cáo Dashboard
Để hiện thực xây dựng báo cáo cho Website, nhóm đã sử dụng thư viện JS Chart dành cho
React. React JS Chart giúp tạo ra các biểu đồ và đồ thị tương tác, hỗ trợ một loạt các kiểu biểu
đồ khác nhau và dễ dàng tích hợp vào các ứng dụng React.
Để kết nối dữ liệu cho việc tạo các biểu đồ, nhóm đã sử dụng thư viện Axios để thực hiện giao
tiếp giữa React và Django. Axios cho phép gửi các yêu cầu HTTP như GET, POST để thực thi
API. Điều này cho phép ta xử lý các phản hồi thành công hoặc thất bại một cách dễ dàng bằng
cách sử dụng cú pháp async/await hoặc các phương thức then/catch.
Dưới đây là giao diện hệ thống mà nhóm đã phát triển để phục vụ cho quá trình đánh giá và
phân tích:
Hình 30: Giao diện tổng quan Dashboard
Trên cùng là thanh công cụ với logo và các nút điều hướng. Thanh Sidebar bên trái gồm
các mục Home để bắt đầu tạo báo cáo, mục Report để xem chi tiết các báo cáo của mình, mục
Support dùng để hỗ trợ quá trình sử dụng và biểu tượng User phía góc phải liên quan đến tài
khoản người dùng. Khu vực chính sẽ gồm tập hợp các chỉ số và biểu đồ liên quan đến tình hình
kinh doanh của doanh nghiệp. Bên cạnh đó, người dùng có thể sử dụng bộ lọc thời gian được
thiết lập sẵn cho quá trình phân tích dữ liệu của mình.
80
Hình 31: Giao diện tùy chỉnh và các chỉ số chính
Hệ thống bảng báo cáo Dashboard cho phép người dùng thêm một biểu đồ mới như sau:
− Tiêu đề (Title): Đây là nơi bạn nhập tiêu đề cho biểu đồ. Ví dụ, tiêu đề được nhập là “Tổng
doanh thu theo sản phẩm”.
− Kích thước (Width): Có thể điều chỉnh kích thước biểu đồ bằng thanh trượt từ 1 đến 12.
Kích thước 12 sẽ chiếm toàn bộ chiều rộng màn hình.
− Loại biểu đồ (Type): Bạn có thể chọn loại biểu đồ mà bạn muốn hiển thị. Các loại biểu đồ
có sẵn bao gồm:
+ Bar Chart (Biểu đồ thanh ngang)
+ Column Chart (Biểu đồ cột dọc)
+ Pie Chart (Biểu đồ tròn)
+ Card (Thẻ thông tin)
+ Line Chart (Biểu đồ đường)
+ Table (Bảng dữ liệu)
− Trường danh mục (Category Field): Đây là nơi bạn chọn trường dữ liệu sẽ được sử dụng
làm danh mục.
− Trường giá trị (Value Field): Chọn trường dữ liệu sẽ được sử dụng để tính toán và hiển
thị giá trị.
− Hàm (Function): Chọn hàm sẽ áp dụng trên trường giá trị. Các tùy chọn bao gồm Sum,
Average, Count, Distinct, v.v.
81
Hình 32: Bảng chọn thêm mới biểu đồ trong Dashboard
Ngoài ra, Dashboard còn cung cấp cho người dùng bảng chọn để thêm mới bộ lọc trong
Dashboard và quá trình sử dụng bộ lọc cho phân tích. Giao diện thêm bộ lọc mới cho phép bạn
chọn trường dữ liệu (Field) để áp dụng bộ lọc. Trong ví dụ, trường được chọn là product_name.
82
Hình 33: Bảng chọn thêm mới bộ lọc trong Dashboard
Quá trình sử dụng bộ lọc cho phân tích:
− Sau khi thêm bộ lọc, bạn có thể sử dụng các bộ lọc này để phân tích dữ liệu trong Dashboard.
− Trong ví dụ, có hai bộ lọc được áp dụng là product_name và product_subcategory.
− Bạn có thể chọn các giá trị cụ thể từ danh sách các tùy chọn để lọc dữ liệu. Ví dụ, có thể
chọn các giá trị như “All”, “Thực phẩm ăn liền”, “Đồ dùng nhà bếp”, “Kẹo, sữa, sữa chua,
phô mai”, và “Kẹo” trong bộ lọc product_subcategory.
Hình 34: Quá trình sử dụng bộ lọc cho phân tích
Tiếp theo là các biểu đồ khác cung cấp cái nhìn toàn diện về doanh thu và sản phẩm. Biểu đồ
chuỗi thời gian hiển thị sự biến động của tổng doanh thu theo từng ngày đặt hàng, giúp người
quản lý dễ dàng theo dõi xu hướng và xác định các khoảng thời gian doanh thu cao hoặc thấp.
Biểu đồ sản phẩm hàng đầu liệt kê các sản phẩm có doanh thu cao nhất, cung cấp thông tin về
những mặt hàng bán chạy nhất và giúp đưa ra quyết định về chiến lược kinh doanh và quản lý
kho hàng. Biểu đồ phân khúc danh mục sản phẩm phân chia doanh thu theo các danh mục sản
phẩm, cho thấy tỷ lệ đóng góp của từng danh mục vào tổng doanh thu, từ đó giúp phân tích hiệu
quả kinh doanh của từng loại sản phẩm và tối ưu hóa danh mục sản phẩm.
83
Hình 35: Biểu đồ thể hiện tổng doanh thu theo thời gian
Hình 36: Giao diện phân tích thống kê sản phẩm
Bên cạnh đó, Dashboard còn có tạo bảng thể hiện đầy đủ thông tin chi tiết thông qua các
trường được chọn. Bảng này gồm các cột thể hiện cho thời gian, tên sản phẩm, danh mục sản
phẩm, số lượng đơn hàng, số lượng bán và doanh thu,
84
Hình 37: Giao diện hiển thị thông tin chi tiết sản phẩm
Đây là phần thể hiện dự đoán về các sản phẩm bán chạy trong tương lai trong phần ”Suggestion” của báo cáo. Phần trên cùng của giao diện cho phép người dùng chọn khoảng thời gian
để áp dụng tính toán. Dưới đó là bảng dự đoán các sản phẩm bán chạy dựa trên mô hình LSTM
cùng với dự đoán về số lượng bán và tỷ lệ tăng trưởng.
Hình 38: Giao diện dự đoán các sản phẩm bán chạy
Bảng dưới đây cung cấp danh sách các sản phẩm cùng với các sản phẩm liên quan, giúp nhà
85
bán lẻ áp dụng các lựa chọn các combo sản phẩm phù hợp. Mỗi mục trong danh sách bao gồm
tên sản phẩm, danh mục, giá cả, tên sản phẩm liên quan, danh mục liên quan, giá của sản phẩm
liên quan và điểm độ tương đồng. Chức năng này hỗ trợ việc tối ưu hóa bán hàng và tăng cường
trải nghiệm mua sắm cho khách hàng bằng cách gợi ý các sản phẩm thường được mua cùng nhau.
Hình 39: Giao diện đề xuất các sản phẩm combo
Biểu đồ hiển thị số lượng khách hàng trong từng phân khúc khác nhau như: Khách hàng
VIP, Khách hàng trung thành, Khách hàng tiềm năng, Khách hàng mới, và Khách hàng không
hoạt động, giúp người quản lý dễ dàng nắm bắt cơ cấu khách hàng.
Bảng chi tiết khách hàng cung cấp thông tin cụ thể về từng khách hàng bao gồm: tên khách
hàng, số điện thoại, địa chỉ, số tiền đã chi tiêu, tần suất mua hàng, lần mua gần nhất, và phân
khúc tương ứng. Giao diện này hỗ trợ việc phân tích và quản lý khách hàng hiệu quả hơn, từ đó
đưa ra các chiến lược kinh doanh phù hợp.
86
Hình 40: Giao diện đề xuất phân khúc khách hàng
6. Chức năng chatbot hỗ trợ truy vấn
Dựa trên quá trình thiết kế phương pháp tạo câu lệnh truy vấn từ yêu cầu người dùng ở trên,
nhóm đã hiện thực hóa phương pháp này thông qua giao diện chatbot, giúp người dùng dễ dàng
tương tác và tạo các câu lệnh truy vấn một cách trực quan và thuận tiện.
Hình 41: Giao diện tổng quan của Chatbot
87
Người dùng có thể nhập lệnh của mình vào khung chat và nhấn ”Send” để gửi yêu cầu cho
hệ thống. Chatbot này sẽ giúp phân tích và cung cấp thông tin nhanh chóng, hỗ trợ đắc lực cho
việc ra quyết định trong kinh doanh.
Hình 42: Giao diện quá trình sử dụng Chatbot
Trong ví dụ này, người dùng yêu cầu Chatbot cung cấp thông tin về các sản phẩm bán chạy nhất
trong tháng 5. Chatbot trả lời bằng cách hiển thị bảng dữ liệu gồm các sản phẩm bán chạy nhất,
với các cột thông tin bao gồm tên sản phẩm (product_name), số lượng bán (quantity_sold),
và tổng doanh thu (total_revenue). Ví dụ này cho thấy tính hiệu quả và tiện lợi của việc sử
dụng Chatbot trong việc truy vấn và hiển thị dữ liệu kinh doanh một cách nhanh chóng và trực
quan.
88
VI. Kiểm thử, đánh giá hệ thống
Kiểm thử hệ thống (System Test) thường là thử nghiệm cuối cùng để xác minh rằng hệ thống
đáp ứng được các yêu cầu đặc tả và mục đích của nó. Trong phần này, nhóm sẽ thực hiện kiểm
thử chức năng (Functional Test) để đảm bảo sự hoạt động đúng đắn của các khối chức năng.
1. Đăng nhập, đăng ký
ID
1
Tên testcase
Kịch bản kiểm thử
Kết quả kì vọng
Người dùng đăng
1.
Hiển thị thông báo
ký thành công với
khoản.
”Đăng ký thành công”
đầy đủ các thông
2. Nhập các thông tin đầy đủ.
và chuyển qua trang
tin yêu cầu.
3. Nhấn nút đăng ký.
chủ
1. Nhập thiếu email, password
Hiển thị thông báo ”Vui
hoặc cả hai.
lòng nhập đầy đủ thông
2. Ấn nút đăng nhập.
tin”
nhập không thành
1. Nhập sai email, password
Hiển thị thông báo
công khi nhập sai
hoặc cả hai.
”Email hoặc Password
thông tin đăng
2. Ấn nút đăng nhập.
không đúng”
Người dùng đăng
2
nhập không được
khi thiếu thông tin
đăng nhập.
Nhấn vào nút Tạo tài
Kết quả
PASS
PASS
Người dùng đăng
3
PASS
nhập.
Kiểm tra thời gian
4
một phiên đăng
nhập của người
dùng.
1. Người dùng đăng nhập vào
hệ thống.
2. Không thoát khỏi hệ thống
hoặc đăng xuất trong thời gian
quy định (60 phút).
89
Phiên đăng nhập hết
hạn, người dùng phải
đăng nhập lại vào hệ
thống.
PASS
2. Tải dữ liệu lên
ID
Tên testcase
Kịch bản kiểm thử
Kết quả kì vọng
Kết quả
1. Vào tab ”Create”.
2. Chọn loại dữ liệu ”CSV”
1
Người dùng nhập
hoặc ”Excel”.
Hiển thị thông báo ”Up-
dữ liệu với định
3. Nhấn nút ”Upload File” và
load file thành công” và
dạng CSV hoặc
chọn tệp CSV hoặc Excel.
chuyển qua trang Dash-
Excel
4. Xem trước dữ liệu trong
board.
PASS
phần PreviewData.
5. Nhấn nút ”Submit”.
1. Vào tab ”Create”.
2. Chọn loại dữ liệu ”CSV”
2
Người dùng nhập
hoặc ”Excel”.
Hiển thị thông báo
dữ liệu với định
3. Nhấn nút ”Upload File”
”Định dạng tệp không
dạng không hợp lệ
và chọn tệp không phải CSV
hợp lệ”.
PASS
hoặc Excel.
4. Nhấn nút ”Submit”.
1. Vào tab ”Create”.
2. Chọn loại dữ liệu ”CSV”
3
Người dùng tải
hoặc ”Excel”.
Hiển thị thông báo ”Cấu
lên tệp với cấu
3. Nhấn nút ”Upload File” và
trúc dữ liệu tệp không
trúc dữ liệu sai
chọn tệp CSV hoặc Excel với
hợp lệ”.
PASS
cấu trúc dữ liệu sai.
4. Nhấn nút ”Submit”.
1. Vào tab ”Create”.
Người dùng tải
4
lên tệp lớn hơn
kích thước cho
phép
2. Chọn loại dữ liệu ”CSV”
hoặc ”Excel”.
Hiển thị thông báo
3. Nhấn nút ”Upload File” và
”Kích thước tệp quá
chọn tệp CSV hoặc Excel lớn
lớn”.
hơn kích thước cho phép.
4. Nhấn nút ”Submit”.
90
PASS
3. Tùy chỉnh Dashboard
ID
Tên testcase
Kịch bản kiểm thử
Kết quả kì vọng
Kết quả
1. Nhấn vào nút ”Add Visualization” trên Dashboard.
2. Thêm các thông tin về biểu
1
Người dùng thêm
mới biểu đồ
đồ như Tiêu đề, kích thước...
Biểu đồ mới được hiển
2. Chọn loại biểu đồ.
thị trên dashboard cùng
3. Chọn nguồn dữ liệu và cấu
với dữ liệu đã chọn.
PASS
hình biểu đồ.
4. Nhấn nút vào ”Add Visualization”.
2
1. Nhấn vào nút ”Add Filter”
Nút Filter được hiển
Người dùng sử
trên Dashboard.
thị trên dashboard theo
dụng bộ lọc
2. Chọn trường dữ liệu cần lọc
trường dữ liệu được
3. Nhấn nút ”Add Filter”.
chọn.
PASS
1. Nhấn vào bộ lọc tương ứng
Người dùng sử
3
dụng bộ lọc trên
biểu đồ
trên Dashboard.
Dữ liệu trên biểu đồ
2.
Chọn theo tiêu chí lọc
được cập nhật tự động
(khoảng dữ liệu hoặc giá trị
theo các tiêu chí lọc đã
xác định).
chọn.
PASS
1. Nhấn vào nút ”***” trên
biểu đồ.
Người dùng thay
4
đổi thông tin của
biểu đồ
2. Hộp thoại về thông tin biểu
đồ hiệnn lên.
2.
Nhập vào các thông tin
muốn chỉnh sửa như: tiêu đề,
Biểu đồ được cập nhật
theo những thông tin
PASS
bạn đã chỉnh sửa.
kích thước, loại biểu đồ...
3. Nhấn nút ”Apply”.
1. Nhấn vào nút ”***” trên
biểu đồ.
5
Người
dùng
phóng to biểu đồ
2. Chọn mục ”Expand” trên
Biểu đồ được mở rộng
biểu đồ.
toàn màn hình để bạn dễ
3. Chọn mục ”Collapse” nếu
quan sát.
muốn quay trở lại.
91
PASS
1. Nhấn vào nút ”***” trên
6
Người dùng xóa
biểu đồ
biểu đồ.
Biểu đồ sẽ được xóa đi
2. Chọn mục ”Remove” trên
khỏi Dashboard hiển thị
biểu đồ.
trên màn hình
PASS
4. Tương tác với Chatbot
ID
1
2
Tên testcase
Kịch bản kiểm thử
Kết quả kì vọng
1. Nhấn vào tab ”Chatbot”.
Hiển thị mô tả ngắn
Thực hiện các yêu
2. Nhập yêu cầu: ”Cho biết về
cùng với bảng dữ liệu
cầu đơn giản
top 10 sản phẩm đạt doanh thu
gồm 10 sản phẩm có
cao nhất” và chờ phản hồi.
doanh thu cao nhất.
1. Nhấn vào tab ”Chatbot”.
Hiển thị mô tả ngắn
2. Nhập yêu cầu: ”Cho biết
cùng với bảng dữ liệu
Thực hiện các yêu
các sản phẩm đồ gia dụng có
gồm các sản phẩm đồ
cầu phức tạp
sự tăng trưởng doanh thu cao
gia dụng có sự tăng
nhất khi so sánh năm 2023 với
trưởng cao nhất khi so
2022” và chờ phản hồi.
sánh.
1. Nhấn vào tab ”Chatbot”.
3
Thực hiện các yêu
2. Nhập yêu cầu: ”Cho biết
cầu không rõ ràng
người dùng thích cái gì” và
chờ phản hồi.
Thực hiện các yêu
4
cầu với dữ liệu
không có sẵn
Thực hiện các yêu
5
cầu mà hệ thống
không hỗ trợ
1. Nhấn vào tab ”Chatbot”.
2. Nhập yêu cầu: ”Cho biết
về tổng doanh thu trong năm
2025” và chờ phản hồi.
1. Nhấn vào tab ”Chatbot”.
2. Nhập yêu cầu: ”Hãy lấy dữ
liệu về sản phẩm trên Shopee
cho tôi” và chờ phản hồi.
92
Kết quả
PASS
PASS
Hiển thị thông báo ”Vui
lòng cung cấp thêm chi
PASS
tiết về yêu cầu của bạn”.
Hiển thị thông báo ”Dữ
liệu không hợp lệ hoặc
PASS
không tồn tại”.
Hiển thị thông báo ”Rất
tiếc, tôi không thể thực
hiện yêu cầu này”.
PASS
5. Đánh giá hiệu suất
Dựa theo yêu cầu phi chức năng về hiệu suất (Performance), hệ thống đã đánh giá hiệu suất
trung bình từ 100 lượt sử dụng với các chức năng sau:
STT
1
Thời gian phản hồi trung bình (giây)
Nhiệm vụ
Tải dữ liệu lên (file dữ liệu
6.12
khoảng 100MB)
2
Tạo bảng Dashboard mặc định
3.15
3
Áp dụng bộ lọc dữ liệu
1.09
4
5
Xử lý mô hình dự đoán và
4.93
phân tích
4.12
Kết quả phản hồi từ Chatbot
Bảng 17: Đánh giá hiệu suất
Tổng quan: Về hiệu suất, thời gian phản hồi của hệ thống như trên tương đối đảm bảo nhu
cầu sử dụng của người dùng và đáp ứng các yêu cầu đặt ra tại bước phân tích và thiết kế hệ thống.
Tuy nhiên, thời gian phản hồi của chức năng ”Tải dữ liệu lên” và ”Xử lý mô hình dự đoán và
phân tích” vẫn còn khá cao. Điều này là do các phần xử lý này khá phức tạp và phụ thuộc vào
nhiều yếu tố, bao gồm kích thước và độ phức tạp của dữ liệu. Để có thể đưa ứng dụng vào thực
tế, hệ thống cần có những cải tiến về sau để giảm thiểu thời gian phản hồi cho các chức năng
này.
93
VII. Tổng kết
1. Kết quả đạt được
Hệ thống phân tích dữ liệu và BI cho thương mại điện tử đã được phát triển tương đối tinh
gọn và độc đáo với các chức năng chính sau đây:
− Thu thập và lưu trữ dữ liệu hiệu quả thông qua việc sử dụng Minio.
− Xử lý dữ liệu hiệu quả trên hệ thống phân tán với Minio, Spark và kiến trúc Data Lakehouse
giúp tối ưu chi phí dễ dàng mở rộng, đáp ứng tính ACID và tốc độ truy vấn cao từ data
warehouse.
− Phân tích dữ liệu với khả năng tạo bảng điều khiển (Dashboard) trực quan và dễ sử dụng.
− Dự đoán xu hướng bán hàng với độ chính xác cao dựa trên mô hình LSTM.
− Giải quyết được một số bài toán kinh doanh trong thương mại điện tử như phân tích giỏ
hàng và phân khúc khách hàng.
− Hỗ trợ truy vấn thông minh và nhanh chóng thông qua Chatbot tích hợp OpenAI API.
2. Những đóng góp của hệ thống
Hệ thống mang lại những lợi ích sau cho người dùng, đặc biệt là những người kinh doanh nhỏ
lẻ trên các sàn thương mại điện tử, ít kiến thức về xử lý và phân tích dữ liệu:
− Hỗ trợ người dùng trong việc tự động thu thập, lưu trữ và xử lý dữ liệu hiệu quả.
− Cung cấp giao diện trực quan, dễ sử dụng, phù hợp với người dùng không chuyên về kĩ
thuật và dữ liệu.
− Giúp nhà bán lẻ dễ dàng nắm bắt được tình hình kinh doanh một cách chính xác và kịp thời
hơn dựa trên dữ liệu và các biểu đồ được phân tích.
− Hỗ trợ người dùng không chuyên kĩ thuật và dữ liệu sử dụng hệ thống hiệu quả hơn thông
qua chatbot tích hợp từ ChatGPT.
− Góp phần nâng cao sự hiệu biết về dữ liệu kinh doanh trên các sàn thương mại điện tử của
các nhà bán lẻ và doanh nghiệp nhỏ thông qua các mô hình dự đoán và phân tích các bài
toán kinh doanh. Từ đó góp phần nâng cao cơ hội cạnh tranh của doanh nghiệp trong lĩnh
vực thương mại điện tử.
3. Hạn chế của hệ thống
Bên cạnh những mặt đã đạt được, do giới hạn về thời gian thực hiện đề tài và kỹ năng của
nhóm, hệ thống vẫn còn một số vấn đề cần nhận định công tâm và khách quan bao gồm:
94
− Hệ thống hiện tại chỉ hỗ trợ xử lý dữ liệu từ các file CSV và Excel, chưa hỗ trợ các nguồn
dữ liệu khác.
− Thời gian phản hồi của chức năng tải dữ liệu và xử lý mô hình dự đoán vẫn còn cao, cần
được tối ưu hóa.
− Giao diện hệ thống vẫn còn thiếu linh động, chưa đáp ứng đủ yêu cầu về giao diện của công
cụ BI.
− Quá trình lưu các báo cáo để xem lại vẫn chưa được hoàn thiện để thuận tiện cho người
dùng.
− Mô hình dự đoán xu hướng bán hàng vẫn còn đơn giản chưa đủ chuyên sâu, chủ yếu sử
dụng các API có sẵn.
− Phạm vi áp dụng của hệ thống còn hạn chế, chưa áp dụng được nhiều bài toán phân tích
khác ngoài bài toán doanh thu và sản phẩm.
− Hạn chế về kinh phí nên hệ thống chưa được triển khai trên cloud, do đó vẫn chưa đáp ứng
được nhiều lượt truy cập và sử dụng hệ thống cùng với đó là hạn chế về tốc độ xử lý dữ liệu
của hệ thống vẫn còn chậm.
4. Hướng phát triển
Sau giai đoạn thử nghiệm và nhận định những thiếu sót mà hệ thống hiện tại còn đang mắc
phải, để có thể đưa hệ thống vào ứng dụng thực tế, nhóm đặt ra các vấn đề cần cải thiện như sau:
− Phát triển khả năng kết nối với các nguồn dữ liệu khác như cơ sở dữ liệu, API, các định
dạng file khác...
− Tối ưu hóa hiệu suất hệ thống, triển khai hệ thống trên cloud để dễ dàng mở rộng hơn nhằm
mục đích đáp ứng nhiều lượt truy cập, dung lượng lưu trữ và đặc biệt là về thời gian xử lý
dữ liệu.
− Phát triển thêm nhiều tùy chọn trong phần Dashboard để phù hợp nhiều nhu cầu khác nhau
của người dùng.
− Phát triển thêm tính năng tạo báo cáo để người dùng lưu lại kết quả phân tích.
− Nâng cấp Chatbot với khả năng xử lý các yêu cầu phức tạp hơn, tích hợp thêm nhiều chức
năng khác như vẽ biểu đồ, xuất dữ liệu...
− Nghiên cứu thêm các cách cải tiến mới cho mô hình học máy hiện tại, sử dụng tập dữ liệu
lớn hơn để huấn luyện, ngoài ra còn có thể kết hợp với nhiều dạng mô hình học máy khác
nhau để cho ra kết quả tốt nhất.
− Thực hiện các biện pháp bảo mật dữ liệu mạnh mẽ hơn, tuân thủ các quy định về bảo mật
thông tin.
95
− Sử dụng các phương pháp như reverse proxy hay load balancer để tăng thêm tính bảo mật
cũng như đảm bảo tính available của hệ thống khi phải chịu lượng tải quá lớn.
96
Tài liệu tham khảo
[1] Vipin Jain, Bindoo Malviya, Satyendra Arya. (2021). An Overview of Electronic Commerce
(e-Commerce). Journal of Contemporary Issues in Business and Government Vol. 27, No. 3.
[2] Bộ công thương, Cục thương mại điện tử và kinh tế số. (2023). Báo cáo Thương mại điện tử
Việt Nam 2023.
[3] Aulkemeier, F., Paramartha, M. A., Iacob, M.-E., & van Hillegersberg, J. (2015). A pluggable service platform architecture for e-commerce. Information Systems and e-Business Management, 14(3), 469-489.
[4] Ferreira, T., Pedrosa, I., & Bernardino, J. (2019). Integration of Business Intelligence with ecommerce. 2019 14th Iberian Conference on Information Systems and Technologies (CISTI).
[4] Jiawei Han, Jian Pei, and Yiwen Yin (2019). Integration of Business Intelligence with ecommerce. 2019 14th Iberian Conference on Information Systems and Technologies (CISTI).
[5] ReactJS
-
Overview.
[https://www.tutorialspoint.com/reactjs/reactjs_
overview.html]. Truy cập lần cuối ngày 03/11/2023.
[6] Getting started with Django. [https://www.djangoproject.com/start/]. Truy cập lần
cuối ngày 26/10/2023.
[7] What
Is
PostgreSQL?.
[https://www.postgresql.org/docs/current/
intro-whatis.html]. Truy cập lần cuối ngày 03/11/2023.
[8] Grey. (2023). Docker Compose và những kiến thức cơ bản. [https://viblo.asia/p/
docker-compose-va-nhung-kien-thuc-co-ban]. Truy cập lần cuối ngày 26/10/2023.
[9] Welcome to the OpenAI developer platform. [https://platform.openai.com/docs/
overview]. Truy cập lần cuối ngày 16/04/2024.
[10] Safa S. Abdul-Jabbar & Alaa K. Farhan. (2022). Data Analytics and Techniques: A Review.
ARO-The Scientific Journal of Koya University.
[11] March, S. T., & Hevner, A. R. (2007). Integrated decision support systems: A data warehousing perspective. Decision Support Systems, 43(3), 1031–1043.
[12] Multivariate
and
Time
Modeling.
Series
Analysis
With
Python
for
Forecasting
[https://www.analyticsvidhya.com/blog/2018/09/
multivariate-time-series-guide-forecasting-modeling-python-codes/].
Truy cập lần cuối ngày 16/12/2023.
[13] Random Forest for Time Series Forecasting. [https://www.analyticsvidhya.com/
blog/2021/06/random-forest-for-time-series-forecasting/]. Truy cập lần cuối
ngày 12/12/2023.
97
[14] Time
series
prediction
using
LSTM.
[https://www.educative.io/answers/
time-series-prediction-using-lstm]. Truy cập lần cuối ngày 08/12/2023.
[15] Jonghyeon Min (2020). Financial Market Trend Forecasting and Performance Analysis
Using LSTM, 3 - 9.
[16] What
is
LSTM?
Introduction
ory.
to
Long
Short-Term
Mem-
[https://www.analyticsvidhya.com/blog/2021/03/
introduction-to-long-short-term-memory-lstm/].
Truy
cập
lần
cuối
ngày
01/12/2023.
[17] Samawel Jaballi, Manar Joundy Hazar, Salah Zrigui, Henri Nicolas, Mounir Zrigui (2023).
Deep Bidirectional LSTM Network Learning-Based Sentiment Analysis for Tunisian Dialectical Facebook Content During the Spread of the Coronavirus Pandemic, Fig 3, 104 - 105.
[18] Frequent
Pattern
Growth
Algorithm.
[https://www.geeksforgeeks.org/
frequent-pattern-growth-algorithm/]. Truy cập lần cuối ngày 12/03/2024.
[19] Sarah F. Chen, et al. (2020). ”RFM model applied to customer segmentation in the ecommerce sector.” Journal of Business Analytics.
[20] MinIO
for
Modern
Datalakes.
[https://min.io/solutions/
modern-data-lakes-lakehouses]. Truy cập lần cuối ngày 05/03/2024.
[21] Building a Data Lakehouse using Apache Iceberg and MinIO. [https://blog.min.
io/building-a-data-lakehouse-using-apache-iceberg-and-minio/]. Truy cập lần
cuối ngày 20/03/2024.
[22] Delta Lake. [https://www.starburst.io/data-glossary/delta-lake/]. Truy cập
lần cuối ngày 14/04/2024.
[23] What is Apache Spark?. [https://aws.amazon.com/what-is/apache-spark/]. Truy
cập lần cuối ngày 20/04/2024.
[24] An
Lake
ETL
Study
and
with
MinIO.
Apache
Spark,
Apache
Airflow,
Delta
[https://medium.com/@elifsinem.aktas/
an-etl-study-with-apache-spark-apache-airflow-delta-lake-and-minio-e1271ba0e933].
Truy cập lần cuối ngày 12/04/2024.
[25] What is Apache Hive?. [https://aws.amazon.com/what-is/apache-hive/]. Truy cập
lần cuối ngày 16/04/2024.
[26] Hive Metastore Server (HMS). [https://cwiki.apache.org/confluence/display/
hive/design]. Truy cập lần cuối ngày 08/04/2024.
[27] Trino, a query engine that runs at ludicrous speed. [https://trino.io/]. Truy cập lần
cuối ngày 08/05/2024.
98
[28] Schema Automation on Hive Using Delta Files and Trino. [https://medium.com/
@fizzabid96/schema-automation-on-hive-using-delta-files-and-trino-ec758f26f918].
Truy cập lần cuối ngày 22/04/2024.
[29] What Is a Data Lakehouse?. [https://www.dremio.com/resources/guides/
what-is-a-data-lakehouse/]. Truy cập lần cuối ngày 10/05/2024.
[30] Identity
and
Access
Management.
[https://min.io/docs/minio/linux/
administration/identity-access-management.html]. Truy cập lần cuối ngày
05/03/2024.
[31] Spark 3.4.2 documentation. [https://spark.apache.org/docs/3.4.2/]. Truy cập lần
cuối ngày 05/03/2024.
[32] Implementation and comparison of Apriori and FP-Growth algorithms. [https://
psubnwell.github.io/2018/01/18/apriori-and-fp-growth/]. Truy cập lần cuối ngày
20/03/2024.
99
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )