Power BI中基于TOPN度量值筛选符合条件的次高值求助
问题分析与解决
你的问题核心在于MaxMovingAverageSecond这个度量值返回的是表对象(TOPN返回的是一行的表),而非单个标量值。当你在FILTER的条件里直接引用它时,上下文计算逻辑会混乱,导致筛选不出符合条件的结果。
修正步骤
1. 先修正MaxMovingAverageSecond为标量值度量
把TOPN返回的表转换成单个值,用SELECTEDVALUE提取唯一值:
MaxMovingAverageSecond = SELECTEDVALUE( TOPN(1, VALUES('Main Table'[Seconds]), [DifferenceBetweenAverages10Seconds], DESC )[Seconds] )
2. 调整NextMaxMovingAverageSecond度量
确保筛选条件里引用的是标量值,同时保持TOPN和CALCULATE的逻辑正确:
NextMaxMovingAverageSecond = VAR TopSecond = [MaxMovingAverageSecond] VAR FilteredSeconds = FILTER( ALL('Main Table'[Seconds]), 'Main Table'[Seconds] > TopSecond + 30 ) RETURN SELECTEDVALUE( TOPN(1, FilteredSeconds, [DifferenceBetweenAverages10Seconds], DESC)[Seconds] )
为什么这样改?
- 用
SELECTEDVALUE把TOPN返回的单行表转换成具体数值,确保后续筛选时是明确的标量条件 - 用变量
TopSecond存储计算好的最大值,避免在FILTER里重复计算度量值,减少上下文冲突 - 最后同样用
SELECTEDVALUE提取次高值的单个结果,避免返回表对象导致显示空白
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

