Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
juliana_campagn
Contributor

Manter apenas caracteres distintos

Olá,

Tenho um campo de texto com vários caracteres repitidos, e preciso criar um campo que contenha apenas os caracteres distintos.

EX: 'aaaaaaabbbbcbbbccccaaaaa', preciso retornar apenas 'abc'.

Desde já agradeço.

1 Solution

Accepted Solutions
juliana_campagn
Contributor

Re: Manter apenas caracteres distintos

Solução!!

14 Replies
mario_sergio_ti
Valued Contributor

Re: Manter apenas caracteres distintos

Bom dia;

Existe algum padrão neste campo?

juliana_campagn
Contributor

Re: Manter apenas caracteres distintos

Não. Não existe nenhum padrão, nem quantidade de caracteres definida.

Apenas para contextualizar para que seja entendida a minha necessidade:

Tenho uma planilha onde são lançados os registros de paradas de máquinas, e cada pessoa que lança valores no campo 'LOTE' faz de um jeito... alguns lançam '53001-53002-53003', outros lançam '53001/53002/53003', outros lançam '53001,53002,53003'.

Preciso de uma lista com os valores DISTINTOS dos separadores utilizados, para fazer um FOR padronizando em um caracter.

mario_sergio_ti
Valued Contributor

Re: Manter apenas caracteres distintos

A ocorrência é sempre em 5 em 5 casas? 53001-53002-53003

juliana_campagn
Contributor

Re: Manter apenas caracteres distintos

Não... lotes de produtos acabados possuem um padrão e lotes de semi-acabados outro.

Já fiz a separação dos lotes. O que tenho agora é uma lista dos caracteres que foram utilizados como separador, porém, eles aparecem repitidos...

mario_sergio_ti
Valued Contributor

Re: Manter apenas caracteres distintos

Para conseguir extrair os tipos de separadores no campo, teste:

KeepChar('[LOTE]', ',.;:/\[]{}()$#@%¨&*_+-=<>')

juliana_campagn
Contributor

Re: Manter apenas caracteres distintos

Isso eu já fiz... O que preciso é retornar apenas os distintos.

mario_sergio_ti
Valued Contributor

Re: Manter apenas caracteres distintos

Parece que tem um sub campo no mesmo campo;

Para separar, pode utilizar a expressão:

subfield([LOTE], left(KeepChar([LOTE], ',.;:/\[]{}()$#@%¨&*_+-=<>'),1) ,1)

Interpretação:

KeepChar([LOTE], ',.;:/\[]{}()$#@%¨&*_+-=<>') | Identificar o separador utilizado pelo usuário


left(KeepChar([LOTE], ',.;:/\[]{}()$#@%¨&*_+-=<>'),1) | Capturar o 1º caractere, assumindo o separador utilizado


subfield([LOTE], left(KeepChar([LOTE], ',.;:/\[]{}()$#@%¨&*_+-=<>'),1) ,1) | Separar o primeiro sub campo

mario_sergio_ti
Valued Contributor

Re: Manter apenas caracteres distintos

Com len(KeepChar([LOTE], ',.;:/\[]{}()$#@%¨&*_+-=<>')) poderá saber quantas vezes terá que executar a função no FOR para separar os sub campos

juliana_campagn
Contributor

Re: Manter apenas caracteres distintos

Mario, eu já tenho a lista dos separadores.

Não posso usar a forma como propôs porque muitas vezes é utilizado mais de um caractere na mesma sequencia.

Para ter uma ideia, anexo segue a lista com os separadores.

Por isso que preciso retornar os DISTINTOS para depois fazer o FOR.