# Aggr - Diagrammfunktion

Aggr() berechnet eine Reihe von Werten für die Formel aggregiert über die angegebene Dimension oder Dimensionen. Beispielsweise den maximalen Umsatzwert pro Kunde oder Region.

Die Aggr-Funktion wird für verschachtelte Aggregierungen verwendet, bei denen der erste Parameter (die innere Aggregierung) einmal pro Dimensionswert berechnet wird. Die Dimensionen werden im zweiten Parameter (und in den folgenden Parametern) angegeben.

Zudem sollte die Funktion Aggr in einer äußeren Aggregierungsfunktion eingeschlossen sein. Dazu wird die Reihe von Ergebnissen der Funktion Aggr als Eingabe für die Aggregierung verwendet, in der sie verschachtelt ist.

Syntax:

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Rückgabe Datentyp: dual

Argumente:

Argumente

| Argument | Beschreibung |
| --- | --- |
| expr | Eine aus einer Aggregierungsfunktion bestehende Formel. Standardmäßig berechnet sich die Aggregierungsfunktion über alle wählbaren Werte. |
| StructuredParameter | StructuredParameter besteht aus einer `Dimension` und optional aus Sortierkriterien im folgenden Format: (Dimension(Sort-type, Ordering))<br><br>Die Dimension ist ein Einzelfeld und kann keine Formel sein. Mithilfe der Dimension wird die Reihe der Werte festgelegt, für die die Formel Aggr berechnet wird.<br><br>Wenn Sortierkriterien enthalten sind, wird die Reihe der von der Aggr-Funktion erstellten und für die Dimension berechneten Werte sortiert. Dies ist wichtig, wenn die Sortierreihenfolge das Ergebnis der in der Aggr-Funktion eingeschlossenen Formel beeinflusst.<br><br>Details zur Verwendung der Sortierkriterien finden Sie unter [Hinzufügen von Sortierkriterien zur Dimension im strukturierten Parameter](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| SetExpression | Standardmäßig berechnet sich die Aggregierungsfunktion über alle wählbaren Werte. Alternativ können Sie die der Berechnung zugrunde liegenden Werte über die Auswahlformel bestimmen. |
| DISTINCT | Wird dem Formelargument der Qualifizierer distinct vorangestellt oder wird gar kein Qualifizierer verwendet, generiert jede einzelne Kombination aus Dimensionswerten nur einen Rückgabewert. So werden Aggregierungen normalerweise verwendet – jede unterschiedliche Kombination aus Dimensionswerten ergibt eine Zeile im Diagramm. |
| NODISTINCT | Wird dem Formelargument der Qualifizierer nodistinct vorangestellt, kann jede Kombination aus Dimensionswerten abhängig von der zugrunde liegenden Datenstruktur mehrere Rückgabewerte generieren. Ist nur eine Dimension vorhanden, gibt die Funktion aggr ein Array mit so vielen Elementen zurück, wie Zeilen in den Quelldaten vorhanden sind. |

Grundlegende Aggregierungsfunktionen wie Sum, Min und Avg geben einen einzelnen numerischen Wert zurück. Die Funktion Aggr() kann hingegen mit dem Erstellen einer temporären abgestuften Trefferliste (einer virtuellen Tabelle) verglichen werden, mit der eine weitere Aggregierung durchgeführt werden kann. Beispielsweise ergibt sich durch die Berechnung eines durchschnittlichen Verkaufswerts durch Addieren der Verkäufe pro Kunde in einer Aggr()-Anweisung und anschließender Berechnung des Durchschnitts der summierten Ergebnisse: Avg(TOTAL Aggr(Sum(Sales),Customer)).

TipphinweisVerwenden Sie die Funktion Aggr() in berechneten Dimensionen, wenn Sie verschachtelte Diagrammaggregierungen auf mehreren Ebenen erstellen möchten.

Beschränkungen:

Jede Dimension in einer Aggr()-Funktion muss ein einzelnes Feld sein und darf keine Formel (berechnete Dimension) sein.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Hinzufügen von Sortierkriterien zur Dimension im strukturierten Parameter

In seiner Grundform ist das Argument StructuredParameter in der Aggr-Funktionssyntax eine einzelne Dimension. Mit der Formel Aggr(Sum(Sales, Month)) wird der Gesamtumsatz für jeden Monat ermittelt. Bei Einschluss in einer anderen Aggregierungsfunktion kann es jedoch zu unerwarteten Ergebnissen kommen, sofern keine Sortierkriterien verwendet werden. Das liegt daran, dass manche Dimensionen numerisch, alphabetisch usw. sortiert werden können.

Im StructuredParameter-Argument in der Aggr-Funktion können Sie die Sortierkriterien für die Dimension in Ihrer Formel angeben. Auf diese Weise wenden Sie eine Sortierreihenfolge auf die virtuelle Tabelle an, die von der Aggr-Funktion erstellt wird.

Das Argument StructuredParameter weist die folgende Syntax auf:

(FieldName, (Sort-type, Ordering))

Strukturierte Parameter können verschachtelt werden:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Der Sortiertyp kann NUMERIC, TEXT, FREQUENCY oder LOAD\_ORDER sein.

Die mit jedem Ordnungstyp verknüpften Sortiertypen lauten wie folgt:

Zulässige Ordnungstypen

| Sortiertyp | Zulässige Ordnungstypen |
| --- | --- |
| NUMERIC | ASCENDING, DESCENDING oder REVERSE |
| TEXT | ASCENDING, A2Z, DESCENDING, REVERSE oder Z2A |
| FREQUENCY | DESCENDING, REVERSE oder ASCENDING |
| LOAD\_ORDER | ASCENDING, ORIGINAL, DESCENDING oder REVERSE |

Die Ordnungstypen REVERSE und DESCENDING sind gleichwertig.

Für den Sortiertyp TEXT sind die Ordnungstypen ASCENDING und A2Z gleichwertig und DESCENDING, REVERSE und Z2A sind gleichwertig.

Für den Sortiertyp LOAD\_ORDER sind die Ordnungstypen ASCENDING und ORIGINAL gleichwertig.

## Beispiele: Diagrammformeln mit Verwendung von Aggr

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)

