Aggr - funzione per grafici

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. La funzione Aggr viene utilizzata per aggregazioni avanzate in cui la funzione Aggr è racchiusa in un'altra funzione di aggregazione, tramite la matrice di risultati dalla funzione Aggr come input all'aggregazione in cui è nidificata.

Syntax:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Return data type: duale

Arguments:  

Argomento Descrizione
expr

Un'espressione costituita da una funzione di aggregazione. Per impostazione predefinita, la funzione di aggregazione aggrega la serie dei possibili record definiti dalla selezione.

StructuredParameter

StructuredParameter è costituito da una dimensione e, facoltativamente, da criteri di ordinamento nel formato: (Dimension(Sort-type, Ordering))

La dimensione è un campo singolo e non può essere un'espressione. Viene utilizzata per determinare la matrice di valori per cui viene calcolata l'espressione Aggr.

Se sono inclusi criteri di ordinamento, la matrice di valori creata dalla funzione Aggr, calcolata per la dimensione, verrà ordinata. Questo è importante quando l'ordinamento influisce sul risultato dell'espressione in cui è racchiusa la funzione Aggr.

Per informazioni dettagliate su come utilizzare i criteri di ordinamento, vedere Aggiunta di criteri di ordinamento alla dimensione nel parametro strutturato.

SetExpression Per impostazione predefinita, la funzione di aggregazione aggrega la serie di possibili record definiti dalla selezione. È possibile definire una serie di record alternativa mediante un'espressione Set Analysis.
DISTINCT

Se l'argomento dell'espressione è preceduto dal qualificatore distinct o se non viene utilizzato alcun qualificatore, ogni combinazione distinta di valori di dimensione restituirà un solo valore. Questa è la modalità normale in cui vengono create le aggregazioni; ciascuna combinazione distinta di valori di dimensione restituisce una linea nel grafico.

NODISTINCT

Se l'argomento dell'espressione è preceduto dal qualificatore nodistinct, ogni combinazione di valori di dimensione può restituire più valori, a seconda della struttura dati sottostante. Se esiste una sola dimensione, la funzione aggr restituirà una matrice con un numero di elementi uguale al numero di righe presenti nei dati sorgente.

Le funzioni di aggregazione di base, quali Sum, Min e Avg, restituiscono un singolo valore numerico, mentre la funzione Aggr() può essere paragonata alla creazione di una serie di risultati temporanei (una tabella virtuale) su cui è possibile effettuare un'altra aggregazione. Ad esempio, è possibile calcolare il valore medio delle vendite sommando le vendite per cliente in un'istruzione Aggr() e calcolando quindi la media dei risultati sommati: Avg(TOTAL Aggr(Sum(Sales),Customer)).

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

Limitations:  

Ogni dimensione presente in una funzione Aggr() deve corrispondere a un campo singolo e non può essere un'espressione (dimensione calcolata).

Nella sua forma di base, l'argomento StructuredParameter nella sintassi della funzione Aggr è una dimensione singola. L'espressione Aggr(Sum(Sales, Month)) trova il valore totale delle vendite per ogni mese. Tuttavia, se viene inclusa in un'altra funzione di aggregazione, potrebbero venire restituiti risultati imprevisti, a meno che non vengano utilizzati i criteri di ordinamento. Ciò è dovuto al fatto che alcune dimensioni possono essere ordinate con criterio numerico o con criterio alfabetico e così via.

Nell'argomento StructuredParameter all'interno della funzione Aggr è possibile specificare criteri di ordinamento per la dimensione nell'espressione. In questo modo si impone un ordinamento alla tabella virtuale prodotta dalla funzione Aggr.

La sintassi dell'argomento StructuredParameter è la seguente:

(FieldName, (Sort-type, Ordering))

I parametri strutturati possono essere nidificati:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Sort-type può essere: NUMERIC, TEXT, FREQUENCY o LOAD_ORDER.

I valori di Ordering associati a ogni Sort-type sono i seguenti:

Sort-type Valori di Ordering consentiti
NUMERIC ASCENDING, DESCENDING o REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE o Z2A
FREQUENCY DESCENDING, REVERSE o ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING o REVERSE

I tipi di ordinamento REVERSE e DESCENDING sono equivalenti.

Per Sort-type uguale a TEXT, i tipi di ordinamento ASCENDING e A2Z sono equivalenti e DESCENDING, REVERSE e Z2A sono equivalenti.

Per Sort-type uguale a LOAD_ORDER, i tipi di ordinamento ASCENDING e ORIGINAL sono equivalenti.

Examples and results:  

Esempio Risultato
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

L'espressione Aggr(Sum(UnitSales*UnitPrice), Customer) trova il valore totale delle vendite per Customer e restituisce una matrice di valori: 295, 715 e 120 per i tre valori di Customer.

Si tratta di un modo efficace per creare un elenco temporaneo di valori senza necessità di creare una colonna o una tabella esplicita contenente tali valori.

Questi valori vengono utilizzati come input della funzione Avg() per trovare il valore medio delle vendite, 376.6667 (è necessario aver selezionato Totali alla voce Presentazione nel pannello delle proprietà).

Aggr(NODISTINCT Max(UnitPrice), Customer)

Una matrice di valori: 16, 16, 16, 25, 25, 25, 19 e 19. Il qualificatore nodistinct indica che la matrice contiene un elemento per ogni riga dei dati sorgente: ognuno è il valore UnitPrice massimo per ogni valore Customer e Product.

Dati utilizzati negli esempi:

Creare una tabella con Customer, Product, UnitPrice e UnitSales come dimensioni. Aggiungere l'espressione alla tabella come misura.

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');

 

Examples and results: Parametri strutturati

Esempio Risultato
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Questa misura calcola le vendite dall'inizio dell'anno corrente per ogni mese utilizzando criteri di ordinamento nell'argomento del parametro strutturato nell'espressione.

Senza i criteri di ordinamento, il risultato dell'espressione Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) dipende dal modo in cui sono ordinate le dimensioni Year e Month. Si potrebbe non ottenere il risultato desiderato.

Aggiungendo valori per Sort-type e Ordering alla dimensione, si forniscono criteri di ordinamento al parametro strutturato: (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). L'utilizzo di NUMERIC come Sort-type e di ASCENDING come Ordering consentono di ordinare Year e Month in ordine numerico crescente.

Dati utilizzati negli esempi:

Lo script di caricamento seguente genera una tabella di ordini con righe d'ordine, da utilizzare nell'esempio per i parametri strutturati.

Set vNumberOfOrders = 1000; OrderLines: Load RowNo() as OrderLineID, OrderID, OrderDate, Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales While Rand()<=0.5 or IterNo()=1; Load * Where OrderDate<=Today(); Load Rand() as Rand1, Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate, RecNo() as OrderID Autogenerate vNumberOfOrders; Calendar: Load distinct Year(OrderDate) as Year, Month(OrderDate) as Month, OrderDate Resident OrderLines;

È possibile confrontare le differenze tra queste misure in una tabella o in grafici lineari separati:

  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

La seconda misura fornisce le vendite dall'inizio dell'anno corrente corrette per ogni mese.