全網(wǎng)首發(fā):PowerBI 原生瀑布圖終極解決方案

瀑布圖,在分析中是非常重要的圖。在 Power BI 中的原生瀑布圖使用起來有些問題,本文來探討如果基于原生瀑布圖的高級(jí)使用方法和限制。
默認(rèn)表現(xiàn)
在 Power BI 中的瀑布圖的默認(rèn)表現(xiàn)是這樣的,如果設(shè)置:

則表現(xiàn)為:

這個(gè)表現(xiàn)可以理解。
再嘗試另一種設(shè)置:

這里的更改是:加入了細(xì)目。什么意思呢?不要緊,看看表現(xiàn)再說,如下:

可以看出來:
每個(gè)類別形成了對(duì)比,類別是立地的柱子。
每個(gè)細(xì)目是類別之間對(duì)比的項(xiàng)目。
細(xì)目的排序是按照差異從正數(shù)的大到負(fù)數(shù)的小來排列的,無法自定義。
這三條規(guī)律一定要記住,這是原生瀑布圖不改變的內(nèi)部邏輯,我們要改進(jìn)瀑布圖的表現(xiàn)時(shí),也必須滿足這個(gè)邏輯,不然無法與之適應(yīng)。
再考慮一下不加入細(xì)目的情況,再看一次:

可以看出來:
每個(gè)類別形成積累效應(yīng)
可以自定義順序(圖表右上角可設(shè)置)
總計(jì)柱子默認(rèn)生成
規(guī)律總結(jié)
可以再做一些實(shí)驗(yàn),就能得到以下重要規(guī)律:
【第一類規(guī)律】如果不放入細(xì)目,類別作為積累項(xiàng),立地柱子默認(rèn)生成
類別可以自定義順序
立地柱子默認(rèn)生成,文本不可改
【第二類規(guī)律】如果放入細(xì)目,類別將成為對(duì)比項(xiàng),且立地成柱
類別可以自定義順序
類別作為立地柱子
細(xì)目作為差異積累項(xiàng),按大小排列,順序不可改
這兩類規(guī)律非常重要。
業(yè)務(wù)訴求
現(xiàn)在我們提出業(yè)務(wù)上的表現(xiàn)訴求,再來想辦法看看上述規(guī)律是否可以來滿足,要求如下:
有首尾兩個(gè)立地柱子,表示開始和結(jié)束
立地柱子可以自定義名字以及這兩個(gè)柱子的順序
內(nèi)部的綠色或紅色差異項(xiàng)表示差異積累
差異項(xiàng)可以自定義順序
如果用 Zebra BI 的瀑布圖來實(shí)現(xiàn)這個(gè)訴求,其效果大致如下:

Zebra BI 是可以直接在界面設(shè)置柱子的正負(fù)以及是否立地的,而且非常簡單,這有利于我們理解瀑布圖最輕松的設(shè)置方式。而 Power BI 原生的瀑布圖是做不到的。
通過與規(guī)律對(duì)比,我們發(fā)現(xiàn)有一條是一定做不到的,那就是:
差異項(xiàng)可以自定義順序
這點(diǎn)是原生瀑布圖做不到的。
那么,我們就得到了一個(gè)結(jié)論:
如果不考慮差異項(xiàng)可以自定義順序的場景,是可以用原生 Power BI 瀑布圖做出的。
下面給出終極方案,該方案是全網(wǎng)首發(fā)滴。
終極方案
通過上述研究,按照規(guī)律我們可以做出設(shè)計(jì)了。先來看一個(gè)效果:

