龙空技术网

如何让Power BI柱形图同时展现年度和月份数据?

PowerBI星球 398

前言:

眼前咱们对“如何让柱状图显示数据”都比较关心,我们都想要学习一些“如何让柱状图显示数据”的相关文章。那么小编在网上汇集了一些关于“如何让柱状图显示数据””的相关文章,希望各位老铁们能喜欢,大家一起来学习一下吧!

近有几个伙伴都问到如何在一个图表中,将年度和月份数据同时展现出来,比如在柱状图中,既展示本年每月的数据,也同时展示出之前每年的年度数据。

这种需求仅靠柱形图的格式设置无法实现,也不是写一个度量值就能做到的,因为坐标轴同时展示年度和月份两种粒度,需要先构造出带有两种粒度的字段。

以PowerBI星球案例数据为例,先构造一个带有年度和年度月份的辅助表,通过UNION函数将日期表的年度和年度月份合并到一张表中的同一列上:

辅助表 =

UNION(

VALUES('日期表'[年]),

VALUES('日期表'[年度月份])

)

这个辅助表无需和其他表建立关系,用它的字段放到柱形图的X轴上。

对于有规律的数据,可以这样来构造,如果没有什么规律,只能手工来做辅助表了,关于制作辅助表的方式可以参考:Power BI 辅助表制作方式汇总

为了能任意选择一个年度,让柱形图展现该年所在的月份,以及之前的年度,所以再建一个年度的辅助表:

这个辅助表也不需要与模型中的其他表建立关系,用它的字段来制作切片器。

然后写一个度量值:

数据 = VAR A=MAX('年度辅助表'[年])  //获取切片器所选的年度VAR B=MAX('年月辅助表'[年])  //获取X轴坐标点的年度/年度月份VAR C=LEN(B)                //计算X轴坐标轴的长度,年度文本长度是4,年度月份文本长度是6VAR D=VALUE(LEFT(B,4))      //计算X轴坐标点的前4位,也就是年度RETURN IF(    OR(        C=4&&D<A,    //如果X轴坐标点是年度并且小于切片器所选年度        C=6&&D=A     //如果X轴坐标点是年度月份并且所属年度和切片器所选年度一致    ),               //上面条件满足其一,计算下面的表达式    CALCULATE([销售额],TREATAS('年月辅助表','日期表'[年]))+    CALCULATE([销售额],TREATAS('年月辅助表','日期表'[年度月份])))   //利用TREATAS来计算坐标点年度/年度月份的数据

这个度量值的主要逻辑是判断X轴每个坐标点与切片器所选年度的关系,具体细节已在注释中说明。

把这个度量值放到柱形图的Y轴中,当切片器选择2021年时,显示2020年度数据和2021年的月份数据:

当切片器选择2022年时,图表显示2020、2021年度数据和2022年的月份数据:

这样就是实现了希望的结果。

当你想要图表的坐标轴(或者矩阵的行/列标题)展示的分类,超越了模型中现有某个字段中所涵盖的范围,就需要先构造数据结构,并结合DAX才能实现,之前关于矩阵的特殊做法,也是同样的思路和步骤:

如何用Power BI设计复杂结构的表格?

PowerBI矩阵可视化技巧:总计显示在左侧+动态显示列

「PowerBI星球」内容合集(2023版)

标签: #如何让柱状图显示数据