csv - 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 相互划分并创建带有结果的新表?
解决方案
创建一个转换并添加以下步骤:
- 读取 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。
推荐阅读
- android - 清单合并失败-appcomponentfactory
- python - Flask 中的蓝图和模板有什么区别?
- apache-kafka - 如何解决 zookeeper.properties 文件丢失错误
- php - 无法从选择查询中获得响应
- c - 检查一个整数是否可以表示为数组中整数的线性组合
- mongodb - 查找具有两个相等元素的 MongoDB 数组
- c++ - 父母的静态变量是否保证在孩子的静态变量之前被初始化?
- mysql - 选择不在 GROUP BY 子句中的列
- python - 应用 K 意味着对 3 个暗数据进行聚类
- database-design - 如何单独保存单个用户的日常输入,以便以后可以在数据库中访问?