转载自师数,原文链接:https://zhouchen.tech/2017/12/14/power-bi%E5%BB%BA%E6%A8%A1%E6%97%B6%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%E5%85%B3%E7%B3%BB/
关系/relationship,也就是不同数据表格的字段上建立起来联系,在创建关系之后,可以跨表进行数据处理和分析。建立关系也非常简单,将一个字段拖到另一个字段的时候就可以创建关系了。
但是在尝试创建关系的时候往往会碰到这样的报错信息:`you can't create a relationship between these two colums because one of the columns must have unique values` 。从报错信息中已经看出来问题出在两个字段都包含重复数值。建立关系有点像建立外链,需要其中一个是主键,而作为主键必须有**唯一性**。
#### 确定是否有重复
每次碰到这个这个问题都会觉得很懵逼,毕竟**目标字段是经过`group by`统计的**,理论上不应该出现重复的了,但是确实会碰到上面的问题。
问题可能是由于power bi对字段数据进行了额外的trim等操作,**导致本来不同的数值变成了相同的数值**,从而出现了这种情况。但是怎么确认呢?
##### Card/卡片可视化模型
Card,顾名思义是一种展示数据的卡片。用这个模型,可以快速的计算一个字段中所包含数值的个数、去重数值的个数等。
![两种card对比](http://tuchuang-zc.oss-cn-shenzhen.aliyuncs.com/site-pictures/card去重.PNG)
上图左侧是`model` 字段所包含的数据量,右侧是去重后`model`字段的数据量。两者有差异,说明确实有数据重复的情况。
#### 找到重复的数据
通过`Table`设置查看每个model的数量,结果如下图:
![](http://tuchuang-zc.oss-cn-shenzhen.aliyuncs.com/site-pictures/model_数值.PNG)
从上图可以看到有三个字段确实重复了。
#### 删除重复的字段
##### 通过QueryEditor?
在`QueryEditor`中有一个功能`Remove Rows -> Remove Duplicates`,能否通过这个功能实现删除重复的字段,答案是否定。
只有行中的所有数值都重复了才能通过这种方式来去除重复。
##### 修改数据源
通过`Query Editor` 做出的操作都是制定一系列的步骤/Steps,来完成对数据的ETL,暂时还没有发现如何删除特定的数值,那么**只好在数据的源头做工作**。
> 一般的数据源头是数据库或者文件。
在更新数据源文件之后,更新下数据就解决了创建关系时碰到的问题,可以对两个字段创建关联关系了。
#### 建模时无法创建关系的根本原因
不过为什么`group by`操作后的数据还是会出现数据重复的原因,在对比了数据源文件之后发现,**power bi不区分大小写**,而不是在文章开头的猜测。
至于巨硬的微软这么搞,看来还是有历史原因的。
[为什么微软不修正透视表不区分大小写的问题?](https://www.zhihu.com/question/57646272)
网友评论