BOSS:那個(gè)誰(shuí),對(duì)剿吻,就是你窍箍,你給我研究研究咱商場(chǎng)物品擺放是否合理?和橙!
白茶:(Excuse me仔燕?)...BOSS,那個(gè)我就是個(gè)碼字的魔招!
BOSS:加錢(qián)晰搀!給我做個(gè)高大上的購(gòu)物籃分析!
白茶:(支付寶到賬####元0彀摺)好嘞外恕!
在實(shí)際業(yè)務(wù)中,商場(chǎng)物品的擺放是否對(duì)營(yíng)銷(xiāo)有所影響乡翅?所策劃的營(yíng)銷(xiāo)活動(dòng)是否真正的起到了促銷(xiāo)價(jià)值鳞疲?活動(dòng)贈(zèng)品的使用效果如何?購(gòu)物籃分析是啥蠕蚜?
這些問(wèn)題尚洽,其核心點(diǎn)都是一個(gè)問(wèn)題——關(guān)聯(lián)度問(wèn)題。
說(shuō)的通俗易懂點(diǎn)靶累,就是數(shù)學(xué)概念中我們學(xué)過(guò)的交集概念的實(shí)際用法腺毫。
模擬數(shù)據(jù):
這是基本的案例數(shù)據(jù),導(dǎo)入到PowerBI中挣柬,并且添加一個(gè)日期表潮酒,其模型關(guān)系圖如下:
但是問(wèn)題也來(lái)了,我們想要做關(guān)聯(lián)度分析邪蛔,那么就需要有一個(gè)可以切換的維度急黎,白茶在上面就已經(jīng)提過(guò),核心概念是交集侧到。
編寫(xiě)如下代碼:
關(guān)聯(lián)度產(chǎn)品表 =
VALUES ( '產(chǎn)品表' )
復(fù)制一份產(chǎn)品表作為可以切換的維度勃教,并且模型關(guān)系如下:
注意紅框的位置,要做到有關(guān)系匠抗,但是關(guān)系并未激活的狀態(tài)荣回。
解釋一下:
有關(guān)系是為了后面的DAX做準(zhǔn)備,方便函數(shù)生效戈咳;
未激活是因?yàn)榧せ顮顟B(tài)下心软,和原有的產(chǎn)品表效果是一樣的壕吹,無(wú)法達(dá)到篩選對(duì)比的效果。
添加切片器删铃、表格耳贬,搭建最基本的顯示環(huán)境:
這是基本的篩選環(huán)境和上下文環(huán)境,DAX的編寫(xiě)都要在這兩個(gè)環(huán)境中進(jìn)行猎唁。
先對(duì)客戶(hù)購(gòu)買(mǎi)人次進(jìn)行統(tǒng)計(jì):
購(gòu)買(mǎi)人次 =
COUNTROWS ( VALUES ( '銷(xiāo)售明細(xì)'[客戶(hù)流水號(hào)] ) )
結(jié)果如下:
但是數(shù)據(jù)好像不對(duì)勁咒劲。
原始數(shù)據(jù)中[腰帶]的行數(shù)是1746行,但是我們寫(xiě)的DAX出來(lái)的結(jié)果是1613行诫隅,很明顯這個(gè)數(shù)據(jù)對(duì)不上案辍!咋辦逐纬??jī)?yōu)化代碼如下:
A類(lèi)購(gòu)買(mǎi)人次 =
SUMX ( '銷(xiāo)售明細(xì)', CALCULATE ( COUNTROWS ( VALUES ( '銷(xiāo)售明細(xì)'[客戶(hù)流水號(hào)] ) ) ) )
放在表中進(jìn)行對(duì)比:
很明顯這次代碼是沒(méi)問(wèn)題的蛔屹。
因?yàn)楫?dāng)前上下文環(huán)境與行上下文環(huán)境不同,造成了COUNTROWS函數(shù)上下文轉(zhuǎn)換的問(wèn)題豁生,因此結(jié)果是不準(zhǔn)確的兔毒;可以通過(guò)SUMX函數(shù)迭代整個(gè)表搭配CALCULATE函數(shù)進(jìn)行上下文轉(zhuǎn)換進(jìn)行解決。
那么當(dāng)我們篩選產(chǎn)品B的時(shí)候甸箱,同時(shí)購(gòu)買(mǎi)AB的客戶(hù)數(shù)量有多少呢育叁?
編寫(xiě)如下代碼:
同時(shí)購(gòu)買(mǎi)A和B的客戶(hù)數(shù) =
VAR BC =
CALCULATETABLE (
VALUES ( '銷(xiāo)售明細(xì)'[客戶(hù)流水號(hào)] ),
USERELATIONSHIP ( '關(guān)聯(lián)度產(chǎn)品表'[商品名稱(chēng)], '銷(xiāo)售明細(xì)'[商品名稱(chēng)] ),
ALL ( '產(chǎn)品表' )
)
RETURN
SUMX (
'產(chǎn)品表',
IF (
CALCULATE ( [A類(lèi)購(gòu)買(mǎi)人次], Bc ) = [A類(lèi)購(gòu)買(mǎi)人次],
BLANK (),
CALCULATE ( [A類(lèi)購(gòu)買(mǎi)人次], Bc )
)
)
結(jié)果如下:
這段代碼的核心點(diǎn)在于USERELATIONSHIP函數(shù)。
此函數(shù)激活了未生效的產(chǎn)品關(guān)聯(lián)表B的關(guān)系芍殖,利用CALCULATETABLE函數(shù)計(jì)算求得在產(chǎn)品表上下文情況下豪嗽,有多少[客戶(hù)訂單號(hào)]同時(shí)符合產(chǎn)品表A與產(chǎn)品表B。
再利用CALCULATE函數(shù)進(jìn)行求值豌骏,計(jì)算出AB類(lèi)同時(shí)購(gòu)買(mǎi)人次龟梦。
至于SUMX函數(shù)和IF函數(shù)是為了解決總計(jì)問(wèn)題,以及無(wú)效的AB購(gòu)買(mǎi)人次顯示問(wèn)題肯适。
注:后續(xù)函數(shù)周期表會(huì)詳解USERELATIONSHIP函數(shù),這里就不贅述了成榜。
同時(shí)購(gòu)買(mǎi)AB客戶(hù)數(shù)計(jì)算出來(lái)了框舔,那么關(guān)聯(lián)度就好解決了,占比即可赎婚。
代碼:
關(guān)聯(lián)度占比 =
IF ( HASONEVALUE ( '產(chǎn)品表'[商品名稱(chēng)] ), [同時(shí)購(gòu)買(mǎi)A和B的客戶(hù)數(shù)] / [A類(lèi)購(gòu)買(mǎi)人次], BLANK () )
結(jié)果如下:
添加條件格式刘绣,并且降序排列:
實(shí)際上到這里,關(guān)聯(lián)度分析就已經(jīng)結(jié)束了挣输,但是想想咱中國(guó)式BOSS的習(xí)慣纬凤,肯定是想知道金額的,所以我們?nèi)孕杼幚硪幌拢?/p>
A類(lèi)銷(xiāo)售額:
A類(lèi)銷(xiāo)售額 =
SUMX ( '銷(xiāo)售明細(xì)', '銷(xiāo)售明細(xì)'[銷(xiāo)售數(shù)量] * RELATED ( '產(chǎn)品表'[銷(xiāo)售價(jià)] ) )
B類(lèi)銷(xiāo)售額:
關(guān)聯(lián)產(chǎn)品B的銷(xiāo)售額 =
CALCULATE (
[A類(lèi)銷(xiāo)售額],
USERELATIONSHIP ( '關(guān)聯(lián)度產(chǎn)品表'[商品名稱(chēng)], '銷(xiāo)售明細(xì)'[商品名稱(chēng)] ),
ALL ( '產(chǎn)品表' )
)
AB類(lèi)銷(xiāo)售額:
A客戶(hù)購(gòu)買(mǎi)B的金額 =
VAR Ac =
CALCULATETABLE ( VALUES ( '銷(xiāo)售明細(xì)'[客戶(hù)流水號(hào)] ) )
VAR Bc =
CALCULATETABLE (
VALUES ( '銷(xiāo)售明細(xì)'[客戶(hù)流水號(hào)] ),
USERELATIONSHIP ( '關(guān)聯(lián)度產(chǎn)品表'[商品名稱(chēng)], '銷(xiāo)售明細(xì)'[商品名稱(chēng)] ),
ALL ( '產(chǎn)品表' )
)
RETURN
SUMX (
'產(chǎn)品表',
IF (
CALCULATE ( [關(guān)聯(lián)產(chǎn)品B的銷(xiāo)售額], NATURALINNERJOIN ( Ac, Bc ) ) = [A類(lèi)銷(xiāo)售額],
BLANK (),
CALCULATE ( [關(guān)聯(lián)產(chǎn)品B的銷(xiāo)售額], NATURALINNERJOIN ( Ac, Bc ) )
)
)
放在表格中添加條件格式撩嚼,結(jié)果如下:
核心難點(diǎn)在于USERELATIONSHIP函數(shù)激活未生效關(guān)系停士,以及利用NATURALINNERJOIN函數(shù)取交集進(jìn)行計(jì)算挖帘。
初步效果已經(jīng)達(dá)到,但是這樣顯得不高大上傲导肌拇舀!
別急,添加四象限分析圖蜻底!
嘿嘿骄崩,其實(shí)就是一個(gè)散點(diǎn)圖,BOSS不會(huì)懂得薄辅。
添加一個(gè)散點(diǎn)圖要拂,再分別添加兩條均值線:
說(shuō)白了,就是在散點(diǎn)圖中添加兩條均值線來(lái)分類(lèi)數(shù)據(jù)站楚。
位于右上角的商品脱惰,關(guān)聯(lián)度占比高,同時(shí)購(gòu)買(mǎi)金額數(shù)高源请,相關(guān)系數(shù)遠(yuǎn)遠(yuǎn)高于其他三個(gè)區(qū)域枪芒。
這個(gè)時(shí)候說(shuō)明我們的營(yíng)銷(xiāo)活動(dòng)(或者促銷(xiāo)活動(dòng)、贈(zèng)品谁尸、擺放)中處于右上角的商品是有價(jià)值的舅踪,也就是沒(méi)有白折騰。
再調(diào)整一下布局良蛮,添加動(dòng)態(tài)配色抽碌,添加時(shí)間切片器,其最終效果如下:
怎么樣决瞳,是不是格調(diào)滿滿货徙?用來(lái)升值加薪最好不過(guò)了。
(BOSS:厲害了皮胡,那個(gè)誰(shuí)3占铡)
散點(diǎn)圖配色技巧:
1、添加兩個(gè)均值代碼屡贺。
代碼1:
關(guān)聯(lián)度均值 =
AVERAGEX ( ALL ( '產(chǎn)品表' ), [關(guān)聯(lián)度占比] )
代碼2:
A客戶(hù)購(gòu)買(mǎi)B金額均值 =
AVERAGEX ( ALL ( '產(chǎn)品表' ), [A客戶(hù)購(gòu)買(mǎi)B的金額] )
2蠢棱、選取喜歡的顏色,利用IF+AND進(jìn)行判定甩栈。
動(dòng)態(tài)顏色 =
IF (
AND ( [A客戶(hù)購(gòu)買(mǎi)B的金額] <= [A客戶(hù)購(gòu)買(mǎi)B金額均值], [關(guān)聯(lián)度占比] <= [關(guān)聯(lián)度均值] ),
"#108DFE",
IF (
AND ( [A客戶(hù)購(gòu)買(mǎi)B的金額] <= [A客戶(hù)購(gòu)買(mǎi)B金額均值], [關(guān)聯(lián)度占比] > [關(guān)聯(lián)度均值] ),
"#e6b422",
IF (
AND ( [A客戶(hù)購(gòu)買(mǎi)B的金額] > [A客戶(hù)購(gòu)買(mǎi)B金額均值], [關(guān)聯(lián)度占比] <= [關(guān)聯(lián)度均值] ),
"#0F5C4A",
IF ( AND ( [A客戶(hù)購(gòu)買(mǎi)B的金額] > [A客戶(hù)購(gòu)買(mǎi)B金額均值], [關(guān)聯(lián)度占比] > [關(guān)聯(lián)度均值] ), "#a22041" )
)
)
)
當(dāng)然泻仙,也可以使用SWITCH函數(shù),這里就不贅述了量没。
3玉转、散點(diǎn)圖顏色格式設(shè)置。
散點(diǎn)圖最終效果如下:
小伙伴們?GET了么殴蹄?
白茶會(huì)不定期的分享一些函數(shù)卡片
(文件在知識(shí)星球[PowerBI丨需求圈])
這里是白茶究抓,一個(gè)PowerBI的初學(xué)者猾担。