#### Beispiele – Diagrammformeln

### Diagrammformel – Beispiel 1

#### Ladeskript

Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor, um das folgende Diagrammformelbeispiel zu erstellen.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|CC|0|19
] (delimiter is '|');
```

Weitere Informationen über Inline-Ladevorgänge finden Sie unter [Verwenden von Inline-Ladevorgängen zum Laden von Daten](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Diagrammformel

Erstellen Sie eine KPI-Visualisierung in einem Qlik Sense Arbeitsblatt. Fügen Sie die folgende Formel als Kennzahl zum KPI hinzu:

`Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))`

#### Ergebnis

376.7

#### Erläuterung

Die Formel `Aggr(Sum(UnitSales*UnitPrice), Customer)` findet den Gesamtwert der Verkäufe pro Customer und gibt eine Reihe von Werten zurück: 295, 715 und 120 für die drei Customer-Werte.

Wir haben die Werte temporär aufgelistet, ohne dass eine separate Tabelle oder Spalte mit diesen Werten erstellt wurde.

Diese Werte werden als Input für die Avg()-Funktion genutzt, um den durchschnittlichen Verkaufswert zu bestimmen: 376.7.

Weitere Informationen zu Formeln finden Sie unter [Arbeiten mit Formeln in Visualisierungen](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Diagrammformel – Beispiel 2

#### Ladeskript

Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor, um das folgende Diagrammformelbeispiel zu erstellen.

```
ProductData:

LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|BB|7|12
Betacab|CC|2|22
Betacab|CC|4|20
Betacab|DD|25|25
Canutility|AA|8|15
Canutility|AA|5|11
Canutility|CC|0|19
] (delimiter is '|');
```

Weitere Informationen über Inline-Ladevorgänge finden Sie unter [Verwenden von Inline-Ladevorgängen zum Laden von Daten](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Diagrammformel

Erstellen Sie eine Tabellenvisualisierung in einem Qlik Sense Arbeitsblatt mit Customer, Product, UnitPrice und UnitSales als Dimensionen. Fügen Sie die folgende Formel als Kennzahl zur Tabelle hinzu:

`Aggr(NODISTINCT Max(UnitPrice), Customer, Product)`

#### Ergebnis

| Customer | Product | UnitPrice | UnitSales | Aggr(NODISTINCT Max(UnitPrice), Customer, Product) |
| --- | --- | --- | --- | --- |
| Astrida | AA | 15 | 10 | 16 |
| Astrida | AA | 16 | 4 | 16 |
| Astrida | BB | 9 | 9 | 15 |
| Astrida | BB | 15 | 10 | 15 |
| Betacab | BB | 10 | 5 | 12 |
| Betacab | BB | 12 | 7 | 12 |
| Betacab | CC | 20 | 4 | 22 |
| Betacab | CC | 22 | 2 | 22 |
| Betacab | DD | 25 | 25 | 25 |
| Canutility | AA | 11 | 5 | 15 |
| Canutility | AA | 15 | 8 | 15 |
| Canutility | CC | 19 | 0 | 19 |

#### Erläuterung

Ein Werte-Array: 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 und 19. Der Qualifizierer nodistinct bedeutet, dass die Werte ein Element für jede Zeile in den Quelldaten enthalten: jeder Wert ist der Maximalwert von UnitPrice für jeden Customer und jedes Product.

### Diagrammformel – Beispiel 3

#### Ladeskript

Laden Sie die folgenden Daten als Inline-Ladevorgang in den Dateneditor, um das folgende Diagrammformelbeispiel zu erstellen.

```
Set vNumberOfOrders = 1000;

OrderLines:
Load
	RowNo() as OrderLineID,
	OrderID,
	OrderDate,
	Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales
	While Rand()<=0.5 or IterNo()=1;
Load * Where OrderDate<=Today();
Load 
	Rand() as Rand1,
	Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate,
	RecNo() as OrderID
	Autogenerate vNumberOfOrders;
    
Calendar:
Load distinct
	Year(OrderDate) as Year,
	Month(OrderDate) as Month,
	OrderDate 
	Resident OrderLines;
```

#### Diagrammformeln

Erstellen Sie eine Tabellenvisualisierung in einem Qlik Sense Arbeitsblatt mit Year und Month als Dimensionen. Fügen Sie die folgenden Formeln als Kennzahlen zur Tabelle hinzu:

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` in der Tabelle als „Structured Aggr()“ beschriftet.

#### Ergebnis

| Year | Month | Sum(Sales) | Structured Aggr() |
| --- | --- | --- | --- |
| 2013 | Jan | 53495 | 53495 |
| 2013 | Feb | 48580 | 102075 |
| 2013 | Mar | 25651 | 127726 |
| 2013 | Apr | 36585 | 164311 |
| 2013 | May | 61211 | 225522 |
| 2013 | Jun | 23689 | 249211 |
| 2013 | Jul | 42311 | 291522 |
| 2013 | Aug | 41913 | 333435 |
| 2013 | Sep | 28886 | 362361 |
| 2013 | Oct | 25977 | 388298 |
| 2013 | Nov | 44455 | 432753 |
| 2013 | Dec | 64144 | 496897 |
| 2014 | Jan | 67775 | 67775 |

#### Erläuterung

Dieses Beispiel zeigt die aggregierten Werte über einen Zwölf-Monats-Zeitraum für jedes Jahr in chronologischer aufsteigender Reihenfolge. Daher sind die strukturierten Parameter (Numerisch, Aufsteigend) Teil der Formel Aggr(). Zwei spezifische Dimensionen sind als strukturierte Parameter erforderlich: Year und Month, sortiert (1) Year (numerisch) und (2) Month (numerisch). Diese beiden Dimensionen müssen in der Tabellen- oder Diagrammvisualisierung verwendet werden. Das ist erforderlich, damit die Dimensionsliste der Funktion Aggr() mit den Dimensionen des in der Visualisierung verwendeten Objekts übereinstimmt.

Sie können den Unterschied zwischen diesen Kennzahlen in einer Tabelle oder in getrennten Liniendiagrammen vergleichen:

* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year), 
  	(Month)
  	))`
* `Sum(Aggr(
  	Rangesum(Above(Sum(Sales),0,12)), 
  	(Year, (Numeric, Ascending)), 
  	(Month, (Numeric, Ascending))
  	))`

Es sollte klar zu sehen sein, dass nur die letztere Formel die gewünschte Akkumulierung der aggregierten Werte durchführt.

## Weitere Informationen

* [Einfache Aggregierungsfunktionen](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Aggregierung mit Auswahlformeln](https://help.qlik.com/de-DE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)