跳到主要内容
版本:6.3.0

有同名字段的两个表如何在ETL里实现全关联

场景描述

实际业务中,业务数据一般会存放在多张不同的表,例如商品表,促销表,交易表等。做数据分析时,往往需要多表关联取数。例如现在有如下两张表,左表和右表,需要以‘A’为关联条件做全关联。

image.png

  1. 如果只勾选左表的字段‘A’,得到的结果是:

image.png

2. 如果只勾选右表的字段‘A’,得到的结果是:

image.png

以上情况行数是对的,但值不全。

产生原因

虽然两张表都有'A'字段,但其实这是两个不同的字段,分别是左表.A,右表.A。并且他们的值不是全包含关系。为了取到所有‘A’字段的值,我们必须在全关联时保留这两列。

解决步骤

  1. 将其中一个字段‘A’重命名,比如左表的'A'重命名为‘A1’。

  2. 以'A1'和'A'进行全关联,并选中 'A1'和'A'两列及其他需要的列。

image.png            

  1. 但实际操作中,我们往往需要的是如下效果,可以使用COALESCE()函数解决。方法如下:

image.png            

1)新建列,并用COALESCE(A1,A)取出所有的'A'列值。

2)再进行选择列和null值替换(如有null值的话)。

image.png

3)如果两表中存在多个同名字段,可以重复这样的操作。