Posted on Leave a comment

Hướng dẫn xây dựng Cohort Analysis trên Power BI

Cohort Analysis

Cohort Analysis là gì

Cohort Analysis (Phân tích tổ hợp) là một kỹ thuật phân tích tập trung vào việc phân tích hành vi của một nhóm người dùng / khách hàng có chung một đặc điểm trong một khoảng thời gian nhất định.

Trong phân tích kinh doanh, New Customer được xem là một tiêu chí quan trọng để đánh giá tình hình kinh doanh của doanh nghiệp. Ở một góc nhìn khác, New Customer thể hiện hiệu quả của đội ngũ bán hàng và phần nào đó là hiệu quả trong Marketing. Một chỉ số không kém phần quan trọng là Retention Customer – chỉ số cho thấy khả năng giữ chân khách hàng của một dịch vụ. Retention Rate càng cao càng cho thấy mức độ trung thành của khách hàng đối với dịch vụ của doanh nghiệp. Một chỉ số ở chiều ý nghĩa ngược lại với retention là Churn Rate. Đây là 2 trong số những key metrics rất được quan tâm trong business. Định nghĩa về Retention hay Churn phụ thuộc vào cách mà mỗi business định nghĩa.  

Thông thường, người ta sử dụng Cohort Analysis để thể hiện chỉ số Retention Rate/Churn Rate.  

Trong bài này, Datapot giới thiệu đến người đọc cách xây dựng Cohort Analysis trên Power BI.  

Download file Power BI tại Tại đây

(Tham khảo Các thao tác đơn giản để tạo báo cáo trên Power BI cho người mới bắt đầu tại Các thao tác đơn giản để tạo báo cáo trên Power BI cho người mới bắt đầu – Datapot.vn )

Xây dựng Cohort Analysis trên Power BI

Giả sử chúng ta có một bảng dữ liệu có tên là “SalesTable” bao gồm 3 cột:  

  • Customerkey: Cột chứa key định danh cho mỗi khách hàng mua dịch vụ.  
  • OrderDate: Ngày ngày hàng có đặt hàng dịch vụ  
  • OrderMonth: Tháng mà khách hàng có đặt hàng dịch vụ  

Ngoài ra ta cũng có 1 bảng “Date”, có relationship với bảng “SalesTable”  thông qua cột Date và OrderDate 

Power BI
Bảng SalesTable
Relationship trong Power BI
Mối quan hệ giữa Bảng Date và Bảng SalesTable
  • Tính số lượng khách hàng có order hằng tháng 

