PowerBI数据建模时,应该都碰到这样的问题,以案例模型中产品表和订单表通过产品名称来建立关系为例,当你想让产品表与订单表建立一对多的关系时,却弹出这样一条提示:
此关系的基数是多对多。仅在两列预期都不包含唯一值,且多对多关系的显著不同行为得到理解的情况下,才应使用此关系。
这个提示是提醒你该关系是多对多关系,并不是报错,如果你的数据结构的确是两个表的关联字段都有重复值,在理解多对多关系的情况下,也是可以直接创建这样的关系的。但是如果你认为产品表的产品名称不含有重复值,想要可以建立一对多关系的,却无法建立,这时就要排查原因了,一般情况下,出现这个提示是由于下面两种情况:
有空值的字段无法成为关系的“一”端,解决的办法就是检查数据源,把产品名称含有空值的行删掉,或者直接在PowerQuery中将这一列的空白项筛选出去。虽然你感觉应该没有重复值,但是既然有这个提示,并且也确实不是空值造成的,那么就肯定有重复值。可以去表格视图中,打开产品表,选中产品名称列来看看下方的提示:表有13行,但是这一列只有12个非重复值,那就说明肯定有2行是相同的值。如何知道哪个值有重复呢?如果数据量很少,可以一眼看出来,但是数据量大的话,只靠肉眼观察就效率太低了。想找出来其实也并不难,只需要拉个表格,将产品表的产品名称拖拽两次放到表格里:
知道了哪个有重复项以后,只需要去调整数据源,或者去PowerQuery中删除重复项,就可以建立一对多的关系了。如果你之前建立了一对多的关系,但是数据更新后,一端表的关联字段出现了重复值或者空白值,也会导致刷新报错:出现这种情况,先把该关系删掉,按照以上方式解决以后,再重新建立关系即可。
以上就是在用PowerBI建模时可能会遇到的问题,更多关于数据建模的问题可参考:
Power BI数据建模,你遇到的各种问题,原来可以这样轻松解决
PowerBI星球的最新版内容合辑,值得你收藏学习: