在过去的两周,我们进行了大量的在线直播,通常达到两个小时或以上。如果你能充分吸收线上直播的内容,那将极大提升你对 PowerBI 的认知。
在刚刚结束的周末的直播中,我们分享了 Z 曲线的第二期,效果如下:
对,你没看错,这是一个图,而且是在现场实时做出的全动态 Z 曲线。为什么要现场做,只为证明它简单到是可以现场做出的,而不需要额外的特别准备,所以 PowerBI 是人人可用的工具。
本文不是来对 Z 曲线讲第 4 次的,只是提醒还不知道有直播的伙伴赶快加入,该直播是完全免费公益的。
现场是这样的:
每次的主题都不容错过。
今天分享的主题是:双边排序高密度矩阵。
先看效果吧,如下:
该矩阵在 X 维度和 Y 维度提供双排序能力,以最高信息密度显示最重要 KPI,可谓企业级矩阵的经典应用。
业务意义
考虑以下场景:
在 100 个门店,销售 80 个品牌的产品;
在 34 个地区,销售 数百种 SKU 的产品;
…
所有这些场景,都可以使用该矩阵来呈现:
排名靠前的主要维度
在当前维度下,进一步对小维度进行排名
从而,整个矩阵就是重点。而矩阵左上角,就是重点的重点。
制作方法
为了通用性的考量,这里必须使用两个排序轴:
主维度排序轴,又称 X 轴。
次维度排序轴,又称 Y 轴。
我们将主要排序轴 X 轴与主维度元素排列,这将产生穷举的排列组合效果,如下:
这样的效果,并非我们想要的。
可以注意到每个序号对应的元素(在这里是省份)都会穷举,但实际上,我们希望只是与序号一致的排名元素才被选到。
因此,我们需要来判别当前元素是否与该序号匹配,给出 DAX 表达式如下:
DRank.Item.OutCheck =
VAR OutRankNumber = SELECTEDVALUE( 'Option.X'[Option.X] )
VAR CurrentOutItem = SELECTEDVALUE( Model_Geo[省份] )
VAR CurrentOutItemRank = RANKX( ALL( Model_Geo[省份] ) , [KPI] )
RETURN OutRankNumber = CurrentOutItemRank
该 DAX 表达式用来实现判别。
接着,我们需要考量次维度的元素并结合判别式,例如:
DRank.Item.Name =
IF( [DRank.Item.OutCheck] ,
VAR RankNumber = SELECTEDVALUE( 'Option.Y'[Option.Y] )
VAR ItemsWithRank = ADDCOLUMNS(
ALL( Model_Product[产品子类别] ) ,
"Rank" , CALCULATE( RANKX( ALL( Model_Product[产品子类别] ) , [KPI] ) )
)
RETURN CALCULATE( VALUES( Model_Product[产品子类别] ) , FILTER( ItemsWithRank , [Rank] = RankNumber ) )
)
其含义为:如果可以通过判别检查,则计算,否则返回空。这样就可以隐藏掉不希望计算的元素。
在计算中,构造了内部排名结构,如下:
ADDCOLUMNS(
ALL( Model_Product[产品子类别] ) ,
"Rank" , CALCULATE( RANKX( ALL( Model_Product[产品子类别] ) , [KPI] ) )
)
构造排名表可以用于后续筛选,有:
CALCULATE( ... , FILTER( ItemsWithRank , [Rank] = RankNumber ) )
这里将 FILTER( ItemsWithRank , [Rank] = RankNumber )
作为筛选条件得到正确的结果。
因此,为了计算元素名称,销售额,利润,利润率,分别有:
CALCULATE(
VALUES( Model_Product[产品子类别] ) ,
FILTER( ItemsWithRank , [Rank] = RankNumber )
)
CALCULATE( [KPI.Sales] , FILTER( ItemsWithRank , [Rank] = RankNumber ) )
CALCULATE( [KPI.Profit] , FILTER( ItemsWithRank , [Rank] = RankNumber ) )
CALCULATE( [KPI.Profit%] , FILTER( ItemsWithRank , [Rank] = RankNumber ) )
这样实现的效果如下:
可以看出这样的结构会向横向扩展,随着KPI的增多,无法充分利用显示空间。
这里就用到了矩阵的在行上显示特性。如下:
效果如下:
这样就立马得到了充分的空间利用率。
总结
本文给出了双边排序高密度KPI矩阵的通用做法,并给出了矩阵的在行上显示的最合理场景,那就是:在行上显示可以将空间利用率达到最大。
我们将在 3.18 日晚20点,直播该矩阵的做法,不要再错过了。
本文内容【源文件+视频讲解】从属于:年度订阅会员,已发布请享用。
您可能还感兴趣:
2020 第三届 PowerBI 可视化大赛 攻略
PowerBI 地图 - 层级展开从省到市局部放大
让数据真正成为你的力量
加私信暗号:data2020
不同阶段伙伴都有完整的进阶通道
罗叔带你正确地系统化学习 PowerBI
让数据真正成为你的力量
免费体验 PowerBI:
【第1部,共6部】从零正确地系统化学习 PowerBI ↓
【第2部,共6部】拖拽不能满足需求?系统化学习 DAX 来解决 ↓
【第3部,共6部】直接使用罗叔给你做好的套路解决问题 ↓
【第4部,共6部】按照国际可视化标准作图 ↓
【第5部,共6部】为您揭示 自助BI 的本质(无需前置学习)↓
【第6部,共6部】成为年度订阅会员,尽享 PowerBI 高端资源 ↓
我是BI佐罗,让数据真正成为你的力量
点击【阅读原文】进入【学习中心】