PowerBI瀑布图制作遇阻,求解决方案(含数据及效果对比)
PowerBI瀑布图制作方案
问题背景
想要制作一款展示从2020目标到2022目标间各阶段数值变化的瀑布图,包含年度目标、训练项增减、选项节点等内容,但当前使用DAX后得到的效果不符合预期,节点逻辑和展示顺序均存在问题。
所用数据
| 描述 | 初始值 | 节省值 | 支出值 |
|---|---|---|---|
| 2020目标 | 64.0 | ||
| 2021目标 | 58.8 | ||
| 训练1 | 58.8 | 3.8 | |
| 训练2 | 62.6 | 2.0 | |
| 训练3 | 64.6 | 1.1 | |
| 训练4 | 65.7 | 1.0 | |
| 训练5 | 66.7 | 1.0 | |
| 训练6 | 67.7 | 0.4 | |
| 训练7 | 68.1 | 0.5 | |
| 训练8 | 68.6 | 4.1 | |
| 选项1 | 72.8 | ||
| 训练9 | 69.9 | 2.9 | |
| 训练10 | 67.3 | 2.6 | |
| 训练11 | 64.7 | 2.6 | |
| 训练12 | 63.6 | 1.1 | |
| 训练13 | 63.1 | 0.5 | |
| 训练14 | 62.9 | 0.2 | |
| 选项2 | 62.9 | ||
| 训练3 | 61.8 | 1.1 | |
| 训练4 | 60.8 | 1.0 | |
| 训练5 | 59.8 | 1.0 | |
| 训练6 | 59.4 | 0.4 | |
| 训练7 | 58.9 | 0.5 | |
| 选项3 | 58.9 | ||
| 2022目标 | 62.4 | 4.00 |
解决步骤
一、调整数据结构(Power Query中操作)
PowerBI原生瀑布图无法直接识别多列的增减逻辑,需先标准化数据:
- 添加排序索引:新增
索引列,按你想要的展示顺序给每一行编号(从0或1开始),避免可视化时顺序混乱。 - 统一变化值:新增自定义列
变化值,公式:
将节省(正向增量)和支出(负向增量)统一为一列数值。if [节省值] <> null then [节省值] else if [支出值] <> null then -[支出值] else null - 标记汇总节点:新增自定义列
是否为汇总项,公式:
标记出年度目标、选项这类不需要展示增量的汇总节点。if [节省值] = null and [支出值] = null then true else false
二、DAX度量值计算
仅调整数据结构不足以实现逻辑衔接,需添加两个度量值:
- 累计值:计算每个节点的起始累计数值,保证瀑布图衔接正确
累计值 = VAR 当前索引 = MAX('数据表'[索引]) RETURN CALCULATE( SUM('数据表'[初始值]), FILTER(ALL('数据表'), '数据表'[索引] <= 当前索引) ) + CALCULATE( SUM('数据表'[变化值]), FILTER(ALL('数据表'), '数据表'[索引] < 当前索引) ) - 节点显示值:让汇总节点显示初始值,训练项显示变化值
节点显示值 = IF( SELECTEDVALUE('数据表'[是否为汇总项]), SELECTEDVALUE('数据表'[初始值]), SELECTEDVALUE('数据表'[变化值]) )
三、可视化配置
- 选择瀑布图,将
描述拖到「轴」,节点显示值拖到「值」。 - 在「格式」面板的「分类选项」中,设置「总计」为
是否为汇总项等于true的节点,这类节点会显示为完整柱子,作为数值锚点。 - 轴的排序选择「按索引列升序」,确保展示顺序正确。
通过以上步骤,即可实现符合预期的瀑布图效果,完整呈现各阶段的数值递进关系。
内容的提问来源于stack exchange,提问作者ricky89
相关产品推荐
相关产品推荐