No.Customer = DISTINCTCOUNT(‘SalesTable'[Customerkey]) 

Cohort Analysis
Số lượng khách hàng có order hằng tháng
  • Tính số lượng khách hàng mới có order hằng tháng  

Ở trên, chúng ta đang tính toán số lượng khách hàng có phát sinh giao dịch trong tháng. Vậy trong số những khách hàng có phát sinh giao dịch đó, có bao nhiêu là khách hàng mới hoàn toàn, chưa từng mua hàng trước đó.  

Logic tính toán sẽ là, nếu một khách hàng là khách hàng mới trong tháng xem xét thì ngày đầu tiên có giao dịch của khách hàng đó sẽ là ngày thuộc tháng đang xem xét. 

  • Trong bảng SalesTable, tạo ra 1 calculated column có tên là “FirstOrderMonth” là tháng đầu tiên mà 1 khách hàng có order:  

FirstOrderMonth =  

    CALCULATE( 

       MIN(SalesTable[OrderMonth]),  

       FILTER(SalesTable, SalesTable[Customerkey] = EARLIER(SalesTable[Customerkey]))) 

  • Tạo measure “No.NewCustomer” tính số lượng khách hàng mới  

No.NewCustomer =  

    CALCULATE( 

     DISTINCTCOUNT(SalesTable[Customerkey]),  

     FILTER(SalesTable, SalesTable[FirstOrderMonth] = SalesTable[OrderMonth])) 

Power BI
Số lượng khách hàng và Số lượng khách hàng mới
  • Cohort Analysis thể hiện retention rate  

Với ví dụ của chúng ta, nếu định nghĩa đơn giản, retention rate là tỉ lệ khách hàng cũ có mua hàng trong tháng mới trên tổng số khách hàng cũ.  

Mục tiêu là chúng ta muốn tạo 1 matrix như bên dưới, đây được gọi là 1 cohort. Cohort cho biết số lượng khách hàng mới và số lượng khách hàng có tiếp tục order ở các tháng tiếp theo.  

Trong cohort bên dưới, dòng là tháng bắt đầu có order, cột là các tháng sau đó. Để hiểu cách đọc cohort, ta hiểu ý nghĩa của các con số bên trong. Ví dụ 498 là số lượng khách hàng mới trong tháng 6/2018, sau đó, trong tháng 7/2019, chỉ có 3 khách hàng trong tổng số 498 khách hàng mới của tháng 6 là có order. Trong tháng 7/2019, chúng ta có 1506 khách hàng mới,  xem xét tại tháng 12/2019, chỉ có 89 trên 1506 khách hàng mới là có order.  

Cohort Analysis thể hiện retention rate
Cohort Analysis thể hiện retention rate

Sau khi hình dung được ý nghĩa của cohort, chúng ta tiếp tục phân tích xem để tạo được cohort như trên sẽ cần phải chuẩn bị những gì.  

Thứ nhất, chúng ta cần 1 trường thông tin thể hiện được tháng khách hàng bắt đầu có giao dịch. Đây chính là cột “FirstOrderMonth” mà chúng ta đã tạo ra ở phần trên.  

Thứ hai, chúng ta cần có 1 trường để kéo vào làm column cho cohort. Chúng ta tận dùng cột “Month”  trong bảng “Date”.  

Thứ ba, chúng ta cần viết 1 measure để kéo vào phần value trong cohort.  

Dựa trên dữ liệu đang sử dụng, để tạo được cohort như trên, ta làm theo các bước sau: 

  • Bước 1 : Tạo thêm 1 cột là “FirstOrderMonth” bằng cách format lại cột “FirstOrderMonth” trong bảng “SalesTable” 

FirstOrderMonth_1 = FORMAT(SalesTable[FirstOrderMonth], “yyyy mmm”) 

  • Bước 2: Viết measure để tính toán  

No.NewCustomer by Cohort =  

    CALCULATE( 

     DISTINCTCOUNT(SalesTable[Customerkey]),  

       filter(SalesTable, SalesTable[OrderDate] >= MIN(‘Date'[Date]) && SalesTable[OrderDate] <= MAX(‘Date'[Date]))) 

MIN(‘Date'[Date]) và MAX(‘Date'[Date]) tại mỗi cột sẽ trả về giá trị là ngày đầu tiên và ngày cuối cùng của tháng. Tức là nếu trong cột của matrix là tháng tháng 6 thì hàm min và max sẽ trả về ngày 1/6/2019 và ngày 30/6/2019. Tức là với đoạn code này filter(SalesTable, SalesTable[OrderDate] >= MIN(‘Date'[Date]) && SalesTable[OrderDate] <= MAX(‘Date'[Date])), tại mỗi cột trong matrix, chúng ta chỉ filter dữ liệu của bảng “SalesTable” trong tháng đang xem xét.  

  • Bước 3: Tạo matrix 

Tạo matrix và kéo cột “FirstOrderMonth_1” trong bảng “SalesTable” vào Rows option. Cột “month” trong bảng “Date” vào Columns option. Measure No.NewCustomer by Cohort vào trong phần Values options. Ngoài ra có thể đổi lại tên “FirstOrderMonth_1” thành “First Order Month” để khi hiển thị trong matrix nó rõ ràng hơn. 

Matrix trong Cohort Analysis
Tạo Matrix
  • Bước 4: Conditonal Formating cho matrix 

Format Cohort Analysis
Conditonal Formating cho matrix
  • Bước 5: Sort lại cột “FirstOrderMonth_1” theo cột “FirstOrderMonth” – Hoàn thành Cohort Analysis

Có thể thấy trong matrix kết quả, các dòng đang không theo thứ tự đúng do “FirstOrderMonth_1” là dạng text nên bị sort theo thứ tự a-z.  Trong bảng “SalesTable”, ta sort cột “FirstOrderMonth_1” theo cột “FirstOrderMonth”. Click vào cột cần sort, sau đó chọn tùy chọn Sort by column, click tiếp vào cột mà muốn “FirstOrderMonth_1” sort theo nó.  

Cohort Analysis trong Power BI
Sort lại cột “FirstOrderMonth_1” theo cột “FirstOrderMonth” 

Kết quả, ta được một cohort như ý muốn:  

Kết quả Cohort Analysis
Kết quả Cohort

Lưu ý: chúng ta sẽ cần một slicer Date để giới hạn số lượng cột xuất hiện trong Cohort.  

Trên đây là hướng dẫn làm 1 cohort dựa trên dữ liệu mẫu. Người đọc tham khảo để hiểu cách làm, từ đó có thể phát triển các cohort theo mong muốn.  

Ví dụ Cohort Analysis
Ví dụ Cohort
Phân tích Cohort
Ví dụ Cohort

Tham gia group ôn thi DA-100 tại: https://www.facebook.com/groups/da100vn
Chuỗi Video Hướng dẫn thực hành Lab và sử dụng các tài nguyên của Microsoft: https://www.youtube.com/c/Datapotvn/videos
Update tài nguyên từ Microsoft, DA-100 exam questions và exam topics tại Fanpage của Datapot: https://www.facebook.com/DatapotAnalytics/

Khóa học Ôn thi DA-100
Combo khóa học dành cho các bạn Fresher
Leave a Reply

Your email address will not be published. Required fields are marked *