我有一个问题,我正在循环它! :|我希望有人可以帮助我..
所以我有一个输入文件(.xls),这很简单,但有一行(比如说它的“ROW1”)是这样的:
这里没有标准,就像你可以看到的那样......有一些行为空(ROW1),在ROW2中,有相同的数字,与ROW1有不同的关联(如第5行和第6行,然后是第8行和9)。
我的目标是复制并粘贴ROW1中的值,当它为null时,在ROW1中,直到不为空。基本上是复制表单上一步,当为null时...
我正在尝试使用“公式”步骤,使用类似:
= IF(AND(ISBLANK([ROW1]); NOT(ISBLANK([ROW2])); ROW_n = ROW1; IF(AND(NOT(ISBLANK([ROW1])); NOT(ISBLANK([ROW2] )); ROW_n = ROW1; ROW_n = “”));
但还没有......
我尝试过“分析查询”,但也没有尝试过......
我正在使用流式传输xls文件输入..
非常感谢,任何帮助都非常赞赏!!
最诚挚的问候!
答案 0 :(得分:1)
我发现了一个解决方案,添加了一个“用户定义的Java类”,其代码如下:
import java.util.HashMap;
private FieldHelper output_field, card_field;
private RowSet out, log;
private String previou_card =null;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
if (first)
{
first = false;
out = findTargetRowSet("out");
output_field = get(Fields.Out, "previous_card");
} else {
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
r = createOutputRow(r, data.outputRowMeta.size());
if (previous_card != null) {
output_field.setValue(r, previous_card);
}
if (card_field == null) {
card_field = get(Fields.In, "Grupo de Cartões");
}
String card = card_field.getString(r);
if (card != null && !card.isEmpty()) {
previous_card = card;
}
// Send the row on to the next step.
putRowTo(data.outputRowMeta, r, out);
}
return true;
在此之后,我必须采取一些步骤,但这非常有用。
谢谢伙伴!!
答案 1 :(得分:-2)
最后我得到了结果。请按照以下步骤
下图是完整转换屏幕。
数据网格数据就像这些。很抱歉,在我当地我没有微软,因为我采用了数据网格。您可以拖放Microsoft Excel输入步骤而不是数据网格。
希望这有帮助。