矩阵维度必须一致_PowerBI 打造双边排序高密度KPI矩阵

本文介绍了如何在 PowerBI 中创建双边排序的高密度KPI矩阵,适用于展示大量数据的排名和次级排序。通过使用DAX表达式进行条件判断,实现了矩阵的有效筛选和空间最大化利用,提高信息密度。
摘要由CSDN通过智能技术生成

7692cda0fd2f8239bc7f4b24a48390bc.png

d66ae9c1d81d612249e9702e93cf24b1.png

在过去的两周,我们进行了大量的在线直播,通常达到两个小时或以上。如果你能充分吸收线上直播的内容,那将极大提升你对 PowerBI 的认知。

在刚刚结束的周末的直播中,我们分享了 Z 曲线的第二期,效果如下:

d516b45338228f4c8d69579529cdbf6f.png

对,你没看错,这是一个图,而且是在现场实时做出的全动态 Z 曲线。为什么要现场做,只为证明它简单到是可以现场做出的,而不需要额外的特别准备,所以 PowerBI 是人人可用的工具。

本文不是来对 Z 曲线讲第 4 次的,只是提醒还不知道有直播的伙伴赶快加入,该直播是完全免费公益的。

f3014a0f53ddd9295cdc8c2708ca8572.png

现场是这样的:

963c874a3d5ddfa70c69d6c27963a718.png

d63aa5f5e636582054554c63df53f555.png

每次的主题都不容错过。

今天分享的主题是:双边排序高密度矩阵。

先看效果吧,如下:

e96ac30db0f85dee04279197d3c4d2ae.png

该矩阵在 X 维度和 Y 维度提供双排序能力,以最高信息密度显示最重要 KPI,可谓企业级矩阵的经典应用。

业务意义

考虑以下场景:

  • 在 100 个门店,销售 80 个品牌的产品;

  • 在 34 个地区,销售 数百种 SKU 的产品;

所有这些场景,都可以使用该矩阵来呈现:

  • 排名靠前的主要维度

  • 在当前维度下,进一步对小维度进行排名

从而,整个矩阵就是重点。而矩阵左上角,就是重点的重点。

制作方法

为了通用性的考量,这里必须使用两个排序轴:

  • 主维度排序轴,又称 X 轴。

  • 次维度排序轴,又称 Y 轴。

我们将主要排序轴 X 轴与主维度元素排列,这将产生穷举的排列组合效果,如下:

86f6909291fd8d5f25fdee1ef131715c.png

这样的效果,并非我们想要的。

可以注意到每个序号对应的元素(在这里是省份)都会穷举,但实际上,我们希望只是与序号一致的排名元素才被选到。

因此,我们需要来判别当前元素是否与该序号匹配,给出 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 ) )

这样实现的效果如下:

bbf7aa1e639803164f60573b698837d9.png

可以看出这样的结构会向横向扩展,随着KPI的增多,无法充分利用显示空间。

这里就用到了矩阵的在行上显示特性。如下:

c0db37bd3de1be2001c38d396a925911.png

效果如下:

b3ea2dd44db166cd4236e5a633442e17.png

这样就立马得到了充分的空间利用率。

总结

本文给出了双边排序高密度KPI矩阵的通用做法,并给出了矩阵的在行上显示的最合理场景,那就是:在行上显示可以将空间利用率达到最大。

我们将在 3.18 日晚20点,直播该矩阵的做法,不要再错过了。

348040f5cd70c683d339ebc63e231aef.png

本文内容【源文件+视频讲解】从属于:年度订阅会员,已发布请享用。

您可能还感兴趣:

2020 第三届 PowerBI 可视化大赛 攻略
PowerBI 地图 - 层级展开从省到市局部放大

让数据真正成为你的力量
加私信暗号:data2020

05746be7daf28f894219b30a2208ba14.png

不同阶段伙伴都有完整的进阶通道

d73df8bc499ce9fc74b3c1a6bfb59530.png

472adc07f188ea8fcebfb27cded2a8f9.png

罗叔带你正确地系统化学习 PowerBI

让数据真正成为你的力量

免费体验 PowerBI:

581a744abfa2b76610a0b00ceeb51ebb.png

【第1部,共6部】从零正确地系统化学习 PowerBI ↓

5483adff69936be9e6833d66dd936e6c.png

【第2部,共6部】拖拽不能满足需求?系统化学习 DAX 来解决 ↓

3084b26da92c6394550448627ee355f1.png

【第3部,共6部】直接使用罗叔给你做好的套路解决问题 ↓

0c86c2f975debe11cbac7cbaa85b5f77.png

【第4部,共6部】按照国际可视化标准作图 ↓

398bc47d029e0a2f98d1aa4c8bd090b0.png

【第5部,共6部】为您揭示 自助BI 的本质(无需前置学习)↓

216e27340572c036f753e29be70e49d7.png

【第6部,共6部】成为年度订阅会员,尽享 PowerBI 高端资源 ↓

e1a7dae998b4af5cb36758cc8ab7c5ff.png

我是BI佐罗,让数据真正成为你的力量

db7775ded5cf86e02a5fceac2f01dfd6.png

cc44b412fdca34b9df6a684447c9fdf0.gif点击【阅读原文】进入【学习中心】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值