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

加入 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())

结果如下:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容