Power BI迁移Excel重复项标记公式失效,全返回0求助
解决Power BI中标记重复数据首条为1、其余为0的问题
原公式错误原因
你编写的公式中,两个COUNTROWS(FILTER(...))的条件完全一致,都是统计当前number对应的所有记录行数。由于当前行本身就属于该组,COUNTROWS的结果必然≥1,第一个IF条件始终为真,因此所有行都返回0。
正确实现方法
要实现“首个重复条目赋值1,后续条目赋值0”的效果,需要基于唯一排序依据(比如索引列、日期列等)对每个number组内的行排序,标记排序第一的行为1,其余为0。
方法1:使用RANKX函数(需唯一索引列)
先确保表有唯一索引列(可通过Power Query添加「索引列」,或使用表的主键),再创建计算列:
Duplicate = VAR CurrentNumber = 'KB Article usage'[number] VAR RowRank = RANKX( FILTER('KB Article usage', 'KB Article usage'[number] = CurrentNumber), 'KB Article usage'[Index], // 替换为你的唯一索引列名称 , ASC, DENSE ) RETURN IF(RowRank = 1, 1, 0)
方法2:使用COUNTROWS统计前置记录数
同样依赖唯一索引列,通过统计当前行之前的同number记录数判断是否为第一条:
Duplicate = VAR CurrentNumber = 'KB Article usage'[number] VAR CurrentIndex = 'KB Article usage'[Index] RETURN IF( COUNTROWS(FILTER('KB Article usage', 'KB Article usage'[number] = CurrentNumber && 'KB Article usage'[Index] < CurrentIndex)) = 0, 1, 0 )
无索引列的替代方案
如果没有索引列,可利用表中唯一标识行的字段组合(比如日期字段),按日期排序取最早的记录标记为1:
Duplicate = VAR CurrentNumber = 'KB Article usage'[number] VAR FirstDate = MINX(FILTER('KB Article usage', 'KB Article usage'[number] = CurrentNumber), 'KB Article usage'[created_date]) RETURN IF('KB Article usage'[created_date] = FirstDate, 1, 0)
内容的提问来源于stack exchange,提问作者Enrique Santos
相关产品推荐
相关产品推荐

