前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >3.11 PowerBI报告可视化-矩阵:使用计算组改变列小计的计算逻辑及条件格式设置

3.11 PowerBI报告可视化-矩阵:使用计算组改变列小计的计算逻辑及条件格式设置

原创
作者头像
PowerBI自己学_轻松
发布2025-02-25 08:01:50
发布2025-02-25 08:01:50
920
举报
文章被收录于专栏:PowerBI入门100例PowerBI入门100例

加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。

Excel是单元格级别的报表,而PowerBI是列级别的报表(本质是透视表),所以有时候在Excel中可以展示的报表在PowerBI中比较难展示。比如,这种年月和汇总出现同一个报表中的情况,用户既想看到分月销量,又想同时看到YTD汇总及增长情况。

解决方案

虽然可以使用辅助表双层表头和SWITCH度量值(根据表头返回结果)的方案,但是度量值相对复杂。推荐使用计算组,把汇总列放在列小计上,相对简单还可以复用给别的度量值,而且支持给小计列设置不同的条件格式。

举例

按上图做一个矩阵,小计列带不同的条件格式。

模型

度量值

销量 = SUM(Sheet2[销量])

操作步骤

STEP 1点击左侧边栏的模型视图,在菜单栏主页下点击计算组,新建计算组,此时可以在数据窗格的模型下可以看到计算组,命名为Dim_YTD,列命名为YTD,然后新建4个计算项。

年月 =

IF(ISINSCOPE(DIM_DATE[YEARMONTH]),

SELECTEDMEASURE(),

BLANK()

)

今年YTD =

IF(NOT ISINSCOPE(DIM_DATE[YEARMONTH]),

CALCULATE(SELECTEDMEASURE(),

DATESYTD(DIM_DATE[DATE])

),

BLANK()

)

去年YTD =

IF(NOT ISINSCOPE(DIM_DATE[YEARMONTH]),

CALCULATE(

CALCULATE(SELECTEDMEASURE(),

DATESYTD(DIM_DATE[DATE])

),

SAMEPERIODLASTYEAR(DIM_DATE[DATE])

),

BLANK()

)

YTD Gr% =

IF(NOT ISINSCOPE(DIM_DATE[YEARMONTH]),

VAR _vm_YTD =

CALCULATE(SELECTEDMEASURE(),

DATESYTD(DIM_DATE[DATE])

)

VAR _vm_YTD_LY =

CALCULATE(

CALCULATE(SELECTEDMEASURE(),

DATESYTD(DIM_DATE[DATE])

),

SAMEPERIODLASTYEAR(DIM_DATE[DATE])

)

RETURN DIVIDE(_vm_YTD-_vm_YTD_LY,_vm_YTD_LY),

BLANK()

)

STEP 2 选中计算组,在属性窗格按照报表需求通过拖动为计算项排序。

STEP 3 选中计算项,在属性窗格打开动态格式字符串,与度量值的格式该功能相同,在公式栏的格式中输入格式,整数带千分位为"#,##0",百分数带一位小数为"0.0%"。

STEP 4 在画布中添加矩阵视觉对象并拖入字段,把省份放入行,把计算组的YTD字段和年月字段放入列,把销量度量值放入值,双击列中的YTD,重命名为“.”,点击视觉对象右上角的分叉向下钻取按钮,将年月展开显示。

STEP 5 在可视化窗格的格式下,列标题的标题对齐方式选择居中;打开列小计开关,将小计标签改为“.”;用鼠标拖动把年月下的“.”这一列的列宽调整到最小直至隐藏。

STEP 6 需要在年月切片器中复选202301-202308,这样可以把每个月的数字显示出来,去年YTD也会截止到所选最大月份,最终得到与文章开始Excel一样的结果。

提示:矩阵的排序选择按照销量降序排列,虽然年月总计未显示任何数据,但是它会按照未拆分年月的总销量来排序。

STEP 7 如果给这种矩阵的小计添加不同的条件格式,需要写专门的度量值,比如用于今年YTD的度量值,遇到今年YTD的表头时才返回今年YTD的值,否则返回空。然后在销量字段的条件格式中,格式样式选择规则,应用于选择仅合计,基于哪个字段选择写好的度量值,其他按需设置。

YTD_Rule = IF(SELECTEDVALUE(Dim_YTD[YTD])="今年YTD",[销量],BLANK())

YTD_Gr%_Rule = IF(SELECTEDVALUE(Dim_YTD[YTD])="YTD Gr%",[销量],BLANK())

结果如下:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档