# Aggregation (OLAP)

Aggregation (auch Konsolidierung oder Verdichtung) bezeichnet, im Zusammenhang mit der Verwaltung großer Datenmengen in einem Data-Warehouse, das Zusammenfassen einer Reihe von Fakten zu einem einzelnen Fakt. Beispielsweise lassen sich aus einer Menge von Zahlen der Mittelwert, das Minimum bzw. Maximum oder die Summe bestimmen. Solche Funktionen, die einer Menge von Zahlen einen einzelnen Wert zuordnen, nennt man Aggregationsfunktionen (oder Zusammenfassungsfunktionen). Das Ergebnis wird dann stellvertretend für die Quelldaten verwendet. Der umgekehrte Weg wird als Verfeinerung bezeichnet.
Aggregation und Verfeinerung sind Operationen des Online Analytical Processing (OLAP). Sie bilden einen OLAP-Würfel (englisch cube) auf einen kleineren (Aggregation) oder größeren (Verfeinerung) Würfel ab. Die Operationen finden entlang von Klassifikationspfaden statt und verändern somit die Klassifikationsstufen (auch: Konsolidierungsebenen) der einzelnen Dimensionen.
Die entsprechenden Operationen in einem DBMS werden auch als „Roll up“ und „Roll/Drill down“ bezeichnet. Eine einfache Aggregation ist in SQL mittels GROUP BY möglich.
Einige Multidimensionale Datenbanken verwenden eine memory-basierte Analyse. Sie ermöglichen durch die hohe Performance des Speichermediums und der begrenzten Datenmenge Aggregationen zum Zeitpunkt der Abfrage (Berechnung on-the-fly).

## Beispiel

Ein Data-Warehouse enthält als einzelne Fakten Verkäufe nach Datum, Branche und Geschäft. Die Datumsdimension enthält einen Klassifikationspfad mit den Klassifikationsstufen Tag-Monat-Jahr-TOP. Durch Aggregation entlang dieses Pfades lässt sich bei Verwendung der Summenfunktion beispielsweise die Anzahl der Verkäufe nach Jahr, Branche und Geschäft ermitteln. Bei Aggregation auf die oberste Klassifikationsstufe TOP fällt die Datumsdimension zusammen; der Ergebniscube enthält die Gesamtanzahl der Verkäufe aller Zeiten nach Branche und Geschäft. Die Anwendung von Aggregat-Funktionen und ggfs. weiterer arithmetischer Operationen zur Ermittlung einer einzigen Zahl nennt man auch die Ermittlung einer Kennzahl oder eines Key Performance Indicators (KPI).

## Aggregatfunktionen

Aggregatfunktionen sind Funktionen, die gewisse Eigenschaften zusammenfassen. Die bei einer Aggregation verwendeten Funktionen lassen sich unterteilen in
* Distributive Funktionen: Summe (SUM), Anzahl (COUNT), Maximum (MAX), Minimum (MIN)...
* Algebraische Funktionen: Mittelwert (AVG), gestutzter Mittelwert (truncated AVG), Standardabweichung, Top-N...
* Holistische Funktionen: Median, Rang, Percentile, häufigster Wert...

## Aggregierbarkeit
### Anforderungen an die Dimensionen

* Überlappungsfreiheit der Zuordnung von Klassifikationsknoten. Beispiel: die Fachrichtung eines Studenten ist nicht überlappungsfrei, denn man kann nicht ausschließen, dass ein Student für mehrere Fachrichtungen eingeschrieben ist.
* Vollständigkeit der Zerlegung pro Klassifikationsstufe. Beispiele: Die Postleitzahl vom Hauptwohnsitz eines Einwohners ist nicht vollständig, denn es gibt auch Einwohner, die keinen festen Wohnsitz haben. Sie erfordern die Erweiterung der Dimension um eine null-Ausprägung oder eine 'sonstige'-Ausprägung.
* Typverträglichkeit von Fakt und Aggregatfunktion. Beispiel: für Durchschnittswerte ist eine nochmalige Durchschnittsbildung auf einer höheren Aggregationsebene meist nicht möglich.

### Datentypen der Fakten sind

* voll aggregierbar, wenn alle Fakten, die einen Fluss eines Gutes in einer bestimmten Zeiteinheit quantitativ beschreiben. Hier sind alle Aggregat-Funktionen sinnvoll einsetzbar. Beispiele: Umsatz, Kosten, Stromverbrauch, Warenausgang.
* teilaggregierbar, wenn alle Fakten, bei denen einige Aggregat-Funktionen nicht oder nur eingeschränkt eingesetzt werden können. Das sind 1. alle Fakten vom Typ Stück oder Bestand. Sie beschreiben eine vorhandene Menge zu einem bestimmten Zeitpunkt. Beispiel: Anzahl der Einwohner, Hochwasserpegel, Kontostand. Diese Fakten können nicht über die Zeit-Dimension summiert werden. Über andere Dimensionen, die den Bezug zum selben Zeitpunkt erhalten, können sie schon summiert werden. 2. gibt es noch weitere Gründe, die die Anwendung einiger Aggregat-Funktionen einschränken. Beispiele: Schulnoten, Datumsangaben, Durchschnittswerte. Hier sind Summierung grundsätzlich nicht sinnvoll oder überhaupt nicht definiert. Die meisten anderen Aggregat-Funktionen können schon angewendet werden.
* nicht aggregierbar, wenn alle Fakten, bei denen überhaupt keine Aggregatfunktionen sinnvoll eingesetzt werden können. Beispiel: Warengruppen, Postleitzahlen, Kontonummern, Nachnamen. Wenn für den Datentyp keine Ordnung (Sortierbarkeit) definiert ist, dann sind noch nicht einmal die Funktionen Maximum und Minimum anwendbar.

### Dimensionshierarchie und Aggregationspfade

Dimensionen lassen sich oft als Hierarchien gliedern.
Wenn jeder Knoten funktional abhängig ist von seinen Vorgängern, dann kann sich ein linearer Aggregationspfad ergeben. Beispiel:
Es kann vorkommen, dass in einer Dimension unterschiedliche Aggregationspfade möglich sind. Beispiel:
Es gibt zwei verschiedene Aggregationspfade, um vom Tag zum Jahr zu führen. Beide liefern dasselbe Ergebnis. Von der Woche kann man jedoch nicht zum Monat gelangen und auch umgekehrt nicht.
An diesem Beispiel wird auch deutlich, dass unterschiedliche Aggregationspfade oft die Gefahr beinhalten, dass die Ergebnisse doch nicht exakt übereinstimmen. Wenn der Jahreswechsel nicht gleichzeitig mit dem Wechsel einer Woche zusammenfällt, dann kann es bei den beiden Aggregationspfaden zu Abweichungen kommen. Für die Behandlung der letzten Woche im Jahr muss eine eindeutige Handhabung gefunden werden, sonst ist der Aggregationspfad Tag --- Woche --- Jahr falsch.