quinta-feira, 25 de outubro de 2012

Substring

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:
  1. A contagem começa do zero, ou seja, a primeira posição é o 0;
  2. 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;
  3. O campo In stream field recebe o campo texto onde será aplicado o corte;
  4. O campo Out stream field recebe o nome do campo criado com o corte;
  5. 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.
 

Nenhum comentário:

Postar um comentário