合并来自两个来源的列

Combine columns from two sources

我有两个来自数据流转换的来源:

我试过使用 join,它会复制数据,无论 join I select 它输出类似的东西:

我也尝试过并集,但并集在列(如果按名称完成)或行(如果按位置完成)中创建 null

连接不应该只是将列连接在一起,因为两者中的 ID 相同 table。

这是所需输出的外观: 我想将版本列连接到第一个源,这样它看起来像这样:

 ID       name    value    version
 111     file1      0.1        3
 111     file2      0.82      15
 111     file3      2.2         2

这在联接中是预期的。例如,当您在 SQL 中连接表时,您还提供了目标投影作为 select 语句的一部分。您需要在这里做的是在 Join 转换之后添加一个 Select 转换。在那里,您将把投影减少到仅要保留的列。您将能够选择要为 ID 列保留哪一侧(左侧或右侧)。

您的两个源文件只有一个匹配列 (ID),并且不是唯一的。 当您在 ID 列上连接两个源时,source1 的每一行都与 source2 的所有匹配行连接。

此处,source1 的第 1 行 (111) 与 source2 的所有 3 个匹配行 (111) 相连接,因此结果为source1 中每行具有不同版本值的 9 行。

要仅获得 3 行作为您的预期结果,您需要在每个来源中有一个唯一的匹配行。

  1. 为两个源添加 window 转换并根据 ID 列获取 rowNumber()

来源1->window1:

Window1数据预览:

来源2->window2:

Window2数据预览:

  1. 添加连接转换以连接来自 window 转换的 ID 和排名列数据。

加入数据预览:

  1. 添加 select 转换以删除不需要的列。

Select数据预览: