Olá meus amigos!
Expandindo o post sobre funções e recursos do Pentaho, hoje quero mostrar dois steps que irão acompanhá-lo quase que diariamente nas suas transformações
- Split Fields
- Split Fields to Rows
O nome das funções é auto sugestivo, mas são utilizados para dividir uma única coluna em duas ou mais colunas e ou, linhas.
ÍNDICE
SPLIT FIELDS
Normalmente utilizamos quando dentro da coluna existe algum tipo de valor especial como “ | ”, “ / “ etc. Mas é possível simplesmente dividir a cada espaço em branco encontrado, como iremos fazer aqui.
O primeiro que veremos é o split fields, que irá simplesmente dividir uma coluna por cada ocorrência do delimitador que encontra na sua busca.
Como minha coluna não tem delimitador específico, utilizarei o espaço em branco para tal.
O primeiro ponto é extrair os dados da fonte e para isso, utilizei a query:
Para melhorar o exemplo, adicionei o step if field value is null pois algumas linhas não tinham dados.
Como já expliquei neste post, utilizei a configuração por data type, sabendo que o campo que desejo modificar é string.
Configurado este passo, vamos finalmente ao split field.
Como o replace do campo null é uma frase muito grande, para cada split, tivemos de criar um campo diferente para caber na divisão, do contrário, acusaria erro.
As configurações:
- Field to Split – seleciona a coluna que o step irá dividir;
- Delimiter – seleciona o tipo de delimitador que há nesta coluna;
- Enclosure- caso haja alguma aspas ou colchetes. Caso não, deixe em branco.
- Default – configuração para divisões que não tem registro. Ao invés do null, no meu caso, será “N/A”.
- Trim Type – tipo de aparamento para os registros(remover espaços em branco). Pode ser Right, Left e Both Trim.
Nesta primeira imagem, o que temos é a coluna filename retornada da query, e que não foi dividida:
E agora, os campos que foram de fato divididos em círculo azul.
Como podemos perceber, cada palavra que está dentro da coluna DocummentSummary foi dividida após o espaço entre elas, respeitando a configuração utilizada no split fields.
Transformando a mesma coluna em linha, o processo é bem simples, bastando apenas atribuir um novo nome para a coluna que irá abrigar os valores divididos.
SPLIT FIELDS TO ROW
Como meu ‘delimitador’ é o espaço em branco, basta deixar vazio, como feito no step anterior!
Para visualizar a transformação, adicione o step select values e puxe todas as colunas clicando no get fields.
Assim o split fields to row divide uma única linha em várias, sendo muito utilizado quando temos aquelas planilhas com diversas linhas em um único campo.
Unindo com outros steps, é uma importante ferramenta para limpeza e tratamento de dados, valendo muito dominá-la para seus ETLs.
ASSINE A NEWSLETTER:
Olá, se gostou desse post é quer se manter atualizado, assine abaixo:
Olá,
Caso o delimitador seja um Enter, como tratamos isso?
Exemplo dados de um Form(google sheets)!
CurtirCurtido por 1 pessoa
Olá João, boa noite!
Se o delimitador for um Enter, ele vai gerar um espaço em branco, não? Se sim, no campo “delimiter” de um espaço e veja se ele consegue capturar essa quebra de linha.
Outro cenário que tô imaginando é que você tenha duas linhas (uma espécie de bloco de texto). Nessa situação, você pode splitar todo esse bloco e concatenar depois as colunas que o Pentaho mostrará e você deseja.
Acho que entendi certo sua pergunta, não?!
Boa noite e volte sempre! Obrigado pelo comentário!
Qualquer dúvida, estamos aqui!
CurtirCurtir
Boa noite Douglas, infelizmente ele não gera esse espaço em branco!
Mas irei tentar fazer o split como um bloco, caso consigo retornarei o resultado!
Outra opção que irei explorar é a edição do Google sheets através de scrpit fazendo o replace da quebra de linha por uma vírgula!
Obrigado!
CurtirCurtir
Claro João!
Pô, achei que houvesse essa ‘quebra’.
Isso, faça esse teste e avalie se funciona, acredito que sim. Boa sorte nos seus testes e compartilhe o resultado!
Acredito que a segunda opção possa ser mais satisfatório, é muito mais certeiro quando temos um delimitador claro no Pentaho!
Que dê tudo certo nos seus testes e volte sempre!
Abraços!
CurtirCurtir
Boa noite Douglas, tudo bem?
Cara e se tiver uma coluna com nome completo e quero extrair apenas o primeiro nome eu último nome, como seria?
CurtirCurtido por 1 pessoa
Opa, boa noite Bruno.
Estava gripado, só consegui ver agora.
Então, passa essa coluna como a coluna que vc quer utilizar para “splitar” e no delimitador, veja qual é o caracter que está sendo utilizado. Nesse seu caso é o espaço, se não estou enganado.
No campo “delimiter” aperte a barra de espaço uma vez que ele vai reconhecer.
Cada palavra se tornará uma coluna, basta utilizar o ste´p “select values” para puxar as colunas desejadas, no caso, que contenham o nome e o sobrenome desejado!
Qualquer coisa, basta perguntar!
Espero ter ajudado
CurtirCurtir
tenho uma coluna com 7 numeros e quero dividi-la em 2 colunas, uma com os 6 primeiros numeros e a outra somente com o ultimo numero. nesse caso nao tem delimitador, como faço?
CurtirCurtido por 1 pessoa
Olá Alessandra, boa tarde!
Ao invés de utilizar um delimitador, marca a caixa que divide por data type e passa ele para o Pentaho, nesse caso, deva ser integer ou String, se for o tipo de campo que estou pensando.
Quando fizer isso, o Pentaho irá criar diversas colunas, daí só unir.
CurtirCurtir