Gå till huvudinnehåll Gå till ytterligare innehåll

Aggr

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, i vilka dess första parameter (den inre aggregeringen) är beräknad en gång per dimensionellt värde. Dimensionerna specificeras i den andra paramtern (och följande parametrar).

Dessutom bör Aggr-funktionen vara omsluten av en annan aggregeringsfunktion och använda resultatmatrisen från Aggr-funktionen som indata för aggregeringen den är nästlad i

Syntax:  

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

Returnerad datatyp: dual

Argument:  

  • 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 dimension och om du väljer det, sorteringskriterier i formatet: (Dimension(Sort-type, Ordering)). Dimensionen är ett enda fält och kan inte vara ett uttryck. Dimensionen används för att avgöra värdematrisen som uttrycket Aggr är beräknat för.

    Om sorteringskriterier tas med sorteras värdematrisen som skapas av funktionen Aggr för dimensionen. Detta är viktigt när sorteringsordningen påverkar resultatet av uttrycket som funktionen Aggr är inkapslad i. Mer information om hur sorteringskriterier kan användas finns i Lägga till sorteringskriterier till dimensionen i den strukturerade parametern.

  • 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, som Sum, Min och Avg, returnerar ett enda numeriskt värde. Funktionen Aggr() kan däremot jämföras med att skapa en tillfällig resultatuppsättning (en virtuell tabell) som en annan aggregering kan utföras över. Genom att till exempel beräkna ett medelvärde för försäljning genom att lägga ihop försäljningen efter kund i en Aggr()-sats och sedan beräkna medelvärdet för det hoplagda resultatet: 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 vara ett enda fält. Den får inte vara ett uttryck (beräknad dimension).

Lägga till sorteringskriterier till dimensionen i den strukturerade parametern

I sin grundläggande form är argumentet StructuredParameter i Aggr -funktionssyntaxen en enda dimension. Uttrycket: Aggr(Sum(Sales, Month)) hittar det totala värdet av försäljningen för varje månad. Emellertid kan oväntade resultat uppstå om sorteringskriterier inte används om det omsluts av en annan aggregeringsfunktion. Detta beror på att vissa dimensioner kan sorteras numeriskt eller alfabetiskt och så vidare.

I StructuredParameter-argumentet i Aggr-funktionen kan du ange sorteringskriterier för dimensionen i ditt uttryck. På så sätt tillämpar du en sorteringsordning på den virtuella tabellen som produceras av Aggr-funktionen.

Argumentet StructuredParameter har följande syntax:

(FieldName, (Sort-type, Ordering))

Strukturerade parametrar kan vara kapslade:

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

Sorteringstyp kan vara: NUMERIC, TEXT, FREQUENCY eller LOAD_ORDER.

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

Sorteringsordningstyper
SorteringstypTillgängliga ordningstyper
NUMERICASCENDING, DESCENDING eller REVERSE
TEXTASCENDING, A2Z, DESCENDING, REVERSE eller Z2A
FREQUENCYDESCENDING, REVERSE eller ASCENDING
LOAD_ORDERASCENDING, ORIGINAL, DESCENDING eller REVERSE

Ordningstyperna REVERSE och DESCENDING är likvärdiga.

För sorteringstypen TEXT är ordningstyperna ASCENDING och A2Z likvärdiga, och DESCENDING, REVERSE och Z2A också likvärdiga.

För sorteringstypen LOAD_ORDER är ordningstyperna ASCENDING och ORIGINAL likvärdiga.

Exempel

Exempel 1:  

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

Uttrycket Aggr(Sum(UnitSales*UnitPrice), Customer) hittar det totala värdet av försäljningen efter Customer och returnerar en värdematris: 295, 715 och 120 för de tre Customer-värdena.

I praktiken har vi byggt en tillfällig lista med värden utan att ha behövt skapa en explicit tabell eller kolumn som innehåller de värdena. Dessa värden används som indata iAvg()-funktionen för att beräkna medelvärdet för försäljning, 376,6667. (Du måste ha Totalvärden valt under Presentation i egenskapspanelen.

Exempel 2:  

Aggr(NODISTINCT Max(UnitPrice), Customer)

En värdematris: 16, 16, 16, 25, 25, 25, 19 och 19. Kvalificeraren nodistinct innebär att matrisen innehåller ett element för varje rad i källdata: varje är maximalt UnitPrice för varje Customer och Product.

Exempel 3:  

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Använda sorteringskriterier i StructuredParameter-argumentet i uttrycket: max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Utan sorteringskriterier beror resultatet av uttrycket max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) på hur dimensionen MonthYear är sorterad. Vi kanske då inte får det resultat vi vill ha. Genom att lägga till värden för sorteringstyp och ordningstyp för dimensionen ger vi sorteringskriterier till den strukturerade parametern: (MonthYear, (NUMERIC, ASCENDING)), där sorteringstypen NUMERIC och ordningen ASCENDING bestämmer att MonthYear sorteras i stigande numerisk ordning.

Här vill vi hitta den största ökningen i antal kunder månad för månad. Detta skulle till exempel kunna användas i en KPI-visualisering.

Aggr-delen av uttrycket jämför totalt antal kunder under en månad (angivet av MonthYear) med totalt antal kunder under föregående månad. Genom att använda sorteringskriterier med dimensionen: (MonthYear,(NUMERIC, ASCENDING)) är vi säkra på att Aggr jämför antal kunder i månader efter varandra i den virtuella tabellen genom att sortera månaderna i stigande numerisk ordning, och inte i stigande alfabetisk ordning.

Data som används i exempel:

Skapa en tabell med Customer, Product, UnitPrice och UnitSales som dimensioner. Lägg till uttrycket i tabellen som ett mått.

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

] (delimiter is '|');

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!

Gå med i programmet Analytics Modernization

Remove banner from view

Modernisera utan att kompromissa med dina värdefulla QlikView-appar med programmet för analysmodernisering. Klicka här för mer information eller ta kontakt: ampquestions@qlik.com