为何DAX中父行减子行返回全部发票号,除法仅返回相关发票号?
优化DAX减法度量值以过滤无数据发票号
问题原因
DIVIDE([Invoice $], CALCULATE([Invoice $], REMOVEFILTERS(Invoices[Invoice]))) 仅显示有[Invoice $]值的发票号,是因为当[Invoice $]为BLANK时,DIVIDE会返回BLANK,而Power BI等可视化工具默认隐藏包含BLANK值的行。
而减法度量值 [Invoice $] - CALCULATE([Invoice $], REMOVEFILTERS(Invoices[Invoice])) 会显示所有发票号,是因为当[Invoice $]为BLANK时,DAX会将其视为0参与运算,得到0 - 总计的非BLANK结果,这些行不会被自动隐藏。
优化方案
通过添加条件判断,确保仅当[Invoice $]不为BLANK时才计算差值,否则返回BLANK,让工具自动过滤无数据行:
方案1:用变量提升可读性与性能
Invoice $ Difference = VAR CurrentAmount = [Invoice $] VAR TotalAmount = CALCULATE([Invoice $], REMOVEFILTERS(Invoices[Invoice])) RETURN IF(NOT ISBLANK(CurrentAmount), CurrentAmount - TotalAmount, BLANK())
方案2:简洁版条件判断
Invoice $ Difference = IF( NOT ISBLANK([Invoice $]), [Invoice $] - CALCULATE([Invoice $], REMOVEFILTERS(Invoices[Invoice])), BLANK() )
效果说明
优化后的度量值会在[Invoice $]为空时返回BLANK,可视化工具会自动隐藏这些行,最终仅显示有[Invoice $]值的发票号,与DIVIDE版本的显示逻辑一致。
内容的提问来源于stack exchange,提问作者Cody
相关产品推荐
相关产品推荐

