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.
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.