Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Tenho a seguinte tabela e fiz os seguintes testes:
=len(TELEF_PESSOA_T)
=IF(IsNull(TELEF_PESSOA_T),'NULO', 'NÃO É NULO')
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:
Desde já, obrigada!
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.
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)?
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
[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...
Mário,
Tentei isso, no Load Precedente (o de baixo), e não deu certo!
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()?
Larissa, qual a ordem de Load?
O seu post já mostra a ordem correta?
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.
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.
Márcio, já está na ordem correta.