PP-数据建模:明明删除了重复项,为什么还是说有重复值?
最近,有朋友在用Power Pivot构建表间关系的时候,出现了一个问题:明明我已经删除了重复项,但构建表间关系的时候,还是说我两个表都有重复的数据!结果表间关系建立不起来!
——按道理来说,Power Pivot出来也这么多年了,不至于会犯这么低级的错误!但是,我又绝对相信这些朋友既然能将问题提到这种程度,肯定也是做了删除重复项的操作。
于是,怀着好奇之心要来了数据,仔细查看对比后,终于发现了问题——这个情况真的很特殊,需要非常的注意!
我下面模拟一份数据来简单说明一下这种情况。如下图所示,以姓名列为基础进行删除重复项:
结果没有找到重复值:
为什么呢?表中的第2/3,4/5,6/7,8/9看起来不是一样的吗?
——实际上不是的,在3/5/7/9行的姓名中,后面都多了一个空格!所以,它们实际是不一样的,我们也可以做个数据透视表看看:
但是,如果我们把这些表放到Power Pivot中,然后构建表间关系,结果就出错了!
那到底是为什么呢?
我们先通过非重复计数函数来算一下,到底有没有重复的数据:
好嘛!表中明明有9行数据,非重复计数的结果却是5!说明其中必定有重复数据——即在Excel中不是重复的数据,但到了Power Pivot里出现重复了!
那么,其中到底哪些数据重复了?
我们通过Power Pivot里的数据透视功能看看:
结果如下图所示,真的很多都重复了,你看那些计数为2的!
但是,到底是谁跟谁重复了呢?我们挑其中一个双击出明细(比如数据透视表里最后1行的“小勤”),看看到底是哪2行:
显然,这是第2和第3行的数据。但我们在Excel里第2和第3行的姓名差别就在于:第3行中的姓名,后面多了一个空格!
至此,谜团终于揭开,并且,可以简单总结一下了:
1、如果相同的内容,一个后面没有空格,而另一个后面有空格,那么,在Excel里面,这是两项不一样的内容,也不能通过删除重复项清除(在Power Query里也同样不能);
2、但是,对于Power Pivot来说,无论后面是否有空格,在数据添加到数据模型时,文本后面的空格会被删除(我们可以从模型中将数据复制到Excel中查看),因此会被识别为重复项;
3、空格在前面的情况不会被处理,即相同的内容,如果一个前面有空格,而另一个没有,那么无论在Excel、Power Query还是Power Pivot中,都会被当做不同的项目。
啰啰嗦嗦写了这么鬼长,其实就一个核心知识点:文本后面的空格在Power Pivot中被忽略(删除)了!大家还可以尝试用更多的方法去验证它。
不过,这个找到问题原因的过程,希望对大家有点儿启发。
——感谢您的耐心阅读!