如何在Power BI矩阵可视化中创建计算累计总值列?
在Power BI矩阵中添加累计总值列的解决方案
嘿,很高兴看到你Power BI学习进度这么快!针对你在现有矩阵里添加累计总值列的需求,我给你整理了具体的实现步骤,都是基于DAX度量值来完成的,完美适配你当前的矩阵结构:
一、核心逻辑确认
你的矩阵是按UPC代码行展示销售总额,还有占列总计的百分比,要加的累计总值,应该是按当前UPC排序顺序,从第一行到当前行的销售总额累加,对吧?下面的方法都是基于这个逻辑来的。
二、创建累计销售总额度量值
首先,你需要写一个DAX度量值来计算累计值,把它添加到矩阵的「值」区域即可:
累计销售总额 = VAR 当前UPC = SELECTEDVALUE('你的销售表'[UPC代码]) VAR 所有可见UPC = ALLSELECTED('你的销售表'[UPC代码]) VAR 累计范围UPC = FILTER(所有可见UPC, '你的销售表'[UPC代码] <= 当前UPC) RETURN CALCULATE([销售总额], 累计范围UPC)
代码细节解释:
SELECTEDVALUE('你的销售表'[UPC代码]):获取当前矩阵行对应的UPC代码ALLSELECTED('你的销售表'[UPC代码]):获取当前筛选上下文(比如页面切片器、矩阵筛选)下所有可见的UPC,确保累计是在当前筛选范围内的FILTER(...):筛选出所有小于等于当前UPC的行,这里依赖你已经设置好的UPC排序(如果你的UPC是文本类型,记得先设置正确的排序规则,比如按数值排序,不然文本比较可能出错)CALCULATE([销售总额], 累计范围UPC):计算筛选范围内的销售总额累加值
三、如果需要累计百分比(累计占总销售额的比例)
如果你还需要对应的累计占比列,可以再创建这个度量值:
累计销售占比 = VAR 当前UPC = SELECTEDVALUE('你的销售表'[UPC代码]) VAR 所有可见UPC = ALLSELECTED('你的销售表'[UPC代码]) VAR 累计范围UPC = FILTER(所有可见UPC, '你的销售表'[UPC代码] <= 当前UPC) VAR 总销售额 = CALCULATE([销售总额], ALLSELECTED('你的销售表')) RETURN DIVIDE(CALCULATE([销售总额], 累计范围UPC), 总销售额)
创建后把它加到矩阵值区域,设置格式为百分比即可。
四、关键注意事项
- 如果你的UPC是文本格式,直接用
<=比较可能不符合预期(比如"100"会比"99"小),这时候需要把UPC转成数值再比较,把筛选行改成:VAR 累计范围UPC = FILTER(所有可见UPC, VALUE('你的销售表'[UPC代码]) <= VALUE(当前UPC)) - 如果你需要忽略页面上的所有筛选,计算全局累计,把
ALLSELECTED换成ALL即可,但一般场景下ALLSELECTED更符合需求(保留当前筛选的累计)
把这些度量值添加到矩阵后,你就能看到和现有列对齐的累计总值列啦,和你之前的百分比列搭配起来,就能得到更完整的透视效果!
内容的提问来源于stack exchange,提问作者Todd Brannon




