Power BI德语版计算Trimmed Mean报错:Percent语法错误求助
问题解决:Power BI德语版计算修剪均值的语法错误及修复
直接报错原因
德语版Power BI默认使用逗号(,)作为小数分隔符,你代码中VAR Percent = 0.5的点号(.)不符合德语区域的语法规则,这是触发"Wrong Syntax for 'Percent'"错误的直接原因,需改为0,5。
代码逻辑错误修复
除了小数分隔符问题,你的DAX代码还有两处核心逻辑错误:
- DAX中不存在独立的
SORT函数,无法直接用它对表排序; - 不能通过
SortedValues[MinIndex][table[Thickness_mm]]这种方式按索引直接访问表中的值,DAX需要用专用函数获取指定位置的数值。
修复后的DAX代码(兼容德语版)
以下是两种可行的实现方案:
方案1:使用RANKX筛选中间区间值
Trimmed Mean = VAR TrimPercent = 0,5 // 德语版用逗号作为小数分隔符 VAR TotalCount = COUNT(table[Thickness_mm]) VAR TrimCount = ROUND(TotalCount * TrimPercent, 0) -- 生成带排名的厚度值表 VAR RankedValues = ADDCOLUMNS( ALLSELECTED(table[Thickness_mm]), "@Rank", RANKX(ALLSELECTED(table[Thickness_mm]), table[Thickness_mm],, ASC, DENSE) ) -- 计算修剪后的总和(排除前后TrimCount个值) VAR TrimmedSum = SUMX( FILTER( RankedValues, [@Rank] > TrimCount && [@Rank] <= TotalCount - TrimCount ), table[Thickness_mm] ) VAR TrimmedCount = TotalCount - 2 * TrimCount -- 避免除以0的情况 RETURN IF(TrimmedCount > 0, TrimmedSum / TrimmedCount, BLANK())
方案2:使用TOPN计算首尾修剪值总和
Trimmed Mean = VAR TrimPercent = 0,5 VAR TotalCount = COUNT(table[Thickness_mm]) VAR TrimCount = ROUND(TotalCount * TrimPercent, 0) VAR AllThicknessValues = ALLSELECTED(table[Thickness_mm]) VAR TotalSum = SUM(table[Thickness_mm]) -- 计算需要修剪的最小N个值的总和 VAR BottomSum = SUMX(TOPN(TrimCount, AllThicknessValues, table[Thickness_mm], ASC), table[Thickness_mm]) -- 计算需要修剪的最大N个值的总和 VAR TopSum = SUMX(TOPN(TrimCount, AllThicknessValues, table[Thickness_mm], DESC), table[Thickness_mm]) VAR TrimmedSum = TotalSum - BottomSum - TopSum VAR TrimmedCount = TotalCount - 2 * TrimCount RETURN IF(TrimmedCount > 0, TrimmedSum / TrimmedCount, BLANK())
注意事项
- 确保你的Power BI Desktop版本支持所用函数(
RANKX为通用函数无版本限制;若使用INDEX函数需2022年11月及以后版本); - 将代码中的
table替换为你实际使用的表名。
内容的提问来源于stack exchange,提问作者Gaaaa
相关产品推荐
相关产品推荐

