首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在水壶中填写流道标题

在水壶中填写流道标题
EN

Stack Overflow用户
提问于 2012-12-18 23:45:42
回答 1查看 180关注 0票数 1

我有一个地区级数据的XLS文件,其中每个地区都在一个地区中。但region列仅为区域中的第一个地区填充。类似于:

代码语言:javascript
复制
District  Region Population
Foo       Bar    1234
          Baz    345
          Qux    69
Quux      Zob    1234
          Bax    42

诸若此类。我如何处理它,使空的区域字段填充正确的区域值(用于最终输出到CSV,但我可以执行此操作)以获得:

代码语言:javascript
复制
District  Region Population
Foo       Bar    1234
Foo       Baz    345
Foo       Qux    69
Quux      Zob    1234
Quux      Bax    42

我实际上是用Shapefile 2.0来做这件事的--最终这一切都会出现在一个GeoKettle文件中。

EN

回答 1

Stack Overflow用户

发布于 2013-07-05 21:07:11

我不认为你会有一个通用的步骤来进行这种转换,就像@Brian所说的,大多数PDI步骤都是用真正的表格数据工作的。但在这些情况下,您可以通过一个简单的修改Java脚本步骤来解决它。

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

首先,插入一个修改过的Java脚本,并将其连接到已有的流中。打开该步骤,右键单击脚本的标题(选项卡),然后选择"Add new“。在这个新脚本中只插入:

代码语言:javascript
复制
var lastDistrict;

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

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

代码语言:javascript
复制
if ((District == null) || (trim(Distict) == "")) {
    newDistrict = lastDistrict;
} else {
    newDistrict = District;
    lastDistrict = District;
}

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13936523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档