power bi建模时无法创建关系


转载自师数,原文链接: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)

你可能感兴趣的:(power bi建模时无法创建关系)