DAX中SUMX结合FILTER过滤失效,请求技术解决方案
DAX度量值FILTER过滤不生效的解决方法
先明确你的代码场景:
原有度量值:
_RateMeasure = SUMX(myDF, myDF[Amount]*RELATED('Currency Conversion'[RateCol1]))
尝试添加过滤的代码:
_RateMeasure = SUMX(FILTER(myDF, myDF[COL] = "ABC"), myDF[Amount]*RELATED('Currency Conversion'[RateCol1]))
针对过滤未生效的问题,可从以下几个方向排查解决:
大小写或字符串匹配问题
DAX在部分模式(如DirectQuery)下字符串比较区分大小写,如果myDF[COL]的实际值是小写/混合大小写,硬编码的"ABC"会匹配失败。统一大小写即可:_RateMeasure = SUMX(FILTER(myDF, LOWER(myDF[COL]) = "abc"), myDF[Amount]*RELATED('Currency Conversion'[RateCol1]))外部上下文覆盖内部筛选
如果报表的视觉对象或页面已经对myDF[COL]设置了筛选,FILTER里的硬编码条件会被外部上下文覆盖。可以用ALL清除上下文,或者保留其他筛选只清除COL列的筛选:// 清除myDF表所有外部筛选 _RateMeasure = SUMX(FILTER(ALL(myDF), myDF[COL] = "ABC"), myDF[Amount]*RELATED('Currency Conversion'[RateCol1])) // 仅清除COL列的外部筛选,保留其他列的筛选上下文 _RateMeasure = SUMX(FILTER(ALL(myDF[COL]), myDF[COL] = "ABC"), myDF[Amount]*RELATED('Currency Conversion'[RateCol1]))RELATED函数返回空白导致行被忽略
如果FILTER筛选出的myDF行在Currency Conversion表中没有匹配的关联行,RELATED会返回空白,这部分行的计算结果为0,看起来像过滤没生效。可以添加非空判断,同时检查表之间的关联关系是否正确:_RateMeasure = SUMX( FILTER(myDF, myDF[COL] = "ABC" && NOT(ISBLANK(RELATED('Currency Conversion'[RateCol1])))), myDF[Amount]*RELATED('Currency Conversion'[RateCol1]) )数据类型不匹配
检查myDF[COL]的数据类型,如果是数值类型,和字符串"ABC"比较会始终返回False,导致没有行被筛选。需要确保该列是文本类型,或者调整匹配值的类型。
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

