# Aggr - diagramfunktion

Aggr() returnerar en uppsättning värden för uttrycket beräknade över den angivna dimensionen eller de angivna dimensionerna. Exempelvis det maximala värdet av försäljningen, per kund, per region.

Aggr-funktionen används för nästlade aggregeringar där den första parametern (den inre aggregeringen) beäknas en gång per dimensionsvärde. Dimensionerna anges i den andra parametern (och efterföljande parametrar).

Dessutom ska Aggr-funktionen omslutas av en yttre aggregeringsfunktion där matrisen med resultat från Aggr-funktionen används som indata till den aggregering som den är nästlad i.

Syntax:

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

Returnerad datatyp: dual

Argument:

Argument

| Argument | Beskrivning |
| --- | --- |
| expr | Ett uttryck som består av en aggregeringsfunktion. Som standard kommer aggregeringsfunktionen att aggregera över den uppsättning möjliga poster som definierats av urvalet. |
| StructuredParameter | StructuredParameter består av en dimension2 och ett (valfritt) sorteringskriterium i formatet: `(Dimension(Sort-type, Ordering))`<br><br>Dimensionen är ett enda fält och kan inte vara ett uttryck. Dimensionen används för att bedöma vilken uppsättning med värden som Aggr-uttrycket ska beräknas på.<br><br>Om sorteringskriterier används, sorteras den uppsättning med värden som skapas av Aggr-funktionen och som beräknats för dimensionen. Detta är viktigt när sorteringsordningen påverkar resultatet av det uttryck som Aggr-funktionen är innesluten i.<br><br>Mer information om hur du använder sorteringskriterier finns i [Lägga till sorteringskriterier till dimensionen i den strukturerade parametern](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm#Sorting). |
| SetExpression | Som standard kommer aggregeringsfunktionen att aggregera över den uppsättning möjliga poster som definierats av urvalet. En alternativ uppsättning poster kan definieras med ett uttryck för set-analys. |
| DISTINCT | Om uttrycksargumentet föregås av kvalificeraren distinct, eller om ingen kvalificerare alls används, kommer varje distinkt kombination av dimensionsvärden endast att generera ett returvärde. Det är normalt så här aggregeringar skapas - varje distinkt kombination av dimensionsvärden ger en rad i diagrammet. |
| NODISTINCT | Om uttrycksargumentet föregås av kvalificeraren nodistinct kan varje kombination av dimensionsvärden generera mer än ett returvärde, beroende på den underliggande datastrukturen. Om det bara finns en dimension, returnerar funktionen aggr en uppsättning med samma antal element som det finns rader i källdata. |

Grundläggande aggregeringsfunktioner, såsom Sum, Min och Avg, returnerar ett enda numeriskt värde, medan funktionen Aggr() kan jämföras med att skapa en temporär uppsättning med resultat (en virtuell tabell), över vilken en annan aggregering kan göras. Detta kan exempelvis göras genom att beräkna ett genomsnittligt försäljningsvärde genom att summera försäljningen efter kund i en Aggr()-sats och sedan beräkna genomsnittet av de summerade resultaten: Avg(TOTAL Aggr(Sum(Sales),Customer)).

Anteckning om tipsAnvänd Aggr()-funktionen i beräknade dimensioner om du vill skapa kapslade diagramaggregeringar på flera nivåer.

Begränsningar:

Varje dimension i en Aggr()-funktion måste bestå av ett enda fält. Den får inte vara ett uttryck (beräknad dimension).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/aggr.htm)Lägga till sorteringskriterier till dimensionen i den strukturerade parametern

I sin grundläggande form är argumentet StructuredParameter i syntaxen för Aggr-funktionen en enda dimension. Uttrycket: Aggr(Sum(Sales, Month)) hittar det totala värdet för försäljning per månad. Om det innesluts i en annan aggregeringsfunktion kan det dock ge oväntade resultat om inte sorteringskriterier används. Det beror på att en del dimensioner kan sorteras numeriskt eller alfabetiskt, och så vidare.

I StructuredParameter-argumentet i Aggr-funktionen kan du ange sorteringskriterier för dimensionen i dina uttryck. På så sätt fastställer du en sorteringsordning för den virtuella tabell som produceras av Aggr-funktionen.

Argumentet StructuredParameter har följande syntax:

(FieldName, (Sort-type, Ordering))

Strukturerade parametrar kan kapslas:

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

