Cách phân tích giỏ hàng (Market Basket Analysis) bằng DAX trong Power BI: tìm kiếm quy tắc kết hợp sản phẩm mua kèm, tính độ tin cậy để tối ưu chiến lược bán chéo (Cross-selling).
1. Phân tích giỏ hàng (Market Basket Analysis) là gì?
Trong ngành bán lẻ (Retail) và thương mại điện tử, Market Basket Analysis (Phân tích giỏ hàng) là kỹ thuật phân tích khai phá dữ liệu (Data Mining) nhằm phát hiện mối liên hệ giữa các sản phẩm mà khách hàng thường mua cùng nhau trong một giao dịch.
Ví dụ kinh điển: Khách hàng mua Bỉm thường có xu hướng mua kèm Bia, hoặc khách mua Điện thoại thường sẽ chọn thêm Ốp lưng và Kính cường lực.
Việc xác định đúng các cặp sản phẩm này giúp doanh nghiệp:
-
Tối ưu hóa chiến lược Bán chéo (Cross-selling): Gợi ý sản phẩm kèm theo trên website hoặc tạo gói Combo kích cầu.
-
Sắp xếp kệ hàng: Đặt các mặt hàng mua kèm gần nhau trong siêu thị/cửa hàng.
-
Tối ưu chiến dịch Marketing: Xây dựng khuyến mãi ghép đôi hiệu quả hơn.
2. Thách thức khi triển khai trên Power BI
Mô hình dữ liệu chuẩn (Star Schema) thường kết nối bảng giao dịch (Sales) với bảng sản phẩm (DimProduct). Tuy nhiên, để so sánh Sản phẩm A và Sản phẩm B trên cùng một hóa đơn, bạn không thể chỉ dùng một bảng sản phẩm duy nhất.
Để giải quyết bài toán này trong Power BI, chúng ta cần:
-
Tạo bảng sản phẩm phụ (Disconnected Table): Dùng làm danh mục sản phẩm so sánh (Sản phẩm B).
-
Viết công thức DAX nâng cao: Tính toán số lượng hóa đơn chứa đồng thời cả 2 sản phẩm.
3. Các bước thực hiện Phân tích giỏ hàng bằng DAX
Bước 1: Tạo bảng sản phẩm phụ (Product B)
Trong Power BI, bạn tạo một bảng mới hoàn toàn độc lập với bảng sản phẩm chính (DimProduct) bằng DAX:
Đoạn mã
DimProduct_B = ALL(DimProduct[ProductID], DimProduct[ProductName])
Lưu ý: Không tạo Relationship (mối quan hệ) giữa bảng DimProduct_B này với bảng Sales.
Bước 2: Viết Measure tính số đơn hàng mua cùng nhau
Viết công thức DAX để đếm số lượng đơn hàng chứa cả Sản phẩm A (chọn từ slicer/bảng chính) và Sản phẩm B (từ bảng phụ):
Đoạn mã
Orders Bought Together =
VAR CurrentProductA = SELECTEDVALUE(DimProduct[ProductID])
VAR SelectedProductB = SELECTEDVALUE(DimProduct_B[ProductID])
RETURN
IF(
CurrentProductA <> SelectedProductB,
CALCULATE(
DISTINCTCOUNT(Sales[OrderNumber]),
FILTER(
ALL(Sales),
Sales[ProductID] = SelectedProductB &&
Sales[OrderNumber] IN CALCULATETABLE(
VALUES(Sales[OrderNumber]),
Sales[ProductID] = CurrentProductA
)
)
),
BLANK()
)
Bước 3: Tính tỷ lệ kết hợp (Support & Confidence)
Để đánh giá độ tin cậy của quy tắc bán kèm, bạn tính thêm tỷ lệ % khách hàng mua sản phẩm A cũng mua sản phẩm B:
Đoạn mã
% Cross-sell Confidence =
VAR OrdersA = [Total Orders Product A]
VAR OrdersTogether = [Orders Bought Together]
RETURN
DIVIDE(OrdersTogether, OrdersA, 0)
4. Ứng dụng thực tế trên báo cáo Power BI
Sau khi hoàn tất các công thức DAX, bạn có thể trực quan hóa lên báo cáo:
-
Slicer 1 (Sản phẩm gốc): Chọn sản phẩm chính cần phân tích (ví dụ: Laptop).
-
Bảng/Ma trận (Visual Matrix): Hiển thị danh sách các sản phẩm phụ kèm theo số đơn hàng mua chung (
Orders Bought Together) và tỷ lệ mua kèm (% Cross-sell Confidence). -
Biểu đồ bong bóng (Bubble Chart) hoặc Matrix Heatmap: Giúp Ban giám đốc dễ dàng phát hiện top 5 cặp sản phẩm có sức mua chéo cao nhất.
5. Lời kết
Ứng dụng DAX nâng cao để phân tích giỏ hàng trong Power BI giúp Data Analyst chuyển đổi dữ liệu thô thành những đề xuất kinh doanh có giá trị lớn cho chiến lược bán chéo (Cross-selling).
Tác giả: Phan Thị Như Phước – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: mcna.vn
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

