填写水壶的标题

时间:2012-12-18 15:45:42

标签: kettle geokettle

我有一个区级数据的XLS文件,其中每个区都在一个区域内。但该地区专栏仅填补该地区的第一个区域。类似的东西:

District  Region Population
Foo       Bar    1234
          Baz    345
          Qux    69
Quux      Zob    1234
          Bax    42

等等。我如何处理它,以便空的区域字段填充正确的区域值(最终输出到CSV,但我可以做到这一点)得到:

District  Region Population
Foo       Bar    1234
Foo       Baz    345
Foo       Qux    69
Quux      Zob    1234
Quux      Bax    42

我实际上是在使用GeoKettle 2.0进行此操作 - 最终这一切都在Shapefile中进行。

1 个答案:

答案 0 :(得分:0)

我认为你不会对这种转换有一个通用的步骤,正如@Brian所说,大多数PDI步骤都适用于真正的表格数据。但在这些情况下,您可以使用简单的Modified Java Script步骤来解决它。

我们要做的是编写一个脚本,将最后一个非空District存储为变量lastDistict,并在空行上使用它。

首先插入Modified Java Script并将其连接到现有的流中。打开该步骤,右键单击脚本标题(选项卡),然后选择“添加新”。在这个新脚本中只插入:

var lastDistrict;

右键单击此脚本的标题,然后选择“设置启动脚本”。执行此操作,您将告诉Kettle仅在第一次使用该步骤时执行var创建,否则您将在每个新行上丢失lastDistrict的值。

在同一步骤的另一个脚本上(通常为Script 1)插入:

if ((District == null) || (trim(Distict) == "")) {
    newDistrict = lastDistrict;
} else {
    newDistrict = District;
    lastDistrict = District;
}

在步骤的底部,您将看到一个名为Fields的网格。创建一个名为newDistrict的新字段,并将其类型设置为String。

现在,您将拥有一个新字段newDistrict,其中包含所有行的值。如果您不想创建新列,只需使用Rename to填充Disctrict并将Replace value 'Fieldname' or 'Rename to'设置为Y