Power BI中使用DISTINCTCOUNTNOBLANK做除法运算失效问题排查
问题原因及修复方案
核心原因:筛选上下文干扰
DISTINCTCOUNTNOBLANK(shocks[ID])未返回预期值2,本质是DAX的筛选上下文在起作用:
- 当你在图表中使用这个度量值时,图表的行、列维度或切片器会自动对
shocks表应用筛选,导致每个数据点对应的上下文里,ID的唯一计数变成当前筛选范围内的数值,而非全局总计数2。 - 静态值
2不受任何筛选上下文影响,所以每个数据点都用固定值计算,结果符合预期。
修复方法
要让DISTINCTCOUNTNOBLANK返回全局的ID唯一非空计数,需用CALCULATE强制修改筛选上下文,清除不必要的筛选:
方案1:清除全表筛选(获取全局计数)
PostCounter = DIVIDE( [你的分子度量值], CALCULATE(DISTINCTCOUNTNOBLANK(shocks[ID]), ALL(shocks)) )
ALL(shocks)会清除对shocks表的所有筛选,确保计算的是整个表中ID的唯一非空总数。
方案2:保留外部筛选(仅清除图表维度筛选)
如果报表有外部切片器(如其他表的筛选条件)需要保留,用ALLSELECTED替代ALL:
PostCounter = DIVIDE( [你的分子度量值], CALCULATE(DISTINCTCOUNTNOBLANK(shocks[ID]), ALLSELECTED(shocks)) )
ALLSELECTED会保留用户通过切片器设置的全局筛选,仅清除图表行/列维度带来的局部筛选。
方案3:精准清除单列筛选
如果只需要清除shocks[ID]列的筛选(而非整个表),可指定列范围:
PostCounter = DIVIDE( [你的分子度量值], CALCULATE(DISTINCTCOUNTNOBLANK(shocks[ID]), ALL(shocks[ID])) )
验证方式
单独创建度量值TestCount = CALCULATE(DISTINCTCOUNTNOBLANK(shocks[ID]), ALL(shocks)),将其添加到图表中,确认是否返回预期的2,以此验证上下文修改是否生效。
内容的提问来源于stack exchange,提问作者matt_vice89
相关产品推荐
相关产品推荐

