Condividi tramite


Funzioni di aggregazione

Una funzione di aggregazione esegue un calcolo su un set di valori e restituisce un valore. In questo modo è possibile generare statistiche di riepilogo per i gruppi a più livelli con un sovraccarico ridotto.

Informazioni sulle funzioni di aggregazione

Le funzioni di aggregazione in Windows Search Structured Query Language (SQL) hanno la sintassi seguente:

AGGREGATE <function> [AS <label>] [,<function> [AS <label>]]*

La parte della funzione può includere una delle funzioni e della sintassi seguenti:

Funzione Descrizione
AVG(<column>) Restituisce la media dei valori in un gruppo. Si applica solo ai numeri.
BYFREQUENCY(<column>, <N>) Restituisce i valori di colonna N più frequenti dai risultati nel gruppo. Include anche un conteggio del numero di volte in cui si è verificato ogni valore e identificatori di documento per i risultati che contengono ogni valore restituito.
CHILDCOUNT() Restituisce il numero di elementi in un gruppo (esclusi i sottogruppi). Se sono presenti più livelli di raggruppamento, viene restituito il numero di gruppi figlio immediati.
COUNT() Restituisce il numero di elementi in un gruppo e tutti i sottogruppi.
DATERANGE(<column>) Restituisce i limiti inferiori e superiori dei valori di colonna trovati nel gruppo di risultati del gruppo. Valido solo per le proprietà filetime.
FIRST(<column>, <N>) Restituisce i primi N valori di colonna dai risultati foglia trovati in un gruppo.
MAX(<column>) Restituisce il valore massimo dell'espressione. Si applica solo a numeri o date.
MIN(<column>) Restituisce il valore minimo nell'espressione. Si applica solo a numeri o date.
REPRESENTATIVEOF(<column>, <idRepresentative>, <N>) Restituisce N valori idRepresentative, ognuno selezionato da uno dei subset dei risultati con un valore di colonna univoco. Ogni valore viene restituito anche con un identificatore di documento con il valore idRepresentative.
SUM(<column>) Restituisce la somma dei valori in un gruppo. Si applica solo ai numeri.

 

 

Nota

Le aggregazioni vengono restituite come singole colonne. Sono principalmente tipi semplici ad eccezione di ByFrequency, First, DateRange e RepresentativeOf che vengono restituiti come tipi composti.

 

È possibile usare qualsiasi colonna numerica o data per le aggregazioni e non solo quelle incluse nella clausola SELECT. Non è tuttavia possibile raggruppare in aggregazioni. Se l'argomento colonna passato non è un tipo numerico o di data, viene restituito un errore di sintassi.

La parte dell'etichetta è facoltativa e fornisce un alias più leggibile per l'etichetta. Se non si include un'etichetta alias, Windows Search trasforma la funzione e il nome della colonna in un'etichetta. Ad esempio, MAX(System.Document.WordCount) diventa MAX_SystemDocumentWordCount.

Gruppi a più livelli e conteggio

Le aggregazioni vengono definite sulle foglie e vengono duplicate. Un'aggregazione accetta come input le foglie del gruppo che lo definisce (documenti) anziché i sottogruppi dei relativi elementi figlio. Questa funzionalità viene definita raggruppamento a più livelli.

Oltre alle aggregazioni definite sulle foglie e duplicate, vengono conteggiate una sola volta. Anche se lo stesso documento potrebbe essere rappresentato più volte in un gruppo, le aggregazioni lo considererebbero una sola volta. Il grafico seguente illustra questo concetto.

diagramma che mostra che le aggregazioni vengono definite sulle foglie e duplicate e vengono conteggiate una sola volta

Esempi di aggregazione

Di seguito sono riportati esempi di funzioni di aggregazione all'interno della clausola GROUP ON:

GROUP ON System.Sender ['d','m','r'] 
    AGGREGATE COUNT() as 'Total',
              MAX(System.Size) as 'Max Size',
              MIN(System.Size) as 'Min Size'
    OVER (SELECT System.Subject FROM systemindex)
              
GROUP ON System.Sender ['d', 'm', 'r']
      AGGREGATE MAX(System.Search.Rank) as 'MaxRank', 
                MIN(System.Search.Rank) as 'MinRank'
      OVER (GROUP ON system.conversationID
                  OVER (SELECT workid, System.ItemUrl FROM systemindex
                        WHERE CONTAINS (*, 'sometext')
                        ORDER BY System.DateCreated))
               
GROUP ON System.FileName [before('a'),before('z')] 
      AGGREGATE MAX(System.Size) as 'maxsize', MIN(System.Size) as 'MinSize' 
      OVER (SELECT System.FileName FROM systemindex
            ORDER BY System.FileName)      
            
GROUP ON System.author 
      AGGREGATE MAX(System.size) as 'maxsize' 
      ORDER BY min(System.Size) 
      OVER (GROUP ON System.DateCreated 
                  AGGREGATE Count() 
                  ORDER BY MAX(System.size) 
                  OVER (SELECT filename, System.DateCreated, System.Size FROM systemindex
                        WHERE CONTAINS('text')))

Valore restituito

Il valore restituito è una variante trovata nel set di righe come proprietà personalizzata, come alias specificati o come "Aggregazioni" se non viene specificata alcuna etichetta alias.