Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
lailarhc
Creator
Creator

Tratar valores nulos vindos de um join automático de duas tabelas

Olá.

Eu tenho duas tabelas onde o qlik faz um join usando a coluna 'Servidor'
Eu quero que os valores nulos das linhas resultantes desse join sejam tratados como strings vazias. Mas não está funcionando.

Aqui está meu script:

NullAsValue *;

Set Nullvalue = '';

LOAD Servidor,
Início,
Fim,
Horas,
Curso;
[cursos]:
SQL SELECT NomeEmpregado as Servidor,
evento."DataIniRealizacao" as Início,
evento."DataFimRealizacao" as Fim,
evento."CargaHoraria" as Horas,
evento."descEvento" as Curso
FROM SARH.dbo.Empregado
LEFT JOIN SDTA.dbo."V_AuditoriaEventoServidor" as evento
ON evento.numCpf = Empregado.NumCpf
LEFT JOIN SARH.dbo.DadosFuncionais as dados
ON dados.CodEmpregado = Empregado.CodEmpregado
JOIN SARH.dbo.Orgao as orgao
ON orgao.CodOrgao = dados.CodUltimaLotacao
AND orgao.SiglaOrgao LIKE 'GR08%'
WHERE dados.DataSaidaEmpregado is null

UNION

SELECT NomeEmpregado as Servidor2,
capacitacao."DataInicio" as Início2,
capacitacao."DataFim" as Fim2,
capacitacao."CargaHoraria" as Horas2,
capacitacao."descTitulo" as Curso2
FROM SARH.dbo.Empregado
LEFT JOIN SDTA.dbo."SHC_CapacitacaoNaoInstitucional" as capacitacao
ON capacitacao.CodEmpregado = Empregado.CodEmpregado
LEFT JOIN SARH.dbo.DadosFuncionais as dados
ON dados.CodEmpregado = Empregado.CodEmpregado
JOIN SARH.dbo.Orgao as orgao
ON orgao.CodOrgao = dados.CodUltimaLotacao
AND orgao.SiglaOrgao LIKE 'GR08%'
WHERE dados.DataSaidaEmpregado is null;


[cursos_sugeridos]:
LOAD
[Titulos],
[Servidor]
FROM [lib://AttachedFiles/Indicação de cursos_2.xlsx]
(ooxml, embedded labels, table is Planilha2);

Eu estou usando NullAsValue mas eu ainda obtenho o seguinte:
06.png

 

Ao mesmo tempo eu tenho:
07.png

Com strings vazias ao invés de valores nulos.

 

Por que isto está acontecendo? Como posso consertar?
Agradeço antecipadamente.

1 Reply
pedrobergo
Employee
Employee

Olá @lailarhc 

Você tem duas tabelas: [cursos] e [cursos_sugeridos]. O Qlik faz a associação entre as duas in-memory e apresenta nulos nas colunas cujas linhas não tem associação. Para resolver isso, vc poderia fazer um terceiro join e criar uma tabela única.

[cursos_sugeridos]:
outer join (cursos)
LOAD
[Titulos],
[Servidor]
FROM [lib://AttachedFiles/Indicação de cursos_2.xlsx]
(ooxml, embedded labels, table is Planilha2);

Assim, ele irá criar uma tabela única contendo todos os registros de ambas as tabelas e os nulos com espaços respeitando as parametrizações de nulos.

Agora, olhando para sua sentença SQL acredito que tenha uma falha nela. Os nomes dos campos marcados em negrito deveriam ser iguais, do contrário, vc está criando dois grupos de colunas (p.ex. Servidor e Servidor2) e com isso, tanto a associatividade quanto o join não vão funcionar de qualquer maneira.

"SQL SELECT NomeEmpregado as Servidor,
evento."DataIniRealizacao" as Início,
evento."DataFimRealizacao" as Fim,
evento."CargaHoraria" as Horas,
evento."descEvento" as Curso

(...)

UNION

SELECT NomeEmpregado as Servidor2,
capacitacao."DataInicio" as Início2,
capacitacao."DataFim" as Fim2,
capacitacao."CargaHoraria" as Horas2,
capacitacao."descTitulo" as Curso2
(...)"

[],

Pedro