分享

Pentaho中国爱好者社区在kettle里把一行数据拆成多行数据的javascript脚本

 集微笔记 2013-11-01
var str = row[8].toString();
var tokens = str.split(" ");
var i;
for (i =0; i<tokens.length; i++)
{
  var row = createRowCopy(getOutputRowMeta().size());
  var index = getInputRowMeta().size();
  row[index]=tokens[i];
  putRow(row);
}
trans_Status = SKIP_TRANSFORMATION;
 
说明:
row[8].toString(); 数据行里第八列里的数据是以空格分隔的一个字符串。如 “aaa bbb ccc ddd”
 
str.split(" "); 把字符串按照空格分为一个字符数组,如上面的例子,就分隔为长度为 4 的数组。

for (i =0; i<tokens.length; i++)  循环tokens

{

createRowCopy(getOutputRowMeta().size());  使用 createRowCopy 函数创建一个新行,长度是getOutputRowMeta().size()。

index = getInputRowMeta().size(); 根据输入流获得数据行里最后一列的位置。

row[index]=tokens[i]; 把每个 token, 放到每个新创建行的最后一列。
putRow(row);  把新创建的行放到输出流中,下一个步骤就可以使用了。

}

trans_Status = SKIP_TRANSFORMATION;  这个是必要的,保证原始的数据行“aaa bbb ccc ddd”,不会被放入输出流中。

通过这个脚本一行数据可以变成四行数据。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多