Power BI中无需Unpivoting表格,如何制作按月的Clustered column chart?
在Power BI中不逆透视制作月度簇状柱形图的方法
问题背景
现有如下员工数据表格:
| 姓名(Name) | 部门(Department) | Jan-23 | Feb-23 | Mar-23 | 总计(Total) |
|---|---|---|---|---|---|
| 员工1(Emp 1) | Dpt1 | 100 | 110 | 100 | 310 |
| 员工2(Emp 2) | Dpt1 | 090 | 090 | 090 | 270 |
| 员工3(Emp 3) | Dpt1 | 110 | 110 | 110 | 330 |
| 员工4(Emp 4) | Dpt2 | 080 | 100 | 080 | 260 |
| 员工5(Emp 5) | Dpt2 | 200 | 150 | 125 | 475 |
| 员工6(Emp 6) | Dpt3 | 100 | 110 | 120 | 330 |
需求:不执行逆透视(Unpivoting)操作,制作X轴为月份、Y轴为各部门月度总计的簇状柱形图。
实现方法
可以通过创建维度表和DAX度量值实现,步骤如下:
1. 创建月份维度表
在Power Query编辑器中新建空白查询,输入以下代码生成包含目标月份的维度表:
let Source = {"Jan-23", "Feb-23", "Mar-23"}, #"转换为表" = Table.FromList(Source, Splitter.SplitByNothing(), {"月份"}), #"添加索引" = Table.AddIndexColumn(#"转换为表", "索引", 1, 1, Int64.Type) in #"添加索引"
加载该表到数据模型,无需与员工数据表建立关系。
2. 创建部门月度总计度量值
在数据视图中创建DAX度量值,用于动态计算各部门对应月份的总计:
部门月度总计 = VAR 当前月份 = SELECTEDVALUE('月份维度'[月份]) VAR 当前部门 = SELECTEDVALUE('员工数据'[部门(Department)]) RETURN SWITCH( 当前月份, "Jan-23", CALCULATE(SUM('员工数据'[Jan-23]), '员工数据'[部门(Department)] = 当前部门), "Feb-23", CALCULATE(SUM('员工数据'[Feb-23]), '员工数据'[部门(Department)] = 当前部门), "Mar-23", CALCULATE(SUM('员工数据'[Mar-23]), '员工数据'[部门(Department)] = 当前部门) )
3. 构建簇状柱形图
- 将月份维度表中的「月份」字段拖入图表的X轴区域
- 将「部门月度总计」度量值拖入Y轴区域
- 在可视化面板的「图例」区域拖入员工数据表的「部门(Department)」字段
- 确认图表类型为「簇状柱形图」,即可得到符合需求的可视化效果。
补充说明
如果部门或月份较多,这种方法会需要手动维护SWITCH中的分支,长期来看逆透视仍是更高效的方案,但如果受限于无法修改原始表结构,上述方法可以满足临时需求。
内容的提问来源于stack exchange,提问作者aj7amigo
相关产品推荐
相关产品推荐

