Vai al contenuto principale

Funzioni di aggregazione

La serie di funzioni conosciute come funzioni di aggregazione è costituita da funzioni che prendono più valori di campo come input e restituiscono un singolo risultato per gruppo, dove l’aggregazione viene definita con una dimensione del grafico o una clausola group by nell'istruzione dello script.

Le funzioni di aggregazione comprendono Sum(), Count(), Min(), Max() e molte altre ancora.

La maggior parte delle funzioni può essere utilizzata sia nello script di caricamento dei dati che nelle espressioni grafiche, anche se la sintassi sarà diversa.

Utilizzo delle funzioni di aggregazione in uno script di caricamento dei dati

Le funzioni di aggregazione possono essere utilizzate soltanto all’interno di istruzioni LOAD e SELECT .

Utilizzo delle funzioni di aggregazione nelle espressioni grafiche

Il parametro della funzione di aggregazione non deve contenere altre funzioni di aggregazione, a meno che tali aggregazioni interne non contengano il qualificatore TOTAL. Nel caso di aggregazioni nidificate più complesse, utilizzare la funzione avanzata Aggr in combinazione con una dimensione specificata.

La funzione di aggregazione aggrega il set di possibili record definiti dalla selezione. Tuttavia, è possibile definire un set alternativo di record mediante un'espressione di gruppo nell'analisi di gruppo.

Vedere: Set Analysis ed espressioni set

Come vengono calcolate le aggregazioni

Un'aggregazione si chiude intorno ai record di una tabella specifica, aggregando i record al suo interno. Ad esempio, Count(<Field>) conteggerà il numero di record nella tabella in cui risiede <Field>. Se si desidera aggregare solo i valori di campo distinti, utilizzare la clausola distinct, come Count(distinct <Field>).

Se la funzione di aggregazione contiene campi da tabelle diverse, la funzione di aggregazione si chiude sui record del prodotto incrociato delle tabelle dei campi costituenti. Ciò penalizza le prestazioni e per questo motivo tali aggregazioni devono essere evitate, specialmente in presenza di grandi quantità di dati.

Aggregazione dei campi chiave

Il modo in cui vengono calcolate le aggregazioni fa sì che non sia possibile aggregare campi chiave, perché non è chiaro quale tabella debba essere utilizzata per l'aggregazione. Ad esempio, se il campo <Key> collega due tabelle, non è chiaro se Count(<Key>) debba restituire il numero di record dalla prima o dalla seconda tabella.

Tuttavia, se si utilizza la clausola distinct, l'aggregazione viene definita adeguatamente e può essere calcolata.

Pertanto, se si utilizza un campo chiave all'interno di una funzione di aggregazione senza la clausola distinct, Qlik Sense restituirà un numero che può essere privo di significato. La soluzione consiste nell'utilizzare la clausola distinct o una copia della chiave – una copia che risiede in una sola tabella.

Ad esempio, nelle tabelle seguenti, ProductID rappresenta la chiave tra le tabelle.

Chiave ProductID tra le tabelle Prodotti e Dettagli

Count(ProductID) può essere conteggiato nella tabella Products (che presenta un solo record per prodotto – ProductID è la chiave primaria) oppure può essere conteggiato nella tabella Details (che disporrà molto probabilmente di svariati record per prodotto). Se si desidera conteggiare il numero di prodotti distinti, utilizzare Count(distinct ProductID). Se si desidera conteggiare il numero di righe in una tabella specifica, non utilizzare la chiave.