Ir para conteúdo principal

Funções de agregação

A família de funções conhecidas como funções de agregação consiste em funções que recebem vários valores de campos como sua entrada e retornam um único resultado por grupo, onde 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 podem ser usadas ​​no script de carga de dados 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 em 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 junto 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.

Consulte: 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 quiser agregar apenas os valores de campo distintos, você 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 percorrerá os registros do produto cruzado das tabelas dos campos constituintes. Como isso deteriora o desempenho, essas agregações devem ser evitadas, particularmente quando você tem grandes quantidades de dados.

Agregação de campos-chave

A maneira 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 estará bem definida e poderá ser calculada.

Portanto, se você usar um campo chave dentro de uma função de agregação sem a cláusula distinct, o Qlik Sense retornará um número que pode não fazer sentido. A solução é usar a cláusula distinct ou uma cópia da chave: uma cópia que resida em apenas uma tabela.

Por exemplo, nas seguintes tabelas, ProductID é a chave entre as tabelas.

Chave de ProductID entre as tabelas Produtos e Detalhes

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 muito provavelmente tem vários registros por produto). Se você quiser contar o número de produtos distintos, deve usar o Count(distinct ProductID). Se você quiser contar o número de linhas em uma tabela específica, não deve usar a chave.