加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
中国式复杂报表的复杂之处在于,在一个矩阵中用多个维度查看多个度量值,实现一览无余的目的。
解决方案
上下拼接可以靠多个矩阵来实现,本文只考虑一个矩阵内的左右拼接。
常见的方案是,在多层辅助表表头下,放一个SWITCH+FORMAT度量值。但是,这种方案的缺点是多个度量值统一成一个度量值,度量值的写法繁琐,因格式调整(数字和百分比)度量值变成了文本,不利于按度量值排序和条件格式,而且条件格式仅支持颜色度量值,颜色度量值的写法同样繁琐。
鉴于此,本文推荐一层表头用辅助表,二层表头用多个度量值,一层表头下如果有用不到的度量值,通过调整列宽隐藏(隐藏列也会占有细微的列宽,会让一层表头的分组间距变宽,因此度量值数量不宜超过10个)。这种方案,每个度量值可以单独设置格式,也可以单独设置条件格式(颜色、数据条等)。
根据表头情况,有如下三种类型:
1 多个度量值,一层表头是度量值的分组;
2 一个度量值,一层表头是不同的维度;
3 1和2的结合,多个度量值,一层表头是度量值的分组和不同的维度。
举例
用如下模型,做一个多个度量值,一层表头是度量值的分组和不同的维度的中国式复杂报表。
操作步骤
STEP 1 书写需要的度量值,表内有多少列就要写多少个度量值。
Sales_白菜 = CALCULATE([Sales], FILTER(Dim_Product, [Product] = "白菜"))
Sales_Gr%_白菜 = CALCULATE([Sales_Gr%], FILTER(Dim_Product, [Product] = "白菜"))
Sales_苹果 = CALCULATE([Sales], FILTER(Dim_Product, [Product] = "苹果"))
Sales_Gr%_苹果 = CALCULATE([Sales_Gr%], FILTER(Dim_Product, [Product] = "苹果"))
Sales_LY = CALCULATE([Sales], SAMEPERIODLASTYEAR(Dim_Date[Date]))
Sales_LM = CALCULATE([Sales], PREVIOUSMONTH(Dim_Date[Date]))
Stock = SUM(Fact_Stock[Stock])
Stcok_Days = DIVIDE([Stock], [Sales_LM]) * 30
STEP 2 点击菜单栏主页下的输入数据,新建一个辅助表,输入分组和序号,然后点击编辑按钮,在PowerQuery中将序号列的数据类型改为整数。
STEP 3 辅助表加载后,选中分组列,点击菜单栏列工具的按列排序,选择序号。
STEP 4 在画布中添加矩阵视觉对象并拖入字段,把辅助表的分组列放入列,把度量值按最终效果的顺序放入值,双击分组列,重命名为“.”。
STEP 5 在格式窗格中,将列标题的对齐方式改为居中,文本自动换行关闭;值的文本自动换行也关闭;关闭列小计;在矩阵中,将每个分组下不需要的度量值列,列宽拉到最小。
STEP 6 继续在格式窗格的单元格元素中,为度量值设置条件格式。注意,同名的字段的条件格式中,一个字段名称会按顺序出现多次。为了不让分组间距中出现莫名底纹,推荐使用字体颜色和数据条,其中数据条要将轴的颜色变为白色,与图表背景颜色一致。以Sales为例:
切片器选择一个年月,结果如下:
拓展
字段参数可以将多个度量值打包,通过修改字段参数表的代码可以增加列实现分组命名,在画布中,分组命名单选正常,复选就会出现笛卡尔积,如果微软未来可以解决复选的问题,做中国式复杂报表就更快捷了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。