能否用Power BI内置或自定义树状图呈现层级数值数据结构?
在Power BI中实现层级现金账户树状图的方案
核心结论
完全可以通过内置树状图或自定义图表实现你的需求,但必须先将当前的宽表结构转换为层级化的长表结构——因为Power BI的树状图组件依赖维度层级列,而非分散的多度量值列。
原始数据(整理后)
| ID | Cash_All_Accounts | Cash_Current_Accounts | Cash_Saving_Accounts | Cash_Long_Term_Saving_Accounts | Cash_Short_Term_Saving_Accounts |
|---|---|---|---|---|---|
| 1 | 100 | 50 | 50 | 25 | 25 |
| 2 | 200 | 50 | 150 | 100 | 50 |
第一步:转换为层级化长表
当前数据是宽表,每个层级对应单独列,需要转成包含层级路径和对应金额的长表,示例结构如下:
| ID | 一级分类 | 二级分类 | 三级分类 | 金额 |
|---|---|---|---|---|
| 1 | 全部现金账户 | 当前账户 | - | 50 |
| 1 | 全部现金账户 | 储蓄账户 | 长期储蓄账户 | 25 |
| 1 | 全部现金账户 | 储蓄账户 | 短期储蓄账户 | 25 |
| 2 | 全部现金账户 | 当前账户 | - | 50 |
| 2 | 全部现金账户 | 储蓄账户 | 长期储蓄账户 | 100 |
| 2 | 全部现金账户 | 储蓄账户 | 短期储蓄账户 | 50 |
Power Query转换步骤
- 导入原始数据后,选中
ID列,点击转换选项卡 → 逆透视其他列,得到Attribute(原列名)和Value(金额)两列; - 添加自定义列,对
Attribute列进行层级映射:Cash_Current_Accounts→ 一级分类:"全部现金账户",二级分类:"当前账户",三级分类:"-"Cash_Long_Term_Saving_Accounts→ 一级分类:"全部现金账户",二级分类:"储蓄账户",三级分类:"长期储蓄账户"Cash_Short_Term_Saving_Accounts→ 一级分类:"全部现金账户",二级分类:"储蓄账户",三级分类:"短期储蓄账户"
- 过滤掉
Cash_All_Accounts和Cash_Saving_Accounts的行(子项求和已等于父项,避免重复计算); - 重命名列并整理结构,得到上述层级长表。
第二步:用内置树状图实现
- 在Power BI报表视图中,添加内置树状图可视化组件;
- 将
一级分类、二级分类、三级分类依次拖入类别字段框; - 将
金额拖入值字段框; - 调整格式:在格式选项卡中设置标签显示(如类别名称+金额)、颜色、边框等,即可得到嵌套层级的树状图——大矩形代表"全部现金账户",内部拆分出"当前账户"和"储蓄账户"的矩形,"储蓄账户"内部再拆分出"长期/短期储蓄账户"的小矩形。
第三步:用自定义图表实现(样式更灵活)
如果内置树状图的样式无法满足需求,可从Power BI Marketplace安装自定义图表,比如Hierarchy Treemap或Advanced Treemap:
- 点击可视化面板的获取更多可视化项,搜索并安装目标自定义图表;
- 同样将
一级分类、二级分类、三级分类拖入层级字段,金额拖入值字段; - 自定义图表支持更多设置:比如展示完整层级路径标签、自定义层级颜色映射、添加交互钻取等,适配更复杂的样式需求。
内容的提问来源于stack exchange,提问作者Grzegorz Szymala
相关产品推荐
相关产品推荐

