超越原生,PowerBI 柱形图差异分析

PowerBI战友联盟

共 5783字,需浏览 12分钟

 · 2024-04-10

🔥🔈 怕错过干货?点上方↑蓝字【BI佐罗讲数据分析】关注并星标,第一时间收到最新资讯。

最近在使用 Zebra BI 的时候,看见最右侧标记最近两个周期之间的差异的功能还不错,想着能不能在 Power BI 里面复刻一下。于是,本文出现了。

87276d26c10db7642fd33697a6285d38.webp

先看一下复刻的效果。

38a351e6ed00f53e8cc9d96777fa9201.webp

再来感受一下动态效果。

1fdb76bd2965697dc8ad1b92d277c985.webp

除了标签位置,基本上是复刻成功了,那么这样一个图是如何在 Power BI 中实现的呢?这是用折线和簇状柱形图实现的,让我们一起进入今天的内容吧。

首先,我们要创建一个表,因为最后一列其实是一个空格值。

点击建模,选择新建表,输入下方代码。

49810fc4b75c32200b135529ba65c8d6.webp

这样会得到一个包含月份和空格值的表,再转到表格视图,选中 MonthNameCN 列,选择按列排序。

dcc15f5ebe45099235b415ab4b822061.webp

再新建一个度量值去计算当前月份的销售额。

      
        Sum of Sales =
      
      
        VAR SumTable =
      
      
        SUMMARIZE (
      
      
            FILTER ( '差异类别', [MonthNum] IN TOPN ( 12VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 )) ,
      
      
            [MonthNameCN]
      
      
        )
      
      
        
          RETURN
        
      
      
        CALCULATE ( [Sales] , 'Dim Calendar'[MonthNameCN] IN SumTable )
      
    

这里为什么会用到 Top N,而不是直接筛选 MonthNum 不等于 13 的月份呢?这是考虑到我们可以要对月份进行筛选,所以就直接使用筛选出日期表的前 12 个值,也就是所有月份。当你创建一个切片器对月份进行筛选时,它就会只显示你筛选的月份。

创建一个折线和簇状柱形图,在 X 轴上添加差异类别表的月份列,在列 Y 轴上添加 Sum of Sales 度量,这时是不显示空格类别的。

0ce372c0ceebd5975c91fbd34cf60f14.webp

然后就是两条折线的创建了,一个是等于最后一个月的值,一个是等于倒数第二个月的值,所以我们可以通过 TOPN 结合 SUMX 实现。

      
        Last1MSales =
      
      
        SUMX (
      
      
          TOPN ( 1VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 ),
      
      
          [Sales]
      
      
        )
      
    
      
        Last2MSales =
      
      
        SUMX (
      
      
          TOPN ( 2VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 ),
      
      
          [Sales]
      
      
        
          ) - [Last1MSales]
          
        
      
    

再去构造第一条线,最后一个月和空格值上的销售额等于最后一个月的销售额。

      
        Line =
      
      
        VAR Last1M =
      
      
          TOPN ( 1VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 )
      
      
        
          RETURN
        
      
      
          IF (
      
      
              SELECTEDVALUE ( '差异类别'[MonthNum] ) IN UNION ( Last1M, { 13 } ),
      
      
              SUMX ( Last1M, [Sales] )
      
      
          )
      
    

然后是第二条线,最后两个月和空格值上的销售额等于倒数第二个月的销售额。

      
        Line2 = 
      
      
        VAR Last1M =
      
      
            TOPN ( 1VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 )
      
      
        VAR Last2M =
      
      
            TOPN ( 2VALUES ( 'Dim Calendar'[MonthNum] ), 'Dim Calendar'[MonthNum], 0 )
      
      
        
          RETURN
        
      
      
            IF (
      
      
                SELECTEDVALUE ( '差异类别'[MonthNum] ) IN UNION ( Last2M, { 13 } ),
      
      
                SUMX ( Last2M, [Sales] ) - SUMX ( Last1M, [Sales] )
      
      
            )
      
    

将两条线添加到该视觉对象的行 Y 轴上,再关闭辅助 Y 轴的值。

