銷售需求丨購物籃分析
2022-09-03由 PowerBI白茶 發表于 林業
關聯度怎麼分析
BOSS:那個誰,對,就是你,你給我研究研究咱商場物品擺放是否合理?!
白茶:(Excuse me?)...BOSS,那個我就是個碼字的!
BOSS:加錢!給我做個高大上的購物籃分析!
白茶:(支付寶到賬####元!)好嘞!
在實際業務中,商場物品的擺放是否對營銷有所影響?所策劃的營銷活動是否真正的起到了促銷價值?活動贈品的使用效果如何?購物籃分析是啥?
這些問題,其核心點都是一個問題——
關聯度問題
。
說的通俗易懂點,就是數學概念中我們學過的
交集概念
的實際用法。
模擬資料:
這是基本的案例資料,匯入到PowerBI中,並且新增一個日期表,其模型關係圖如下:
但是問題也來了,我們想要做關聯度分析,那麼就需要有一個可以切換的維度,白茶在上面就已經提過,核心概念是交集。
編寫如下程式碼:
關聯度產品表 =VALUES ( ‘產品表’ )
複製一份產品表作為可以切換的維度,並且模型關係如下:
注意紅框的位置,要做到有關係,但是關係並未啟用的狀態。
解釋一下:
有關係是為了後面的DAX做準備,方便函式生效;
未啟用是因為啟用狀態下,和原有的產品表效果是一樣的,無法達到篩選對比的效果。
新增切片器、表格,搭建最基本的顯示環境:
這是基本的篩選環境和上下文環境,DAX的編寫都要在這兩個環境中進行。
先對客戶購買人次進行統計:
購買人次 =COUNTROWS ( VALUES ( ‘銷售明細’[客戶流水號] ) )
結果如下:
但是資料好像不對勁。
原始資料中[腰帶]的行數是1746行,但是我們寫的DAX出來的結果是1613行,很明顯這個資料對不上啊!咋辦?最佳化程式碼如下:
A類購買人次 =SUMX ( ‘銷售明細’, CALCULATE ( COUNTROWS ( VALUES ( ‘銷售明細’[客戶流水號] ) ) ) )
放在表中進行對比:
很明顯這次程式碼是沒問題的。
因為當前上下文環境與行上下文環境不同,造成了COUNTROWS函式上下文轉換的問題,因此結果是不準確的;可以透過SUMX函式迭代整個表搭配CALCULATE函式進行上下文轉換進行解決。
那麼當我們篩選產品B的時候,同時購買AB的客戶數量有多少呢?
編寫如下程式碼:
同時購買A和B的客戶數 =VAR BC = CALCULATETABLE ( VALUES ( ‘銷售明細’[客戶流水號] ), USERELATIONSHIP ( ‘關聯度產品表’[商品名稱], ‘銷售明細’[商品名稱] ), ALL ( ‘產品表’ ) )RETURN SUMX ( ‘產品表’, IF ( CALCULATE ( [A類購買人次], Bc ) = [A類購買人次], BLANK (), CALCULATE ( [A類購買人次], Bc ) ) )
結果如下:
這段程式碼的核心點在於USERELATIONSHIP函式。
此函式激活了未生效的產品關聯表B的關係,利用CALCULATETABLE函式計算求得在產品表上下文情況下,有多少[客戶訂單號]同時符合產品表A與產品表B。
再利用CALCULATE函式進行求值,計算出AB類同時購買人次。
至於SUMX函式和IF函式是為了解決總計問題,以及無效的AB購買人次顯示問題。
注:後續函數週期表會詳解USERELATIONSHIP函式,這裡就不贅述了。
同時購買AB客戶數計算出來了,那麼關聯度就好解決了,佔比即可。
程式碼:
關聯度佔比 =IF ( HASONEVALUE ( ‘產品表’[商品名稱] ), [同時購買A和B的客戶數] / [A類購買人次], BLANK () )
結果如下:
新增條件格式,並且降序排列:
實際上到這裡,關聯度分析就已經結束了,但是想想咱中國式BOSS的習慣,肯定是想知道金額的,所以我們仍需處理一下:
A類銷售額:
A類銷售額 =SUMX ( ‘銷售明細’, ‘銷售明細’[銷售數量] * RELATED ( ‘產品表’[銷售價] ) )
B類銷售額:
關聯產品B的銷售額 =CALCULATE ( [A類銷售額], USERELATIONSHIP ( ‘關聯度產品表’[商品名稱], ‘銷售明細’[商品名稱] ), ALL ( ‘產品表’ ))
AB類銷售額:
A客戶購買B的金額 =VAR Ac = CALCULATETABLE ( VALUES ( ‘銷售明細’[客戶流水號] ) )VAR Bc = CALCULATETABLE ( VALUES ( ‘銷售明細’[客戶流水號] ), USERELATIONSHIP ( ‘關聯度產品表’[商品名稱], ‘銷售明細’[商品名稱] ), ALL ( ‘產品表’ ) )RETURN SUMX ( ‘產品表’, IF ( CALCULATE ( [關聯產品B的銷售額], NATURALINNERJOIN ( Ac, Bc ) ) = [A類銷售額], BLANK (), CALCULATE ( [關聯產品B的銷售額], NATURALINNERJOIN ( Ac, Bc ) ) ) )
放在表格中新增條件格式,結果如下:
核心難點在於USERELATIONSHIP函式啟用未生效關係,以及利用NATURALINNERJOIN函式取交集進行計算。
初步效果已經達到,但是這樣顯得不高大上啊!
別急,新增四象限分析圖!
嘿嘿,其實就是一個散點圖,BOSS不會懂得。
新增一個散點圖,再分別新增兩條均值線:
說白了,就是在散點圖中新增兩條均值線來分類資料。
位於右上角的商品,關聯度佔比高,同時購買金額數高,相關係數遠遠高於其他三個區域。
這個時候說明我們的營銷活動(或者促銷活動、贈品、擺放)中處於右上角的商品是有價值的,也就是沒有白折騰。
再調整一下佈局,新增動態配色,新增時間切片器,其最終效果如下:
怎麼樣,是不是格調滿滿?用來升值加薪最好不過了。
樣例連結:http://t.cn/A6AsbE1v
(BOSS:厲害了,那個誰!)
散點圖配色技巧:
1、新增兩個均值程式碼。
程式碼1:
關聯度均值 =
AVERAGEX ( ALL ( ‘產品表’ ), [關聯度佔比] )
程式碼2:
A客戶購買B金額均值 =
AVERAGEX ( ALL ( ‘產品表’ ), [A客戶購買B的金額] )
2、選取喜歡的顏色,利用IF+AND進行判定。
動態顏色 =
IF (
AND ( [A客戶購買B的金額] <= [A客戶購買B金額均值], [關聯度佔比] <= [關聯度均值] ),
“#108DFE”,
IF (
AND ( [A客戶購買B的金額] <= [A客戶購買B金額均值], [關聯度佔比] > [關聯度均值] ),
“#e6b422”,
IF (
AND ( [A客戶購買B的金額] > [A客戶購買B金額均值], [關聯度佔比] <= [關聯度均值] ),
“#0F5C4A”,
IF ( AND ( [A客戶購買B的金額] > [A客戶購買B金額均值], [關聯度佔比] > [關聯度均值] ), “#a22041” )
)
)
)
當然,也可以使用SWITCH函式,這裡就不贅述了。
3、散點圖顏色格式設定。
散點圖最終效果如下:
小夥伴們GET了麼?
白茶會不定期的分享一些函式卡片
(檔案在知識星球[PowerBI丨需求圈])
這裡是白茶,一個PowerBI的初學者。