沒有錯(cuò),這正是我們需要的。這里的業(yè)務(wù)場景是:
用去年和今年分別作為瀑布圖的首柱和末柱
來對(duì)首柱到末柱是如何變化的按照差異項(xiàng)來對(duì)比
中間是每個(gè)差異項(xiàng)
差異項(xiàng)的貢獻(xiàn)從大到小排序
注意:差異項(xiàng)是無法自定義排序的。
差異項(xiàng)無法自定義排序而是默認(rèn)排序,是原生瀑布圖的最大限制。
假設(shè)我們接受這個(gè)限制,那么設(shè)計(jì)這樣的瀑布圖的通用方法是什么呢。如下給出。
第一步:DAX 自定義首末類別柱
用 DAX 自定義首末類別柱如下:
// 定義計(jì)算表如下
Waterfall-Begin-End-ACPY =
SELECTCOLUMNS(
{
( 1 , "Start" , "去年" ) ,
( 2 , "End" , "今年" )
} ,
"OrderBy" , [Value1] , "PointCode" , [Value2] , "PointName" , [Value3] )這個(gè)用來作為首末端點(diǎn)。
第二步:DAX 自定義差異細(xì)項(xiàng)
用 DAX 自定義差異細(xì)項(xiàng)如下:
Waterfall-Body-ByIndustry =
DISTINCT( Customer[Industry] )這個(gè)用來作為首末端點(diǎn)之間的內(nèi)容。
第三步:DAX 自定義度量值
這是最精妙的一步,這里存在一個(gè)非常非常重要的技巧,我們先來看 DAX 實(shí)現(xiàn),如下:
Waterfall.Value.ByIndustry =
VAR vPoint = SELECTEDVALUE( 'Waterfall-Begin-End-ACPY'[PointCode] )
VAR vItem = SELECTEDVALUE( 'Waterfall-Body-ByIndustry'[Industry] )
RETURN
SWITCH( TRUE() ,
vPoint = "Start" && vItem <> BLANK() , CALCULATE( [KPI.PY] , TREATAS( { vItem } , 'Customer'[Industry] ) ) ,
vPoint = "End" && vItem <> BLANK() , CALCULATE( [KPI] , TREATAS( { vItem } , 'Customer'[Industry] ) ) ,
vPoint = "Start" , [KPI.PY],
vPoint = "End" , [KPI]
)這里蘊(yùn)含了一個(gè)技巧非常重要,我們不細(xì)細(xì)拆解這個(gè)技巧的原理,我們將其規(guī)律描述如下:
用 SWITCH TRUE 結(jié)構(gòu)做判斷框架
對(duì)首柱與差異項(xiàng)的窮舉組合,計(jì)算,視為 A
對(duì)末柱與差異項(xiàng)的窮舉組合,計(jì)算,視為 B
則:B - A 是差異項(xiàng)的值
再對(duì)首柱和末柱分別計(jì)算
這套規(guī)律非常重要,這恰好是 Power BI 瀑布圖內(nèi)部在對(duì)比計(jì)算時(shí)依照的規(guī)律。
作圖如下
有了上述三步,我們就可以作圖如下:

則可以得到效果:

非常好。
不完美的地方
我們剛說明了限制:差異項(xiàng)無法自定義排序而是默認(rèn)排序,是原生瀑布圖的最大限制。
這在做以時(shí)間維度做差異項(xiàng)的時(shí)候就有些不完美,如下:

它的差異項(xiàng)并非是按照月份來排序的,而是按照貢獻(xiàn)度來排序的。
也就是說:
Power BI 的原生瀑布圖在設(shè)計(jì)的時(shí)候就是考慮到它對(duì)貢獻(xiàn)度的分析。
總結(jié)
本文徹底給出了 Power BI 中原生瀑布圖的行圖規(guī)律以及如何利用這些規(guī)律制作高級(jí)瀑布圖以及其適用范圍。
結(jié)論是:
可以完美支持以貢獻(xiàn)度分析為主的瀑布結(jié)構(gòu)
不能支持按照自定義細(xì)項(xiàng)排序的瀑布結(jié)構(gòu)
對(duì)于此規(guī)律和結(jié)構(gòu)的了解非常重要,它將回答什么圖可以做,什么圖不可以做,那對(duì)于不完美怎么辦呢?答案是推薦使用 Zebra BI 來解決即可。
你可以復(fù)制粘貼本文 DAX 直接使用或者系統(tǒng)化學(xué)習(xí)《BI真經(jīng)》。

PowerBI 實(shí)現(xiàn)價(jià)格數(shù)量混合模型分析企業(yè)增長原因

國內(nèi)獨(dú)家:零售分析自動(dòng)化大型模板套件 + 線下超級(jí)精英密訓(xùn)

PowerBI 靈異事件,你遲早會(huì)遇到,骨灰玩家問題

全網(wǎng)首發(fā) Power BI DAX 純?cè)咝阅芊猪摼仃?/p>

DAX Pro - 全新升級(jí),打造自己的模板庫

DAX 設(shè)計(jì)模式(第二版)中文在線學(xué)習(xí)正式開放
在訂閱了BI佐羅講授的《BI真經(jīng)》之《BI進(jìn)行時(shí)》課程區(qū),除了可以下載本文案例,還可以觀看視頻講解。

讓數(shù)據(jù)真正成為你的力量
Create value through simple and easy with fun by PowerBI
Excel BI | DAX Pro | DAX 權(quán)威指南 | 線下VIP學(xué)習(xí)
掃碼與PBI精英一起學(xué)習(xí),驗(yàn)證碼:data2021
PowerBI MVP 帶你正確而高效地學(xué)習(xí) PowerBI
點(diǎn)擊“閱讀原文”,即刻開始
↙
