今天分享星友投稿的第3篇文章,星友“合理然”给大家带来他在PowerBI中建立关系时遇到的问题及其解决办法。
PowerBI建立关系失败?来试试这个办法
作者:合理然
让我们先熟悉一下PowerBI中的各种关系。
数据建模中一共有四种关系:
分别是,
多对一
一对一
一对多
多对多
我们通常用的最多的是多对一关系,和一对多其实意思相同,就是用数据的多端与一端建立联系。
那什么叫多端,什么叫一端呢?
举个例子:
订单明细表的客户ID与客户信息表里的客户ID建立关系,订单明细表就是多端,因为这个客户可能不止消费一次,也就是说不止产生一个订单;
而客户信息表就是一端,因为客户信息表里的客户是唯一值,不可能出现第二个一模一样的客户。
多端-订单明细表
客户名称可以有重复项
一端-客户信息表
客户名称是唯一值
理解了多端和一端的含义,一对一和多对多自然也就好理解了。
一对一关系如图:
零售企业通常会对目标客户进行任务分配,如果我们想知道,每个地区的总目标任务是多少就可以把信息表里的客户名称和任务表里的客户名称做一对一关联即可。(注意,无论这两个哪张表,客户名称都必须是唯一值才能建立一对一关系,而且你会发现这种关系下,再使用related和relatedtable函数就畅通无阻了)
多对多关系 相对复杂一些,我不敢妄加解释,这里我转载佐罗老师的一段话,在以下业务场景下都会涉及到多对多关系:
不同类产品卖给过多少客户?
不同行业职业客户买过多少种产品?
不同省份提供过多少种产品?
不同类产品从多少个城市进过货?
解决多对多问题的第一步是识别多对多问题,例如:一种产品可能卖发给过多个客户,一个客户可能买过多种产品。因此,这种产品与客户的购买关系就是多对多的。
解释完了以上几种关系后,我就详细说一下我在工作中遇到的实际问题以及我是如何解决的?
我想要查看按地区划分的销售情况,于是想要把订单表与包含客户信息的建立起多对一的关系,但是发现建立不了:
您选中的基数对于此关系无效!!!
在问询了星主后获知,一般有两种情况:
1.多对一的一端有重复值
2.表里有错误或者空行
于是我打开了excel源文件,找到了这张客户表,选中所有列+删除重复值一气呵成。
未发现重复值!
其实我在制作这张客户表的时候,都会时不时清除一下重复值,保存之前都要好好检查一下。
可这就奇怪了,没有重复值,也没有错误和空值,难道是excel 传到power BI的过程中会出现什么错误吗?那我就在power BI 里面再操作一遍看看会不会好用。
于是我编辑查询,删除重复项,删除空值,删除错误,关闭应用,又是一气呵成,熟练的操作让我差点以为自己是个power BI 大神,结果依旧....
我就偏偏不信邪,肯定有哪里是我疏忽了。
我用客户表做了一张数据透视表,行为客户名称,值也为客户名称,这样如果有一个客户名称后面的值为2 ,说明还在存在重复值
虽然值全为1 ,但是在排查的过程中,我突然发现了这个,
咦,象山蓬莱大药房与象山蓬莱大药房,这两个一模一样没区别啊,为什么系统要默认为两个呢?
他们俩个其中肯定存在空格或者其他隐藏字符肉眼看不见。
此时我突然想起了power query里面的 格式 清除和修整:
清除:删除所选列中的非打印字符
修整: 从所选单元格内删除前导空格和尾随空格
我大胆断定问题就在此,我先修整,再清除,最后删除重复项
此时再次将两个表建立关系。
哈哈,成功了!
在这里感谢星主大人不厌其烦的解释。
也希望自己在Power BI的道路上,坚持前行。
谢谢大家!
【结尾的话】
星友合理然遇到的这个问题很普遍,尤其是对于初学者,本来一腔热血准备利用PBI大干一番呢,结果却在第一个步骤建立关系时就遇到挫折,使尽浑身解数都没法解决。
死磕精神应该有,但你遇到的坑很可能其他人早已遇到过,所以碰到问题时有人可以咨询,会节省你大量宝贵的时间哦。
再次感谢合理然的分享,下次如果你也遇到了这个问题,可以试试他的办法哦。
- 欢迎投稿 -
「PowerBI星球」诚邀广大星友投稿,只要和PowerBI主题相关的都可以,比如PowerBI技巧、PowerBI数据分析案例或者学习心得体会等;
稿件入选后,不仅可以获得稿费,还可以免费加入我的知识星球;公众号发布时会标识原创作者,多次投稿者更有机会成为知识星球的嘉宾,和我一起运营PowerBI星球,享受更多权益。
欢迎热爱PowerBI并乐于分享的小伙伴,加入「PowerBI星球」创作者团队!
/推荐阅读/
关注微信公众号:PowerBI星球,获取更多学习资源
网友评论