加入 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 删除。