Vai al contenuto principale Passa a contenuto complementare

Aggregazioni nidificate

Ogni nome di campo utilizzato in un'espressione del grafico deve essere racchiuso esattamente da una sola funzione di aggregazione. Se è necessario nidificare le aggregazioni, è possibile utilizzare Aggr() per aggiungere un secondo livello di aggregazione. Aggr() contiene una funzione di aggregazione come argomento.

Sempre un livello di aggregazione in una funzione

Un'app tipica può contenere:

  • un milione di record nei dati
  • cento righe in una tabella pivot
  • Un unico KPI, in un misuratore o in una casella di testo

Tutti e tre i numeri possono comunque rappresentare tutti i dati, anche se diversi per grandezza. I numeri sono solo livelli diversi di aggregazione.

Le funzioni di aggregazione utilizzano i valori di molti record come input e li comprimono in un unico valore che può essere visto come una sintesi di tutti i record. È presente una restrizione: non è possibile utilizzare una funzione di aggregazione all'interno di un'altra funzione di aggregazione. Di solito è necessario che ogni riferimento di campo sia disposto esattamente in un'unica funzione di aggregazione.

Funzioneranno le seguenti espressioni:

  • Sum(Sales)
  • Sum(Sales)/Count(Order Number)

La seguente espressione non funzionerà in quanto è un'aggregazione nidificata:

  • Count(Sum(Sales))

La soluzione a questo problema si presenta sotto forma della funzione Aggr(). Contrariamente al suo nome non è una funzione di aggregazione. È una funzione "molti-a-molti", un po' come una matrice in matematica. Converte una tabella con record N in una tabella con record M. Restituisce una serie di valori. Potrebbe anche essere considerata come una tabella lineare virtuale con una sola misura e una o più dimensioni.

Nota di suggerimentoÈ possibile utilizzare la funzione Aggr() nelle dimensioni calcolate se si desidera creare aggregazioni di grafici nidificate su più livelli.

Utilizzo di Aggr() per le aggregazioni nidificate

Aggr() restituisce una matrice di valori per l'espressione calcolata in base alle dimensioni dichiarate o alle dimensioni. Ad esempio, il valore massimo delle vendite, per cliente, per regione. Nelle aggregazioni avanzate, la funzione Aggr() viene racchiusa in un'altra funzione di aggregazione, tramite la matrice di risultati dalla funzione Aggr() come input all'aggregazione in cui è nidificata.

Quando viene utilizzata, l'istruzione Aggr() produce una tabella virtuale, con un'espressione raggruppata da una o più dimensioni. Il risultato di questa tabella virtuale può poi essere ulteriormente aggregato da una funzione di aggregazione esterna.

Calcolo del valore medio più grande dell'ordine

Utilizziamo un'istruzione Aggr() semplice in un'espressione del grafico.

Vogliamo visualizzare le nostre metriche complessive a livello regionale, ma anche mostrare due espressioni più complesse:

  • Il più grande valore medio degli ordini per manager all'interno di ciascuna regione.
  • Manager responsabile del maggior valore medio degli ordini.

Possiamo facilmente calcolare il valore medio dell'ordine per ogni regione utilizzando un'espressione standard Sum(Sales)/Count([Order Number]).

All'interno dell'app, sul foglio Nested Aggregations è presente una tabella dal titolo Aggr() function.

  1. Selezionare la tabella Aggr() function disponibile.
    Si apre il pannello delle proprietà.
  2. Fare clic su Aggiungi colonna e selezionare Misura.
  3. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  4. Inserire quanto segue: Sum(Sales)/Count([Order Number])
  5. Fare clic su Applica.

Tabella che mostra il valore medio dell'ordine per regione.

Tabella che mostra il valore medio dell'ordine per regione.

Nota di suggerimentoCome migliore pratica, assicurarsi che i propri dati siano formattati in modo appropriato. In ciascuna colonna modificheremo l'etichetta per rappresentare il calcolo. Nelle colonne con valori monetari, modifichiamo la Formattazione numero su Valuta e il Modello di formattazione su $ #,##0;-$ #,##0.

Il nostro obiettivo è recuperare il più grande valore medio degli ordini per ogni regione. Dobbiamo utilizzare Aggr() per indicare a Qlik Sense che vogliamo prendere il valore medio dell'ordine per ogni regione, per manager, e poi visualizzare il più grande di questi. Per ottenere il valore medio dell'ordine per ogni regione, per manager, dovremo includere queste dimensioni nella nostra istruzione Aggr():

Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)

Questa espressione fa sì che Qlik Sense produca una tabella virtuale simile a questa:

Tabella virtuale della funzione Aggr() che mostra il valore medio dell'ordine per ogni regione, per manager.

Tabella con funzione AGGR che mostra il valore medio dell'ordine per ogni regione, per manager.

Quando Qlik Sense calcola i singoli valori medi dell'ordine per ogni regione, per ogni manager, dovremo trovare il più grande di questi valori. Ciò avviene disponendo la funzione Aggr() con Max():

Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))

  1. Fare clic su Aggiungi colonna e selezionare Misura.
  2. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  3. Inserire quanto segue: Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Fare clic su Applica.

Tabella che mostra la regione, il valore medio dell'ordine e il più grande valore medio dell'ordine per ogni regione, per manager.

Tabella che mostra la regione, il valore medio dell'ordine e il più grande valore medio dell'ordine per ogni regione, per manager.

È possibile vedere il più grande valore medio degli ordini per tutti i manager a livello regionale. Questa è la prima delle nostre due espressioni complesse! Il requisito successivo è quello di avere il nome del manager responsabile di questi grandi valori medi di ordine visualizzato accanto ai valori stessi.

A tal fine, si utilizza la stessa funzione Aggr() di prima, ma questa volta insieme alla funzione FirstSortedValue(). La funzione FirstSortedValue() indica a Qlik Sense di fornirci il manager, per la dimensione specifica specificata nella seconda parte della funzione:

FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))

Nota di suggerimentoC'è una piccola, ma molto importante, parte dell'espressione: c'è un simbolo meno prima dell'espressione Aggr(). All'interno di una funzione FirstSortedValue(), è possibile specificare l'ordine di ordinamento della gamma di dati. In questo caso, il simbolo meno indica a Qlik Sense di ordinare dal più grande al più piccolo.
  1. Fare clic su Aggiungi colonna e selezionare Misura.
  2. Fare clic sul simbolo Espressione.
    Si apre l'editor delle espressioni.
  3. Inserire quanto segue: FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Fare clic su Applica.

Tabella che mostra la regione, il valore medio dell'ordine e il più grande valore medio dell'ordine per ogni regione, oltre al manager responsabile per tale valore dell'ordine.

Tabella che mostra la regione, il valore medio dell'ordine e il più grande valore medio dell'ordine per ogni regione, oltre al manager responsabile per tale valore dell'ordine.

Per ulteriori informazioni, vedere Aggr

Per ulteriori informazioni, vedere FirstSortedValue

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!