Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Relacionar colunas com nomes diferente

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  

1 Solution

Accepted Solutions
feliciano_alan
Contributor II
Contributor II

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.

View solution in original post

5 Replies
lucianosv
Specialist
Specialist

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 ;

Not applicable
Author

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?

qlik2.PNG

lucianosv
Specialist
Specialist

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 ;

feliciano_alan
Contributor II
Contributor II

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.

Not applicable
Author

Obrigado Alan por solucionar meu problema.

Testei aqui e funcionou beleza 😃