Sorteringstypen kan vara: NUMERIC, TEXT, FREQUENCY eller LOAD\_ORDER.

Ordningstyperna som är associerade med varje sorteringstyp är som följer:

Tillåtna ordningstyper

| Sorteringstyp | Tillåtna ordningstyper |
| --- | --- |
| NUMERIC | ASCENDING, DESCENDING eller REVERSE |
| TEXT | ASCENDING, A2Z, DESCENDING, REVERSE eller Z2A |
| FREQUENCY | DESCENDING, REVERSE eller ASCENDING |
| LOAD\_ORDER | ASCENDING, ORIGINAL, DESCENDING eller REVERSE |

Ordningstyperna REVERSE och DESCENDING är motsvarigheter.

För sorteringstypen TEXT är ordningstyperna ASCENDING och A2Z motsvarigheter, och DESCENDING, REVERSE och Z2A är motsvarigheter.

För sorteringstypen LOAD\_ORDER är ordningstyperna ASCENDING och ORIGINAL motsvarigheter.

## Exempel: diagramuttryck som använder Aggr

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

#### Exempel – diagramuttryck

### Diagramuttryck exempel 1

#### Laddningsskript

Ladda följande data som en inline-laddning i Skriptredigeraren för att skapa diagramuttrycksexemplet nedan.

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

Mer information om hur du använder inline-laddningar finns i [Använda inline-laddningar för att ladda data](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Diagramuttryck

Skapa en KPI-visualisering i ett Qlik Sense-ark. Lägg till följande uttryck i KPI-visualiseringen som ett mått:

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

#### Resultat

376.7

#### Förklaring

Uttrycket `Aggr(Sum(UnitSales*UnitPrice), Customer)` hittar det totala värdet för försäljning utifrån Customer, och returnerar en uppsättning med värden: 295, 715 och 120 för de tre Customer-värdena.

Vi har i praktiken skapat en tillfällig lista med värden utan att ha behövt skapa en explicit tabell eller kolumn som innehåller dessa värden.

De här tre värdena används som indata för funktionen Avg() som räknar ut medelvärdet för försäljning, 376.7.

Mer information om uttryck finns i [Använda uttryck i visualiseringar](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

### Diagramuttryck exempel 2

#### Laddningsskript

Ladda följande data som en inline-laddning i Skriptredigeraren för att skapa diagramuttrycksexemplet nedan.

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

Mer information om hur du använder inline-laddningar finns i [Använda inline-laddningar för att ladda data](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

#### Diagramuttryck

Skapa en tabellvisualisering i ett Qlik Sense-ark med Customer, Product, UnitPrice och UnitSales som dimensioner. Lägg till följande uttryck i tabellen som ett mått:

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

#### Resultat

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

#### Förklaring

En uppsättning med värden: 16, 16, 15, 15, 12, 12, 22, 22, 25, 15, 15 och 19. Kvalificeraren nodistinct innebär att uppsättningen innehåller ett element för varje rad i källdata: varje är maximalt UnitPrice för varje Customer och Product.

### Diagramuttryck exempel 3

#### Laddningsskript

Ladda följande data som en inline-laddning i Skriptredigeraren för att skapa diagramuttrycksexemplet nedan.

```
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;
```

#### Diagramuttryck

Skapa en tabellvisualisering i ett Qlik Sense-ark med Year och Month som dimensioner. Lägg till följande uttryck i tabellen som mått:

* `Sum(Sales)`
* `Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))` har etiketten Structured Aggr() i tabellen.

#### Resultat

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

#### Förklaring

Det här exemplet visar aggregerade värden under en tolvmånadersperiod för varje år i kronologiskt stigande ordning, vilket förklarar de strukturerade parametrarna (Numeric, Ascending) i uttrycket Aggr(). Två specifika dimensioner krävs som strukturerade parametrar: Year och Month, sorterat (1) Year (numeriskt) och (2) Month (numeriskt). Dessa två dimensioner måste användas i tabellen eller diagramvisualiseringen. Det krävs för att dimensionslistan i funktionen Aggr() ska motsvara dimensionerna i objektet som används i visualiseringen.

Du kan jämföra skillnaden mellan dessa mått i en tabell eller i separata linjediagram:

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

Det bör vara tydligt att endast det senare uttrycket utför den önskade ackumuleringen av aggregerade värden.

## Mer information

* [Grundläggande aggregeringsfunktioner](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/basic-aggregation-functions.htm)
* [Set-analys](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)