數據可視化之分析篇(六)使用Power BI進行流失客戶分析


https://zhuanlan.zhihu.com/p/73358029

為了提升銷量,在不斷吸引新客戶的同時,還要防止老客戶離你而去,但每一個顧客不可能永遠是你的客戶,不可避免的都會經歷新客戶、活躍客戶、流失客戶的過程,這個過程也稱為客戶生命周期。

對客戶生命周期管理至關重要,之前曾介紹過如何使用PowerBI分析新客戶(如何使用Power BI計算新客戶數量?),但一直沒有寫過流失客戶的分析,正好最近有幾個星友都提出了這個問題,所以專門寫篇文章簡要介紹一下思路。

 


 

每個公司由於業務特征、客戶類型的區別、對流失客戶的定義很可能不同。本文為了分析的方便,假設流失客戶的定義是,最近6個月曾經下過單,但是最近三個月沒有再次下單的客戶。

 

舉例來說,現在是2019年5月,如果某個客戶在2018年12到2019年2月曾經下過單,但是從2019年3月到2019年5月都沒有再購買過,那么該客戶在5月就應標記為流失客戶。

模擬數據為一張訂單表和一個日期表,通過日期建立關系,這里是按照月份進行分析的,所以日期表中增加了一個跨年連續月份編號。

 

流失客戶數量

 

我直接寫一個度量值,

流失客戶數量 = 
VAR customer_last3m=  
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=SELECTEDVALUE('日期表'[月份編號])-3
        &&'日期表'[月份編號]>SELECTEDVALUE('日期表'[月份編號])-6))
VAR customer_cus3m=
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=SELECTEDVALUE('日期表'[月份編號])
        &&'日期表'[月份編號]>SELECTEDVALUE('日期表'[月份編號])-3))
VAR customer_lost=EXCEPT(customer_last3m,customer_cus3m)
RETURN 
IF([訂單最新日期]>=FIRSTDATE('日期表'[日期]),COUNTROWS(customer_lost))

 

VAR定義第一個變量customer_last3m,是返回前3個月下單的客戶列表;

VAR定義第二個變量customer_cur3m,是返回最近3個月下單的客戶列表;

VAR定義第三個變量customer_lost,利用EXCEPT函數,從customer_last3m的客戶中中剔除customer_cur3m的客戶,剩下的就是流失客戶。

 

最后返回結果時,加了判斷當前最新的訂單日期的條件,是為了防止計算未來期間的流失客戶。

結果如下,

 

 

度量值顯示流失客戶列表

 

由於度量值只能返回一個值,而流失客戶是一個列表,有很多客戶名稱,上面的度量值通過計數進行聚合,返回了一個值。那么如何通過度量值來顯示一個表呢?

可以通過CONCATENATEX函數,把列表的數據連接起來,變成一個字符串,這樣就可以利用度量值來返回了,

 

流失客戶 = 
VAR customer_last3m=  
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=SELECTEDVALUE('日期表'[月份編號])-3
        &&'日期表'[月份編號]>SELECTEDVALUE('日期表'[月份編號])-6))
VAR customer_cus3m=
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=SELECTEDVALUE('日期表'[月份編號])
        &&'日期表'[月份編號]>SELECTEDVALUE('日期表'[月份編號])-3))
VAR customer_lost=EXCEPT(customer_last3m,customer_cus3m)
RETURN 
IF([訂單最新日期]>=FIRSTDATE('日期表'[日期]),CONCATENATEX(customer_lost,[客戶姓名],"、"))

 

原理和第一個度量值一樣,只是最后RETURN的結果不一樣。

使用卡片圖來顯示這個度量值,

 

這樣就變通的實現了用度量值來顯示一個列表。

不過如果列表數據較少,用這種方式還可以,如果數據很多,比如上面的數據,一個卡片圖顯示不全,那就盡量不要用這種方式來展示流失客戶了,直接通過新建表的方式,把流失客戶單獨生成一個表。

新建流失客戶列表

 

通過新建表的方式來返回流失客戶列表,比較直觀,但是新表的方式就沒有了外部上下文,不能通過點擊切片器的形式來靈活的顯示某個時間段的流失客戶。

這里的表顯示當前月的流失客戶,新建表,輸入:

流失客戶表 = 
VAR cur_month=CALCULATE(MAX('日期表'[月份編號]),'日期表'[日期]=TODAY())
VAR customer_last3m=  
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=cur_month-3
        &&'日期表'[月份編號]>cur_month-6))
VAR customer_cus3m=
CALCULATETABLE(
    VALUES('訂單'[客戶姓名]),
    FILTER(
        ALL('日期表'),
        '日期表'[月份編號]<=cur_month
        &&'日期表'[月份編號]>cur_month-3))
VAR customer_lost=EXCEPT(customer_last3m,customer_cus3m)
RETURN customer_lost

 

首先把當月的月份編號找出來,然后依然是前面度量值的思路,返回一個表就可以了。

並且這個表也會隨着日期動態更新的。

通過這個簡單的例子,應該能滿足你利用DAX分析流失客戶的問題,其中主要是通過日期粒度和時間段的選擇,來定義流失客戶的特征,相應修改DAX代碼中關於粒度和時間段的條件就行了。

這里對流失客戶的定義並不很嚴謹,可能會存在某客戶重復標記為流失客戶的問題,所以在具體分析時,首先應給流失客戶下個明確的定義。定義清楚以后,利用本文的DAX思路來設計流失客戶的條件就可以了。

如果你剛開始接觸Power BI,可在微信公眾號后台回復"PowerBI",獲取《七天入門PowerBI》電子書,幫你快速提升工作效率。

如果文章對你有幫助,別忘了點贊哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM