我有一个地区级数据的XLS文件,其中每个地区都在一个地区中。但region列仅为区域中的第一个地区填充。类似于:
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我实际上是用Shapefile 2.0来做这件事的--最终这一切都会出现在一个GeoKettle文件中。
发布于 2013-07-05 21:07:11
我不认为你会有一个通用的步骤来进行这种转换,就像@Brian所说的,大多数PDI步骤都是用真正的表格数据工作的。但在这些情况下,您可以通过一个简单的修改Java脚本步骤来解决它。
我们在这里要做的是编写一个脚本,将最后一个非空的District存储为变量lastDistict,并在空行上使用它。
首先,插入一个修改过的Java脚本,并将其连接到已有的流中。打开该步骤,右键单击脚本的标题(选项卡),然后选择"Add new“。在这个新脚本中只插入:
var lastDistrict;右键单击此脚本的标题,然后选择“设置开始脚本”。这样做,您将告诉Kettle仅在第一次使用该步骤时执行var创建,否则您将在每个新行上丢失lastDistrict的值。
在另一个脚本的相同步骤(通常为Script 1)中插入:
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即可。
https://stackoverflow.com/questions/13936523
复制相似问题