Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
alexandrakfcosta
Contributor III
Contributor III

Agregação + Concatenação

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:
aggrconcat-1

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:

aggrconcat-2

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:

Aggr()

Concat()

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:

aggrconcat-3

Labels (1)
1 Reply
ernestolmalves
Contributor III
Contributor III

Obrigado por compartilhar !