Aggregatfunktionen

Eine Aggregatfunktion führt eine Berechnung für eine Gruppe von Werten aus und gibt einen Wert zurück. Auf diese Weise können Sammelstatistiken für Gruppen mit mehreren Ebenen mit geringem Aufwand generiert werden.

Informationen zu Aggregatfunktionen

Aggregatfunktionen in Windows Search strukturierte Abfragesprache (SQL) weisen die folgende Syntax auf:

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

Der Funktionsteil kann eine der folgenden Funktionen und Syntax enthalten:

Funktion BESCHREIBUNG
AVG(<Spalte>) Gibt den Mittelwert der Werte in einer Gruppe zurück. Gilt nur für Zahlen.
BYFREQUENCY(<column>, <N>) Gibt die häufigsten N-Spaltenwerte aus den Ergebnissen in der Gruppe zurück. Enthält außerdem die Anzahl der Vorkommen jedes Werts und Dokumentbezeichner für Ergebnisse, die jeden zurückgegebenen Wert enthalten.
CHILDCOUNT() Gibt die Anzahl der Elemente in einer Gruppe zurück (mit Ausnahme von Untergruppen). Wenn mehrere Gruppierungsebenen vorhanden sind, wird die Anzahl der unmittelbar untergeordneten Gruppen zurückgegeben.
COUNT() Gibt die Anzahl der Elemente in einer Gruppe und allen Untergruppen zurück.
DATERANGE(<column>) Gibt die Unter- und Obergrenze der Spaltenwerte zurück, die in der Gruppenergebnisgruppe gefunden wurden. Nur für filetime-Eigenschaften gültig.
FIRST(<column>, <N>) Gibt die ersten N-Spaltenwerte aus Blattergebnissen zurück, die in einer Gruppe gefunden wurden.
MAX(<spalte>) Gibt den größten Wert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
MIN(<spalte>) Gibt den kleinsten Wert im Ausdruck zurück. Gilt nur für Zahlen oder Datumsangaben.
REPRESENTATIVEOF(<column>, <idRepresentative>, <N>) Gibt N idRepresentative-Werte zurück, die jeweils aus einer der Ergebnisteilmengen ausgewählt sind, die über einen eindeutigen Spaltenwert verfügen. Jeder Wert wird auch mit einem Dokumentbezeichner zurückgegeben, der den Wert idRepresentative aufweist.
SUMME(<Spalte>) Gibt die Summe der Werte in einer Gruppe zurück. Gilt nur für Zahlen.

 

 

Hinweis

Aggregate werden als einzelne Spalten zurückgegeben. Es handelt sich meist um einfache Typen mit Ausnahme von ByFrequency, First, DateRange und RepresentativeOf, die als Verbundtypen zurückgegeben werden.

 

Sie können eine beliebige numerische oder Datumsspalte für Aggregationen verwenden, und nicht nur diejenigen, die sich in der SELECT-Klausel befinden. Sie können jedoch nicht nach Aggregaten gruppieren. Ein Syntaxfehler wird zurückgegeben, wenn das übergebene Spaltenargument weder ein numerischer Typ noch ein Datumstyp ist.

Der Bezeichnungsteil ist optional und bietet einen besser lesbaren Alias für die Bezeichnung. Wenn Sie keine Aliasbezeichnung einschließen, transformiert Windows Search die Funktion und den Spaltennamen in eine Bezeichnung. Beispielsweise wird MAX(System.Document.WordCount) zu MAX_SystemDocumentWordCount.

Gruppen und Zählen auf mehreren Ebenen

Aggregate werden über Blätter definiert und dupliziert. Ein Aggregat verwendet als Eingabe die Blätter der Gruppe, die es definiert (Dokumente), und nicht die Untergruppen seiner untergeordneten Elemente. Diese Funktionalität wird als Gruppierung mit mehreren Ebenen bezeichnet.

Zusätzlich zu den Aggregaten, die über Blätter definiert und dupliziert werden, werden sie nur einmal gezählt. Während dasselbe Dokument möglicherweise mehrmals unter einer Gruppe dargestellt wird, würden Aggregate es nur einmal in Betracht ziehen. Die folgende Abbildung veranschaulicht dieses Konzept.

Diagramm, das zeigt, dass Aggregate über Blätter definiert und dupliziert werden und nur einmal gezählt werden

Aggregatbeispiele

Im Folgenden sind Beispiele für Aggregatfunktionen innerhalb der GROUP ON-Klausel aufgeführt:

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')))

Rückgabewert

Der Rückgabewert ist eine Variante, die im Rowset als benutzerdefinierte Eigenschaft gefunden wird, entweder als die angegebenen Aliase oder als "Aggregates", wenn keine Aliasbezeichnung angegeben ist.