06e033e3c78e486f0043c9656829ae98.webp

然后转到视觉对象的误差线选项,将数据系列切换为 Line2,因为其实不管是上升还是下降,箭头都是从 Line2 出发,到 Line 结束。

当增长大于 0 时,Line 2 的上限是 Last1MSales;当增长小于 0 时,Line 2 的下限是 Last1MSales。

创建一个下限度量值。

      
        下限 =
      
      
        IF (
      
      
          SELECTEDVALUE ( '差异类别'[MonthNameCN] ) = " ",
      
      
          IF ( [Last1MSales] - [Last2MSales] < 0, [Last1MSales] )
      
      
        )
      
    

添加到 Line2 的下限上。

72648d2723fc45f7e76dc7d49224d20a.webp

修改一下误差线的条形图选项,数据条颜色改为深红色,宽度改为 4,标记形状改为 △,大小改为 8,边框大小改为 0。

d3582d9f80f0668c79f469262f863f0f.webp

再启用误差线的错误标签。

1646b207becc73c217711eae5747901d.webp

看一下效果。

34244a332fdbe3fd55cbce274d6cbfb3.webp

这只是当增长小于 0 是的差异计算,当增长大于 0 时,又需要一个新的数据系列,将 Line2 的复制一下。

      
        Line Copy = [Line2]
      
    

将它也添加到折线和簇状柱形图的行 Y 轴上,然后新建一个表示上限的度量值。

      
        上限 =
      
      
        IF (
      
      
          SELECTEDVALUE ( '差异类别'[MonthNameCN] ) = " ",
      
      
          IF ( [Diff] > 0, [Last1MSales] )
      
      
        )
      
    

再次到误差线选项,将数据系列切换为 Line Copy,在上限上添加上限字段。

37060ed8fba11b5c53dac67d5f770a31.webp

按照相同的办法设置一下误差线的条形图选项和错误标签,只不过要注意将颜色改为绿色。

看一下增长时的效果。

fe6ce2d2469264c5e6994cfc5c2fc454.webp

最后将视觉对象美化一下,修改一下柱形和折线的颜色,关闭图例和网格线等。

ebd58961db24c156fc392824f06ccec5.webp

再看一下动态效果。

1fdb76bd2965697dc8ad1b92d277c985.webp

大家赶快去自己的 Power BI 中试一下吧,如果标签想显示数值,将错误标签的标签格式改为相对(数值)即可。

3746b77359326e3161e8c33c526a2d01.webp 3fc1ed5d211b5778fd4bae05087d4e93.webp

大家可以对照本文说明自己实验,已经购买《PowerBI进行时2024》的伙伴,也可以在资料中参考直接套用本案例到您的工作中。

9f4fc218a3c22fc7b210ea8805615b2e.webp 497eb6cff798be255e4876e7264d4e07.webp

超越认知:构建指标体系,驱动业财融合,彻底遥遥领

1f5960dd82e4cd4528d84967a1ca3185.webp

全球顶级企业财报精华凝练,业财人顿悟


6e7b029ec2941c0b0c45d14725ae53a4.webp

《财务分析之道》助你脱离6大困境,具备20项超级能力

↓ 数据分析类近期培训课程 ↓

让数据分析真正成为你的力量

d7cf9e37be3c62fbe7574f34632e3a07.webp

数据分析师训练营 课程表


时间:2024年03月 班
主题:《财务分析之道》终极业财融合,高级FP&A。[少量席位🎫]
主题:《经营分析之道》指标驱动企业经营分析。[报名中📩] 
主题:《数据分析之道》精通十大业务分析模型。[少量席位🎫]

时间: 2024年04月 班
主题: 《DAX之道》2日精通DAX。 [可报名💡]

                      数据分析 | Power BI | Tableau | FineBI 企业咨询 | 企业培训 | 个人学习 | 职业规划
咨询老师,验证码:data2024

7b35927446c17b521d44412ca37445da.webp

1b4350eeb09a03bd114dbc825cc70397.webp


带你彻底解锁数据分析的力量

点击“阅读原文”进入学习中心

浏览 1
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报