第6天知识点:左右合并常见问题汇总。
什么是左右合并呢?左右合并就是将两张表通过关键字段联合在一起形成一张新表。FineBI中左右合并包括:左合并、右合并、交集合并、并集合并。
该功能与Excel中的Vlookup函数功能以及SQL中的JION函数类似。
这张图大家肯定都不陌生吧,其实左右合并关系就是以前学过的集合,能理解这几种集合关系,那左右合并肯定也不成问题。但有一些小伙伴在实际操作过程中常常会有以下问题:
问题一:在实际业务场景中不知道该使用哪种合并方式。
问题二:我明明使用的是左合并,怎么实现的结果不对,像是并集合并计算的结果呢?这应该也是很多初学小伙伴最困惑的点。
下面我们就通过案例来看一下这些问题产生的原因及解决方式吧。
首先,大家要了解几种合并方式的功能及输出的结果是什么?
左合并:类似于Excel中的Vlookup或者SQL中的left join,一般做正向查询
右合并:类似于Excel中的Xlookup或者SQL中的right join,一般做反向查询
交集合并:类似于SQL中的inner join,结果为两张表的相同数据
并集合并:类似于SQL中的full join,结果为两张表的联合
不理解的话也没有关系,记住下面这张图。
(图片来源:帆软官方帮助文档)
看完有没有一点豁然开朗的感觉了?那么现在重点来了,已知有两张数据表:
表1【员工信息表】:记录员工架构、员工号、姓名、是否在职、司龄等数据
表2【员工销售业绩表】:记录员工号、员工姓名、员工各月销售业绩等数据
观察发现:
(1)员工信息表与员工销售业绩表之间有相同的字段【员工号】,且员工信息表中【员工号】唯一,即一个员工号只对应一个员工,和身份证号是你唯一的号码牌一个道理
(2)员工信息表包含了在职与离职员工
(3)员工信息表中一个员工只有一条数据,但员工销售业绩表中一个员工有三条记录,分别对应着4、5、6三个月份的销售收入
假设需要查看在职员工的业绩,应该选用哪种合并方式呢?
有小伙伴可能会说,【员工销售业绩表】中不是已经有员工的业绩数据了吗,直接用这张表就好了呀,都用不到左右合并这个功能吧。
有这样疑问的小伙伴可以再回看这个案例的假设条件,假设条件中有一个限制词在职员工,而这个词的关联字段只存储在【员工信息表】(本案例的合并表)中。
因此,想要查看在职员工的业绩,一种方式(左合并方式)是将【员工销售业绩表】中的【销售额】字段匹配到【员工信息表】,另一种方式(右合并方式)是将【员工信息表】中的【是否在职】字段匹配到【员工销售业绩表】中。
所以答案是左合并或者右合并都可以。
左合并结果:
右合并结果:
首先,观察一下选用的合并方式是不是对的,如果不对,重新选择合适的合并方式,如果是对的,那么继续梳理一下两张表之间存在的逻辑关系,仍以上表数据为例:
案例需求:
想统计在职员工6月的销售业绩(这里注意与问题一相比又多了一个限制条件:6月)
错误步骤:
点击【员工信息表】--选择左右合并--选择左右合并的表【员工销售业绩表】--合并方式选择左合并--合并依据选择【员工号】--过滤,过滤条件为【是否在职】属于在职。结果如下图所示:
有细心的小伙伴可能发现这结果看上去好像哪里不太对,只有2个在职员工,对应应该只有2条数据,为什么最后结果表会有6条数据,这不对,但问题在哪呢?
没错,问题就出现在【员工销售业绩表】里的员工号并不是唯一的,【员工销售业绩表】同一个【员工号】有三条数据,导致左合并之后,就会出现2×3=6条数据,即将员工4,5,6三个月的业绩全都匹配过来了,那如果想要实现上述的案例需求,该怎么办呢?
方式一:先将【员工销售信息表】里的数据过滤只保留6月的数据,然后通过【员工信息表】左合并【员工销售业绩表】;
方式二:【员工信息表】左合并【员工销售业绩表】之后,在合并之后的大表中过滤只保留6月的数据。
正确步骤(以方式二为例):
点击【员工信息表】--选择左右合并--选择左右合并的表【员工销售业绩表】--合并方式选择左合并--合并依据选择【员工号】--过滤,过滤条件为【是否在职】属于在职且【月份】为6月。结果如下图所示:
这样结果是不是就对了呢?
如果小伙伴左右合并时再遇到结果不对的问题,一定要先检查一下关联表之间是不是存在重复值哦,大概率都是因为合并依据字段在原始表里不是唯一值导致的。
左右合并的功能其实并不难,难的是要理解合并的表之间的关联对应关系,是一对一,一对多,还是多对一,多对多,厘清关联关系后,再根据实际业务场景去选择合适的合并方式。
最后留一个小问题,如果把问题二中的案例需求改成:想统计在职员工二季度的销售业绩,除了将员工业绩通过左右合并的方式全部匹配过来,然后再进行分组汇总求和,有没有简单的一步到位的方式呢?
答案会在明天的内容中揭晓哦~
今天的学习内容就到这里,感兴趣的小伙伴自己动手试一试吧! |