CALCULATETABLE函数报错:多列无法转换为标量值
DAX CALCULATETABLE 筛选报错问题解决
错误原因
你用ALL(fWMSL_VibrationsAppended[Velocity Overall,in/sec])作为FILTER的第一参数,得到的是仅包含该列的单值列表。但筛选条件里直接引用原表的完整列fWMSL_VibrationsAppended[Velocity Overall,in/sec],此时DAX无法在单列表的上下文中关联原表的完整行记录,导致抛出「表达式引用了多个列。多个列无法转换为标量值」的错误。
正确写法
1. 保留现有筛选上下文(如切片器、其他筛选器的作用)
tbExcess Vel OA Lim := CALCULATETABLE( fWMSL_VibrationsAppended, FILTER( fWMSL_VibrationsAppended, [Velocity Overall,in/sec] > 1.25 ) )
这里FILTER遍历原表的每一行,直接引用当前行的[Velocity Overall,in/sec]列进行判断,上下文匹配,不会出错。
2. 忽略所有外部筛选上下文,取全表符合条件的行
如果需要完全移除其他筛选器的影响,直接从整张表中筛选:
tbExcess Vel OA Lim := CALCULATETABLE( fWMSL_VibrationsAppended, FILTER( ALL(fWMSL_VibrationsAppended), [Velocity Overall,in/sec] > 1.25 ) )
这里用ALL(fWMSL_VibrationsAppended)获取无筛选的完整表,FILTER遍历全表行进行判断。
内容的提问来源于stack exchange,提问作者hic24
相关产品推荐
相关产品推荐

