Pentaho Data Integration – Como unificar múltiplas linhas de string

Recentemente me deparei com a o seguinte situação:

Arquivo de texto bruto

Um arquivo .txt com diversos cargos e suas respectivas descrições. Porém, as descrições estavam quebradas em várias linhas, condição na qual a API de destino não suporta, aceitando somente strings sem quebra de linha. Após quebrar um pouco a cabeça, consegui chegar na seguinte solução!

Solução

Dentro da step “Text file input” onde recebo o arquivo .txt,
na aba “Fields”, há uma opção chamada “Repeat” que recebe Y ou N.

Step Text file input

Com esta opção ativa, todas as próximas linhas vazias receberão o último valor existente. É semelhante a alça de preenchimento do Excel, onde arrasto um campo e vou preenchendo os adjacentes.
Veja o resultado:

Todas as linhas receberam o respectivo cargo

Agora consigo associar cada linha da descrição com seu cargo correspondente, utilizando a step “Group by”.

Esta step faz um agrupamento de linhas, através de um campo de referência que possua o mesmo valor. No meu caso, quero que todas as linhas que possuam o cargo “AFIADOR DE FACAS” sejam concatenadas.

Veja como funciona:

Step Group by

A – Em “Group field”: informo o campo de referência para o agrupamento, no meu caso a campo “Cargos”;

B – Em “Name”: defino o nome da campo de saída do meu agrupamento, o campo com o resultado final.

C – Em “Subject: seleciono o campo que sofrerá o agrupamento, no caso o campo “Descrição”;

D- Em “Type”: seleciono a operação que será feita, para este caso “Concatenate string separated by”, onde as strings serão concatenadas de acordo com o campo de referência.

Este foi o resultado.

Arquivo após Group by

Em seguida, fiz alguns outros tratamentos simples para remover alguns caracteres e dados inválidos.

Segue o resultado final:

Arquivo limpo