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:

    [A]:

    LOAD * INLINE [

    Id, Nome, Idade

    1, Alexandra, 36

    2, Jonathas, 40

    3, Amanda, 6

    ]; 

     

    [B]:

    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