Power BI中按typeName统计CompletedDate为空的重复行问题
问题分析与修正方案
原DAX代码的核心问题是逻辑错误:VAR定义的Dup统计的是所有同typeName的总行数,后续的CALCULATE并未重新计算符合条件的行数,只是在过滤后的上下文里返回这个固定值,导致结果不符合预期。
修正后的DAX写法
1. 计算列(每行显示对应typeName下CompletedDate为空的行数)
如果需要在表的每行显示当前typeName分组中,CompletedDate为空的总行数,使用以下代码:
Duplicate = VAR CurrentTypeName = 'Table'[typeName] RETURN COUNTROWS( FILTER( 'Table', 'Table'[typeName] = CurrentTypeName && 'Table'[CompletedDate] = BLANK() ) )
如果只想标记重复项(即行数>1时显示计数,否则显示空白),可调整为:
Duplicate = VAR CurrentTypeName = 'Table'[typeName] VAR EmptyRowCount = COUNTROWS( FILTER( 'Table', 'Table'[typeName] = CurrentTypeName && 'Table'[CompletedDate] = BLANK() ) ) RETURN IF(EmptyRowCount > 1, EmptyRowCount, BLANK())
2. 度量值(用于可视化分组统计)
如果需要在Power BI可视化中按typeName分组,统计每组内CompletedDate为空的行数(仅展示重复的分组),使用以下度量值:
Duplicate Count = CALCULATE( COUNTROWS('Table'), 'Table'[CompletedDate] = BLANK(), ALLEXCEPT('Table', 'Table'[typeName]) )
或者用分组求和的方式,只汇总重复分组的计数:
Duplicate Count = SUMX( GROUPBY( 'Table', 'Table'[typeName], "@EmptyCount", COUNTX(CURRENTGROUP(), IF('Table'[CompletedDate] = BLANK(), 1, 0)) ), IF([@EmptyCount] > 1, [@EmptyCount], 0) )
内容的提问来源于stack exchange,提问作者JonWay
相关产品推荐
相关产品推荐

