You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI中用Total_Amount_Of_Miles度量值总计计算占比?

DAX度量值占比计算解决方案

问题场景

基于Port表构建区域(A、B、C、D)的人数及跑步里程统计,已创建以下度量值计算人均跑步里程取整:

Total_Amount_Of_Miles = INT(SUMX( DISTINCT(Port[People]),CALCULATE(SUM(Port[Miles_Run]))/CALCULATE(COUNT(Port[People]))))

尝试用Total_Share = [Total_Amount_Of_Miles]/SUM([Total_Amount_Of_Miles])计算各区域占比时,因度量值依赖上下文无法直接求和报错。

解决方法

核心思路是通过上下文清除函数获取全局/筛选后的总计值,再做占比计算,推荐以下两种方案:

方案1:计算全局总计占比(不受切片器筛选影响)

Total_Share = 
VAR TotalOverall = CALCULATE([Total_Amount_Of_Miles], ALL(Port))
RETURN
DIVIDE([Total_Amount_Of_Miles], TotalOverall, 0)
  • ALL(Port)清除所有筛选上下文,计算出整个Port表的Total_Amount_Of_Miles总计值
  • DIVIDE函数自动处理除零错误,第三个参数为除零时的默认返回值(这里设为0)

方案2:计算筛选后总计占比(适配切片器等外部筛选)

如果需要保留切片器、筛选器的筛选结果,仅清除当前行的区域上下文,用ALLSELECTED():

Total_Share = 
VAR TotalSelected = CALCULATE([Total_Amount_Of_Miles], ALLSELECTED(Port))
RETURN
DIVIDE([Total_Amount_Of_Miles], TotalSelected, 0)
  • ALLSELECTED()保留外部筛选条件,仅移除当前行的区域筛选,得到筛选范围内的总计值

原公式错误原因

SUM([Total_Amount_Of_Miles])会逐行计算每个区域的度量值后再求和,这和需要的“总计聚合值”逻辑不符。因为Total_Amount_Of_Miles本身是基于上下文聚合的结果,必须通过CALCULATE结合上下文清除函数,直接获取总计维度的聚合值。

内容的提问来源于stack exchange,提问作者AnOrdinaryPing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:20:49