合并来自两个来源的列
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 行作为您的预期结果,您需要在每个来源中有一个唯一的匹配行。
- 为两个源添加 window 转换并根据 ID 列获取
rowNumber()
。
来源1->window1:
Window1数据预览:
来源2->window2:
Window2数据预览:
- 添加连接转换以连接来自 window 转换的 ID 和排名列数据。
加入数据预览:
- 添加 select 转换以删除不需要的列。
Select数据预览:
我有两个来自数据流转换的来源:
我试过使用 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 行作为您的预期结果,您需要在每个来源中有一个唯一的匹配行。
- 为两个源添加 window 转换并根据 ID 列获取
rowNumber()
。
来源1->window1:
Window1数据预览:
来源2->window2:
Window2数据预览:
- 添加连接转换以连接来自 window 转换的 ID 和排名列数据。
加入数据预览:
- 添加 select 转换以删除不需要的列。
Select数据预览: