PP-数据建模:明明删除了重复项,为什么还是说有重复值?

2021-08-30 14:33:13 浏览数 (1)

最近,有朋友在用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中被忽略(删除)了!大家还可以尝试用更多的方法去验证它。

不过,这个找到问题原因的过程,希望对大家有点儿启发。

——感谢您的耐心阅读!

0 人点赞