Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
agnaldoneves
Valued Contributor

Tratar no Load de numéro de celulares

Pessoal, estou querendo tratar um numeros de celulares, antes na hora de gerar o script.

O exemplo estão abaixo.

Alguma dica?

Numero_BancoNumero_Tratado
27-9818-892327998188923
27-98106-202127981062021
3345-0723Não Celular
9951-740627999517406

Tratar assim,

Pegar todos os sem traços

Exemplo: 27-9818-8923  - deixar apenas o ultimos 7 digitos. (sem traços)

resultado: 8188923

Depois inserir :279

ResultadoFinal: 2798188923

Agnaldo Neves
Programador de Sistemas
Tags (1)
1 Solution

Accepted Solutions
thiago_justen
Valued Contributor III

Re: Tratar no Load de numéro de celulares

Teste este script e veja se te atende:

Temp:

load * Inline [

Numero

27-9818-8923

27-98106-2021

3345-0723

9951-7406

98101-0634

];

Final:

load

Numero,

If(Left(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),1)<>9,'Não Celular',

If(Len(Trim(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-'))))<9,'279'&

    If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),'27'&

        If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')))) as Celular

Resident Temp;

drop table Temp;

Resultado:

Capturar.PNG

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
5 Replies
thiago_justen
Valued Contributor III

Re: Tratar no Load de numéro de celulares

Teste este script e veja se te atende:

Temp:

load * Inline [

Numero

27-9818-8923

27-98106-2021

3345-0723

9951-7406

98101-0634

];

Final:

load

Numero,

If(Left(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),1)<>9,'Não Celular',

If(Len(Trim(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-'))))<9,'279'&

    If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),'27'&

        If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')))) as Celular

Resident Temp;

drop table Temp;

Resultado:

Capturar.PNG

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
agnaldoneves
Valued Contributor

Re: Tratar no Load de numéro de celulares

Show Thiago

Agnaldo Neves
Programador de Sistemas
thiago_justen
Valued Contributor III

Re: Tratar no Load de numéro de celulares

#TMJ Agnaldo

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
agnaldoneves
Valued Contributor

Re: Tratar no Load de numéro de celulares

Thiago  a solução está correta.

ele deveria retirar os 7 digitos depois acrescentar.

Mas caso o funcionário erre eu gostaria também de acertar veja na imagem abaixo.

o usuario digitou um 9 a mais.

2018-03-27_08-19-38.png

Agnaldo Neves
Programador de Sistemas
thiago_justen
Valued Contributor III

Re: Tratar no Load de numéro de celulares

Adicionei um Right() pra pegar apenas 9 dígitos e assim tratar essa possibilidade.

If(Left(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),1)<>9,'Não Celular',

If(Len(Trim(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-'))))<9,'279'&

    If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),'27'&

        Right(If(SubStringCount(Numero,'-')=2,SubField(Numero,'-',2)&SubField(Numero,'-',3),PurgeChar(Numero,'-')),9))) as Celular

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago