Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Imagine a seguinte situação: duas tabelas Tabela A e Tabela B com relação 1 x N que você deseja exibir todos os dados de A e uma coluna de B. À princípio, selecionando os campos no Qlik (tanto faz, QlikView ou QlikSense) você terá todas as informações que precisa. Porém, ao exibir os dados você se depara com linhas duplicadas. Qual é a razão? Acontece que como estamos falando de um relacionamento 1 x N, serão exibidas N linhas repetindo os dados da tabela A e exibindo os respectivos dados da tabela B.
Difícil entender, não é mesmo? Imagine solucionar esse problema. Mas não desista ainda.
Primeiro vamos ilustrar o exemplo citado acima:
Podemos gerar essas duas tabelas rapidamente utilizando o LOAD INLINE:
LOAD * INLINE [
Id, Nome, Idade
1, Alexandra, 36
2, Jonathas, 40
3, Amanda, 6
];
:
LOAD * INLINE [
Id, Países Visitados
1, Estados Unidos
1, Uruguai
1, Portugal
1, Espanha
1, Itália
2, Estados Unidos
2, Uruguai
3, Estados Unidos
];
A tabela A possui as pessoas e suas respectivas idades e na tabela B, os países visitados por cada pessoa, ligados pelo campo Id. Colocando todos os campos em uma tabela simples, obtemos algo parecido com isso:
Vemos a repetição dos dados da tabela A para cada item da tabela B. E esse não é o resultado que queremos.
Para resolver esse comportamento indesejado, basta utilizar duas funções de agregação combinadas:
No final parece bem intuitivo. Seu objetivo final é agregar a coluna “Países Visitados” pelo Id concatenando os valores separados por vírgula. Traduzindo isso para a sintaxe Qlik, temos os seguintes passos:
1) Agregar “Países Visitados” pelo Id:
Aggr([Países Visitados], Id)
2) Definir como “Países Visitados” será agregado
Concat([Países Visitados], ', ')
A fórmula final para a coluna a ser exibida na tabela é:
Aggr(Concat([Países Visitados], ', '), Id)
Assim, teremos todas as linhas únicas da Tabela A e os valores da coluna da Tabela B concatenados e agregados na visualização como desejado:
Obrigado por compartilhar !