Existem algumas formas de obtermos pedaços de um texto ou string no Kettle, no entanto gostaria de demonstrar rapidamente como usar a maneira mais simples e adequada, através do step Strings Cut, que pode ser encontrado na aba Transform.
Primeiramente, é importante deixar claro que, caso o usuário tente pegar o substring de um campo numérico, data, ou qualquer outro que não seja um string/texto, o Kettle interromperá a execução e exibirá um erro. Se em alguma parte do processo isso for necessário, será importante realizar a conversão prévia do data type.
Observe abaixo que, em nosso exemplo, vamos utilizar o step Generate Rows para criar um campo e simular um valor para recuperarmos o substring.
Vamos para as propriedades do Strings Cut:
- A contagem começa do zero, ou seja, a primeira posição é o 0;
- O step corta os pedaços de acordo com a posição inicial e a posição final. É muito comum confundirmos o uso deste step com a lógica da função substring do SQL ou Javascript, que normalmente recebe a posição inicial e o número de casas/caracteres a partir dela. Neste caso, coloque no campo Cut from a posição inicial e no campo Cut to a posição final;
- O campo In stream field recebe o campo texto onde será aplicado o corte;
- O campo Out stream field recebe o nome do campo criado com o corte;
- Caso você coloque o Out stream field com o nome de um campo que já existe, o Kettle criará um novo campo seguido de _1. Ex: se voce colocar o nome do Out stream field como CampoSubstring e este campo já existir, o Kettle mantém o campo original com o mesmo nome e valor, além de criar o campo CampoSubstring_1, que receberá o campo criado neste step.
Por fim, fazendo um simples preview, teremos o seguinte resultado:
Além do step Strings Cut, poderíamos utilizar o step Formula ou até o Modified Java Script Value para obter o mesmo resultado, porém é aconselhado evitar o uso de scripts quando desejamos melhorar a performance de execução do ETL.