Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Valores Nulos ou Espaços em branco

Bom dia!

Tenho a seguinte tabela e fiz os seguintes testes:

=len(TELEF_PESSOA_T)

=IF(IsNull(TELEF_PESSOA_T),'NULO', 'NÃO É NULO')

Capturar.PNG

Não estou entendendo porque os campos em branco (TELEF_PESSOA_T) estão como não nulos, contando 1 caractere...

Usei o trim no script também para tirar possíveis espaços em branco e as propriedades da tabela estão assim:

Capturar2.PNG

Desde já, obrigada!

Labels (2)
1 Solution

Accepted Solutions
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Laryssa,

O erro foi na dimensão EMPRESA;

Segue correção em anexo;

Também vou editar o script acima para não precisar aguardar aprovação do moderador.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti

View solution in original post

42 Replies
Marcio_Campestrini
Specialist
Specialist

Bom dia Larissa

Com certeza o campo está com um caractere em branco.

Qual o resultado esperado? Você está utilizando o trim no tratamento do Qlikview ou no momento da carga do banco de dados (o melhor local)?

Márcio Rodrigo Campestrini
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Olá Laryssa;

O campo TELEF_PESSOA_T, provavelmente está com um espaço vazio " ", que é considerado um caractere espaço, onde a função len() está trazendo 1

Usando a função:

Len(trim(TELEF_PESSOA_T))

Retornará 0

No script pode substituir os vazio por null():

If(Len(TELEF_PESSOA_T)<>1,TELEF_PESSOA_T) As TELEF_PESSOA_T

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Not applicable
Author

[TABELA PRINCIPAL]:

LOAD

TIPO_DE_PUBLICO_T,

COD_EMPRESA,

timestamp(DATA_DO_CHAMADO_T) AS DATA_DO_CHAMADO_T,

Right(dayname(DATA_DO_CHAMADO_T),4) AS Ano_T,

MID(DAYNAME(DATA_DO_CHAMADO_T),4,2) AS Mes_T,

CODIGO_DO_CHAMADO_T,

PROTOCOLO_T,

MANIFESTACAO_T,

GRUPO_MANIFESTACAO_T,

TIPO_MANIFESTACAO_T,

NM_FUNCIONARIO_ABRIU_T,

NOME_FUNCIONARIO_T,

AREA_FUNCIONARIO_T,

AREA_ABRIU_T,

timestamp(DATA_CONCLUSAO_CHAMADO_T) AS DATA_CONCLUSAO_CHAMADO_T,

dayname(PREVISAO_RESOLUCAO_T) AS PREVISAO_RESOLUCAO_T,

FORMA_CONTATO_T,

RAMAL_PESSOA_T,

COD_CORPORATIVO_PESSOA_T,

PESS_PESS_NM_PESSOA_T,

GRAU_SATISFAÇÃO_T,

timestamp(DATA_HORA_ENVIO_PESSOA_T) AS DATA_HORA_ENVIO_PESSOA_T ,

timestamp(DATA_HORA_RESP_PESSOA_T) AS DATA_HORA_RESP_PESSOA_T,

concat(DISTINCT DDD_PESSOA_T&' '&TELEF_PESSOA_T, '/' ) AS TELEF_PESSOA_T

GROUP BY

TIPO_DE_PUBLICO_T,

COD_EMPRESA,

DATA_DO_CHAMADO_T,

CODIGO_DO_CHAMADO_T,

PROTOCOLO_T,

MANIFESTACAO_T,

GRUPO_MANIFESTACAO_T,

TIPO_MANIFESTACAO_T,

NM_FUNCIONARIO_ABRIU_T,

NOME_FUNCIONARIO_T,

AREA_FUNCIONARIO_T,

AREA_ABRIU_T,

DATA_CONCLUSAO_CHAMADO_T,

PREVISAO_RESOLUCAO_T,

FORMA_CONTATO_T,

RAMAL_PESSOA_T,

COD_CORPORATIVO_PESSOA_T,

PESS_PESS_NM_PESSOA_T,

GRAU_SATISFAÇÃO_T,

DATA_HORA_ENVIO_PESSOA_T ,

DATA_HORA_RESP_PESSOA_T

;

LOAD

TIPO_DE_PUBLICO_T,

COD_EMPRESA,

DATA_DO_CHAMADO_T,

CODIGO_DO_CHAMADO_T,

PROTOCOLO_T,

MANIFESTACAO_T,

GRUPO_MANIFESTACAO_T,

TIPO_MANIFESTACAO_T,

NM_FUNCIONARIO_ABRIU_T,

NOME_FUNCIONARIO_T,

AREA_FUNCIONARIO_T,

AREA_ABRIU_T,

DATA_CONCLUSAO_CHAMADO_T,

PREVISAO_RESOLUCAO_T,

FORMA_CONTATO_T,

RAMAL_PESSOA_T,

COD_CORPORATIVO_PESSOA_T,

PESS_PESS_NM_PESSOA_T,

GRAU_SATISFAÇÃO_T,

DATA_HORA_ENVIO_PESSOA_T,

DATA_HORA_RESP_PESSOA_T,

trim(DDD_PESSOA_T) AS DDD_PESSOA_T ,

trim(TELEF_PESSOA_T) as TELEF_PESSOA_T

Aqui está meu código, o trim já foi feito direto no momento da carga.

O que acontece é que está aparecendo nulo/branco onde deveria estar aparecendo o telefone concatenado. Pois como no exemplo abaixo, todos tem o mesmo código do chamado, beneficiario, etc...

Capturar.PNG

Not applicable
Author

Mário,

Tentei isso, no Load Precedente (o de baixo), e não deu certo!

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Estranho, fiz um teste aqui para verificar e funcionou

Tentou substituir

trim(TELEF_PESSOA_T) as TELEF_PESSOA_T

Por este?

If(Len(TELEF_PESSOA_T)<>1,TELEF_PESSOA_T) As TELEF_PESSOA_T

Se Len(TELEF_PESSOA_T) está trazendo 1, logo a função acima tem que desconsiderar os registros com um caractere (que é o espaço no seu caso), ou está trazendo outro resultado diferente de 1 a função Len()?




Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Marcio_Campestrini
Specialist
Specialist

Larissa, qual a ordem de Load?

O seu post já mostra a ordem correta?

Márcio Rodrigo Campestrini
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Teste este no principal:

If(Len(

   concat(DISTINCT DDD_PESSOA_T&' '&TELEF_PESSOA_T, '/' )

  )<>1,

  concat(DISTINCT DDD_PESSOA_T&' '&TELEF_PESSOA_T, '/' )

  ) As TELEF_PESSOA_T

Vejo que está concatenando com espaço ' ', logo, parece que em alguns registros, tanto DDD_PESSOA_T quanto TELEF_PESSOA_T retornam Null, porém o espaço ' ' permanece no registro do campo.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Not applicable
Author

Sim, faz sentido, era para funcionar...

Substitui sim, não funcionou. Tentei assim também:

If(Len(DDD_PESSOA_T)<>1,DDD_PESSOA_T) As DDD_PESSOA_T,

If(Len(TELEF_PESSOA_T)<>1,TELEF_PESSOA_T) As TELEF_PESSOA_T

Não funcionou... Não muda em nada na tabela, traz os brancos contando 1 caractere.

Tudo no Load precedente ( o de baixo), e está na ordem correta o código que enviei.

Not applicable
Author

Márcio, já está na ordem correta.