首页 > 解决方案 > pentaho 将 2 列从不同的 csv 中分开

问题描述

在 pentaho 中,我有 2 个 csv 文件,我需要将列相互划分并将结果写入新表。

1.csv

一个
1 10 14
2 8 20

2.csv

一个
1 2 7
2 4 10

输出应该是 output.csv

一个
1 5 2
2 2 12

每个 csv至少有500 行和列。如何将每个 csv 相互划分并创建带有结果的新表?

标签: csvpentahopentaho-data-integration

解决方案


创建一个转换并添加以下步骤:

  • 读取 csv1
  • 读取 csv2

在每次读取 csv 之后,添加一个选择值步骤,重命名列 No、A 和 B,这样就不会混淆列来自哪个文件(您可以跳过此步骤,当您合并两个文件时,您只会重命名列,但是您将无法控制它,或者仅使用一个 Select values 步骤并将列名保留在其中一个文件中,我喜欢在以下步骤中调试信息时添加此步骤以清楚起见)

选择值步骤之后,添加对行排序步骤,按每个数据流的否列排序。

Sort rows步骤之后,您添加一个独特的步骤Merge join,合并两个文件的数据,其中每个文件的No列具有相同的值。

完成此步骤后,您的数据将如下所示:

1号 A1 B1 2号 A2 B2
1 10 14 1 5 2
2 8 20 2 4 10

因此,您只需添加一个执行两个操作的Calculator步骤:

  • A3 = A1/A2
  • B3 = B1/B2

最后添加文本文件输出步骤以创建包含三列的 output.csv:No1(或 No2,两列具有相同的内容)、A3 和 B3。

转换示例


推荐阅读