Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia pessoal
Sou novo na ferramenta e tenho uma dúvida em relação ao relacionamento das tabelas.
Sei que o relacionamento no Qlikview é feito automático, basta igualar o nome das tabelas que tudo tende a funcionar direitinho.
Estou buscando valores de uma lista no Sharepoint pelo Access por isso algumas colunas estão com esses " ` ".
Vamos ao problema, tenho uma tabela chamada Protocolo que é responsável por armazenar ocorrências diversas que ocorrem na empresa. Nessa tabela tem diversos campos, mas os campos que eu preciso são :
ID, - id do Protocolo
Titulo, -titulo do Protocolo
Atribuido as Atribuída_a, -nome do usuário que foi atribuído o Protocolo
`Criado por`as Criado_por, -nome do usuário que criou o Protocolo
`Modificado por`as Modificado_por -nome do usuário que modificou o Protocolo.
No Acess retorna os valores das colunas em texto, pois ele faz o relacionamento com a tabela UserInfo.
Porém quando esses dados chegam no Qlikview eles vão como um número. Exemplo id_usuário.
No SQL resolveria esse problema fácil utilizando essa Query:
SQL SELECT P.ID,
P.`Título`,
P.Atribuido,
P.`Criado por`as Criado_por,
P.`Modificado por`as Modificado_por,
P.Prazo,
us.Nome
FROM PROTOCOLO P
JOIN UserInfo us
on us.ID= P.Atribuido.
;
Minha dúvida é:
Como relacionar os campos Atribuido,Criado_por e Modificado_por com a tabela UserInfo?
Eu só queria que mostrasse os nomes ao invés dos id's que estão sendo mostrados agora =/...
Texto ta grande, mas eu tentei explicar o máximo possível para não gerar confusão
Olá Marivan,
Pelo que entendi, você quer atribuir o nome de usuário a cada coluna.
Você pode (e deve) resolver isso no Qlikview.
Neste caso você pode utilizar uma função chamada ApplyMap.
Você carregará a tabela de usuários, como uma tabela de mapeamento, desta forma:
MapUsuario:
Mapping
LOAD id_usuario
,usuario
INLINE [
id_usuario, usuario
1, Aberlardo
2, Bernardo
3, Carlos
4, Daniel
5, Elias
];
*** Usei dados inline para exemplo, você deve inserir seu SQL.
Depois disto você carrega seu dados de protocolo e aplica o mapeamento 'MapUsuario', desta forma:
Protocolo:
LOAD
id as id_protocolo,
ApplyMap('MapUsuario', atribuido) as atribuido,
ApplyMap('MapUsuario', criado_por) as criado_por,
ApplyMap('MapUsuario', modificado_por) as modificado_por
INLINE [
id, atribuido, criado_por, modificado_por
1, 1, 2, 1
2, 2, 2, 2
3, 4, 1, 2
4, 3, 3, 2
5, 1, 1, 5
6, 3, 4, 5
7, 2, 1, 1
8, 2, 5, 5
9, 3, 3, 3
10, 1, 1, 3
];
Ao ser carregado, as colunas ficarão com o nome dos usuário e seu modelo de dados ficará assim:
E na tela seus dados:
Estou enviando o QVW para você conferir estas informações no arquivo.
Se você quiser manter os nomes originais, você duplica a coluna chave com um alias, mas eles só se relacionam se tiver o mesmo nome.
Se você for ler do banco pode manter a sua query na extração, caso contrário você lê a tabela protocolo e depois lê a tabela UserInfo com inner join na primeira tabela chamando a coluna ID as Atribuido.
Montando um esqueleto:
Protocolo:
LOAD
Num,
SQL;
SQL SELECT
ID,
`Título`,
Atribuido,
`Criado por`as Criado_por,
`Modificado por`as Modificado_por,
Prazo
FROM tabela protocolo;
Inner Join(Protocolo)
LOAD
ID as Atribuido,
Nome;
SQL SELECT
ID
FROM tabela UserInfo ;
Boa tarde Luciano,
Fiz da forma que você indicou e funcionou para a coluna Atribuido, como eu faço agora para que todas as colunas que se relacionam com a coluna Nome da tabela UserInfo sejam preenchidas com os seus respectivos Nomes e não com os ID?
Não sei se entendi bem a sua pergunta, mas você teoricamente só têm que incluir na parte do inner join.
Se elas forem parte da chave de batimento precisam ter o mesmo nome.
Outro detalhe, isso funciona para o inner ou left join pq a tabela será uma só no qlikview.
Você não pode/deve ter tabelas na nuvem de dados do Qlikview que se liguem por mais de um campo.
Inner Join(Protocolo)
LOAD
ID as Atribuido,
Nome,
campo3, campo4
;
SQL SELECT
ID,
Nome,
campo3, campo4
FROM tabela UserInfo ;
Olá Marivan,
Pelo que entendi, você quer atribuir o nome de usuário a cada coluna.
Você pode (e deve) resolver isso no Qlikview.
Neste caso você pode utilizar uma função chamada ApplyMap.
Você carregará a tabela de usuários, como uma tabela de mapeamento, desta forma:
MapUsuario:
Mapping
LOAD id_usuario
,usuario
INLINE [
id_usuario, usuario
1, Aberlardo
2, Bernardo
3, Carlos
4, Daniel
5, Elias
];
*** Usei dados inline para exemplo, você deve inserir seu SQL.
Depois disto você carrega seu dados de protocolo e aplica o mapeamento 'MapUsuario', desta forma:
Protocolo:
LOAD
id as id_protocolo,
ApplyMap('MapUsuario', atribuido) as atribuido,
ApplyMap('MapUsuario', criado_por) as criado_por,
ApplyMap('MapUsuario', modificado_por) as modificado_por
INLINE [
id, atribuido, criado_por, modificado_por
1, 1, 2, 1
2, 2, 2, 2
3, 4, 1, 2
4, 3, 3, 2
5, 1, 1, 5
6, 3, 4, 5
7, 2, 1, 1
8, 2, 5, 5
9, 3, 3, 3
10, 1, 1, 3
];
Ao ser carregado, as colunas ficarão com o nome dos usuário e seu modelo de dados ficará assim:
E na tela seus dados:
Estou enviando o QVW para você conferir estas informações no arquivo.
Obrigado Alan por solucionar meu problema.
Testei aqui e funcionou beleza 😃