У меня была похожая проблема с денормализацией. У меня был файл /etc/group
со структурой, подобной group:gid:member1,member2,....
, и я денормализовал его с помощью компонента User Defined Java Class
, поэтому, наконец, у меня есть поля group,gid,member
. Я знаю, что вам нужно другое направление, но это может быть хорошей отправной точкой для вас. Вот источник:
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
// boilerplate
Object[] r = getRow();
if (r == null) {
setOutputDone();
return false;
}
if(first)
first = false;
String tmp = get(Fields.In, "members").getString(r);
if(null==tmp)
return true;
String accounts[] = tmp.split(",");
for(int i=0; i<accounts.length; ++i){
Object[] out_row = RowDataUtil.allocateRowData(data.outputRowMeta.size());
for (int j=0; j<r.length; ++j)
out_row[j] = r[j];
String account = accounts[i];
get(Fields.Out, "account").setValue(out_row,account);
putRow(data.outputRowMeta, out_row);
}
return true;
}