Funções de agregação
A família de funções conhecida como funções de agregação consiste em funções que recebem vários valores de campo como entrada e que retornam um único resultado por grupo, no qual o agrupamento é definido por uma dimensão de gráfico ou uma cláusula group by na instrução de script.
Funções de agregação incluem Sum(), Count(), Min(), Max() e muito mais.
A maioria das funções de agregação pode ser usada no script de carregamento e em expressões do gráfico, mas a sintaxe é diferente.
Usando funções de agregação em um script de carga de dados
Funções de agregação só podem ser usadas dentro de comandos LOAD e SELECT.
Usando funções de agregação em expressões do gráfico
O parâmetro da função de agregação não deve conter outras funções de agregação, a menos que essas agregações internas contenham o qualificador TOTAL. Para agregações aninhadas mais avançadas, use a função avançada Aggr em combinação com uma dimensão especificada.
Uma função de agregação agrega sobre um conjunto de registros possíveis definidos pela seleção. No entanto, um conjunto de registros alternativos pode ser definido usando uma expressão na análise do conjunto.
Análise de conjunto e expressões de conjunto
Como agregações são calculadas
Uma agregação percorre os registros de uma tabela específica, agregando os registros nela. Por exemplo, Count(<Field>) contará o número de registros na tabela em que <Field> reside. Se você quiser agregar apenas os valores de campo distintos, precisará usar a cláusula distinct, como Count(distinct <Field>).
Se a função de agregação contiver campos de tabelas diferentes, a função de agregação fará um loop sobre os registros do produto cruzado das tabelas dos campos constituintes. Isso tem uma penalidade de desempenho e, por esse motivo, essas agregações devem ser evitadas, principalmente quando existem grandes quantidades de dados.
Agregação de campos chave
A forma como as agregações são calculadas significa que você não pode agregar campos chave porque não está claro qual tabela deve ser usada para a agregação. Por exemplo, se o campo <Key> vincula duas tabelas, não está claro se Count (<Key>) deve retornar o número de registros da primeira ou da segunda tabela.
No entanto, se você usar a cláusula distinct, a agregação será bem definida e poderá ser calculada.
Então, se você usar um campo chave dentro de uma função de agregação sem a cláusula distinct, o QlikView retornará um número que pode não ter sentido. A solução é usar a cláusula distinct ou usar uma cópia da chave: uma cópia que reside somente em uma tabela.
Por exemplo, nas tabelas a seguir, ProductID é a chave entre as tabelas.
Count(ProductID) pode ser contado na tabela Products (que tem apenas um registro por produto – ProductID é a chave primária) ou pode ser contado na tabela Details (que provavelmente tem vários registros por produto). Se você quiser contar o número de produtos distintos, deverá usar Count(distinct ProductID). Se quiser contar o número de linhas em uma tabela específica, não use a chave.