# Aggregatfunktion

Eine Aggregatfunktion (auch Aggregierungsfunktion oder Aggregationsfunktion) ist eine Funktion, die gewisse Eigenschaften von Daten zusammenfasst.

## Unterteilungen

Die bei einer Aggregation verwendeten Funktionen lassen sich unterteilen in distributive Funktionen, algebraische Funktionen und holistische Funktionen.

### Distributive Funktionen

Beispiele:
* Summe (SUM)
* Anzahl (COUNT)
* Maximum (MAX)
* Minimum (MIN)
* Top-N
Formal lässt sich eine distributive Funktion $F$ wie folgt beschreiben: Man teilt den zu aggregierenden Datenbestand in $J$ Partitionen auf und es sei $X_{i}$ das Attribut, welches aggregiert werden soll. Dann gibt es eine Funktion $G$, die auf einer Menge derselben Ergebnisse wie $F$ operiert, und $F$ lässt sich darstellen als:
$F(\{X_{i}\})=G(\{F(\{X_{i,j}\})|j=1\dots J)\})$.
Dabei ist $\{X_{i}\}$ die Gesamtheit aller Attributwerte im Datenbestand und $\{X_{i,j}\}$ sind diejenigen Attributwerte, die in der Partition $j$ liegen.
Beispielsweise gilt für die Funktion Anzahl (COUNT):
${\begin{aligned}F&=COUNT,F:Menge\rightarrow \mathbb {N} ,F(s)=|s|\\G&=SUM,G:\mathbb {N} ^{J}\rightarrow \mathbb {N} \end{aligned}}$
Man berechnet also erst die Kardinalität der einzelnen Partitionen und summiert dann die Einzelergebnisse auf.

### Algebraische Funktionen

Beispiele:
* Mittelwert (AVG)
* gestutzter Mittelwert (truncated AVG)
* Standardabweichung...
Ganz analog zu vorher werden algebraisch Funktionen definiert, jedoch hat man hier größere Freiheit, was die Funktion betrifft, die auf den einzelnen Partitionen arbeitet. Musste man hier zuvor dieselbe Funktion $F$ anwenden, die auch auf dem gesamten Datenbestand angewendet wird, so kann man hier eine andere Funktion $H$ wählen. Damit besitzt eine algebraische Aggregationsfunktion $F$ folgende Darstellung:
$F(\{X_{i}\})=G(\{H(\{X_{i,j}\})|j=1\dots J)\})$.
Dabei ist $G$ eine Funktion, die auf einer Menge von Ergebnistupeln der Funktion $H$ operiert. $\{X_{i}\}$ und $\{X_{i,j}\}$ sind definiert wie oben.
Beispielsweise gilt für die Funktion Durchschnitt (AVG):
${\begin{aligned}&H:{\text{Menge von }}\mathbb {R} \rightarrow (\mathbb {R} ,\mathbb {N} ),s\mapsto (\sum _{x\in s}x,|s|)\\&G:{\text{Menge von }}(\mathbb {R} ,\mathbb {N} )\rightarrow \mathbb {R} ,s\mapsto {\frac {\sum _{x\in s}x.first}{\sum _{x\in s}x.second}}\end{aligned}}$
Die Ausdrücke $x.first$ und $x.second$ bezeichnen dabei das erste beziehungsweise zweite Element eines 2-Tupels.
Anschaulich gesprochen wird also für jede Partition ein Tupel aus Gesamtsumme und Anzahl der Tupel dieser Partition berechnet. Anschließend errechnet sich der Gesamtdurchschnitt einfach aus der Gesamtsumme geteilt durch die Gesamtanzahl.

### Holistische Funktionen

Beispiele:
* Median
* Rang
* Percentile
* häufigster Wert
Holistische Funktionen sind Aggregationsfunktionen, für die keine der beiden vorhergehenden Definitionen zutrifft.

## Berechnung

Distributive und algebraische Aggregatfunktion können aus einem oder einer festen Menge von Fakten aus tiefer liegenden Klassifikationsstufen berechnet werden, während bei holistischen Aggregatfunktionen auf die Grundgesamtheit aller Fakten zurückgegriffen werden muss. Distributive und algebraische Funktionen sind daher eher "gutmütig", d. h. man kann sie parallelisieren oder schrittweise ausführen (geringerer Speicherplatzbedarf!), wohingegen dies bei holistischen Funktionen nicht möglich ist.