ETL - 如何将表标题作为字段值添加到Pentaho Spoon中的每个后续行

时间:2016-12-13 22:13:34

标签: excel pentaho etl kettle spoon

我是Pentaho Spoon(K​​ettle)的新手,有以下任务:

有一个excel表,它可能看起来像这样:

history class
name      first name    id
Doe       John          213
Muster    Max           118
biology class
name      first name    id
Parker    Peter         844

问题是一个xls文件中有更多的表。在这个例子中,有一个表用于历史课的学生和生物课的学生。

我需要输出的内容:所有学生的表格,每个学生都有一个新的领域,说明他属于哪个班级。例如:

name      first name   id        class
Doe       John         213       history class
Muster    Max          118       history class
Parker    Peter        884       biology class

(我的例子非常简化)

如何将输入表转换为输出表? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您通常无法在pentaho中使用多个表解析excel。即最好的方法是为不同的表格提供多张表格。

如果不可能,则至少有两个选项:

  1. 查找最大cols数并使用字符串类型手动指定cols(因为一列的内容可能不同 - 数字,字符串等),然后根据某些规则解析行
  2. 使用POI将新的工作表内容提取到文本 - 新的XSSFExcelExtractor(新的XSSFWorkbook(新文件(fileName)))。getText() - 然后使用java解析它。
  3. 以下是您的简单案例的选项1.

    1. Excel输入字段(标题未选中!):
    2. enter image description here

      1. JS步骤,添加包含当前类名的className字段:
      2. enter image description here

        第二步后的结果:

        enter image description here

        1. 最后一步 - 我们过滤掉标题行(即名字为空或="名字"。
        2. 结果:

          enter image description here