DAX中SUMMARIZECOLUMNS用FORMAT函数为何显示日期表空行?
FORMAT函数导致SUMMARIZECOLUMNS返回无关联数据行的原因
核心原因在于FORMAT函数对空值的处理逻辑,以及SUMMARIZECOLUMNS的默认过滤行为:
- 原始查询中,当某组
Date[Year]+Date[Month]没有对应销售数据时,[Sales Amount]返回BLANK()。SUMMARIZECOLUMNS默认会自动过滤掉度量值结果为BLANK()的行,因此你看不到无数据的日期维度行。 - 使用
FORMAT([Sales Amount], "$#,0.00")后,函数会把BLANK()转换为空字符串("")——空字符串不属于BLANK()范畴,SUMMARIZECOLUMNS不会过滤非BLANK()的结果,所以那些没有销售数据的日期组合就会被保留,表现为出现无关联数据的年份行。
验证逻辑
单独执行以下DAX表达式可以直观看到差异:
EVALUATE ROW( "原始空值", BLANK(), "FORMAT处理后的空值", FORMAT(BLANK(), "$#,0.00") )
结果中FORMAT处理后的空值会返回空字符串,而非BLANK()。
解决方法
如果要保留格式化效果同时过滤无数据行,可以先判断度量值是否为BLANK(),再决定是否格式化:
EVALUATE SUMMARIZECOLUMNS( 'Date'[Year], 'Date'[Month], "Sales", IF(ISBLANK([Sales Amount]), BLANK(), FORMAT([Sales Amount], "$#,0.00")) )
内容的提问来源于stack exchange,提问作者Gary Thomann
相关产品推荐
相关产品推荐

