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

Nästlade aggregeringar

Ett namn på ett fält som används i ett diagramuttryck ska omslutas av exakt en aggregeringsfunktion. Om du behöver nästla aggregeringar kan du lägga till en andra aggregeringsnivå med Aggr(). Aggr() innehåller en aggregeringsfunktion som ett argument.

En funktion ska alltid ha en aggregeringsnivå

En typisk app kan innehålla:

  • en miljon dataposter
  • hundra rader i en pivottabell
  • en enda KPI, i en mätare eller textruta

Trots att omfattningen är så olika kan alla tre talen representera alla data. Talen är bara olika aggregeringsnivåer.

Aggregeringsfunktioner använder värden från många poster som indata och döljer dessa så att ett enda värde visas, en sammanfattning av alla poster. Det finns en begränsning: du kan inte använda en aggregeringsfunktion inuti en annan aggregeringsfunktion. Normalt måste varje fältreferens vara omsluten av exakt en aggregeringsfunktion.

Det här uttrycket kommer att fungera:

  • Sum(Sales)
  • Sum(Sales)/Count(Order Number)

Följande uttryck fungerar inte eftersom det är en nästlad aggregering:

  • Count(Sum(Sales))

Detta kan lösas med en Aggr()-funktion. Trots namnet är det inte en aggregeringsfunktion. Det är en ”många-till-många”-funktion, som en matris inom matematiken. Funktionen omvandlar en tabell med N poster till en tabell med M poster. Den returnerar en matris med värden. Den kan även ses som en virtuell enkel tabell med ett mått och en eller flera dimensioner.

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

Använda Aggr() i nästlade aggregeringar

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. I avancerade aggregeringar omsluts Aggr()-funktionen av en annan aggregeringsfunktion, och matrisen med resultat från Aggr()-funktionen används som indata till den aggregering som den är nästlad i.

När den används ger Aggr()-satsen en virtuell tabell med ett uttryck som är grupperat efter en eller flera dimensioner. Den virtuella tabellens resultat kan sedan aggregeras vidare med en yttre aggregeringsfunktion.

Beräkna största genomsnittliga ordervärde

Låt oss använda en enkel Aggr()-sats i ett diagramuttryck.

Vi vill visa våra övergripande siffror på regionnivå, men vi vill också visa två mer komplexa uttryck:

  • Största genomsnittliga ordervärde per chef inom varje region.
  • Chefen som är ansvarig för det största genomsnittliga ordervärdet.

Vi kan enkelt beräkna det genomsnittliga ordervärdet för varje region med hjälp av ett standarduttryck: Sum(Sales)/Count([Order Number]).

Inne i appen, på arket Nested Aggregations, finns en tabell med namnet Aggr() function.

  1. Välj den tillgängliga tabellen Aggr() function.
    Egenskapspanelen öppnas.
  2. Klicka på Lägg till kolumn och välj Mått.
  3. Klicka på symbolen Uttryck.
    Uttrycksredigeraren öppnas.
  4. Ange följande: Sum(Sales)/Count([Order Number])
  5. Klicka på Tillämpa.

Tabell som visar genomsnittligt ordervärde per region.

Tabell som visar genomsnittligt ordervärde per region.

Anteckning om tipsDu bör alltid försäkra dig om att dina data är formaterade på rätt sätt. I det här fallet ska vi i varje kolumn ändra Etikett så att den representerar beräkningen. I kolumnerna som innehåller ekonomiska värden ändrar vi Talformat till Valuta och Formatmönster till $ #,##0;-$ #,##0.

Målet är att ta fram det största genomsnittliga ordervärdet för varje region. Vi måste använda Aggr() för att tala om för Qlik Sense att vi vill hämta det genomsnittliga ordervärdet för varje region per chef, och sedan visa det största av dessa. För att vi ska få fram det genomsnittliga ordervärdet för varje region per chef, måste de här dimensionerna ingå i Aggr()-satsen:

Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)

Med det här uttrycket producerar Qlik Sense en virtuell tabell som ser ut så här:

Virtuell tabell av Aggr()-funktionen som visar genomsnittligt ordervärde för varje region, per chef.

Tabell med AGGR-funktion som visar genomsnittligt ordervärde för varje region, per chef.

När Qlik Sense beräknar det individuella genomsnittliga ordervärdet för varje region per chef, måste vi hitta det största av dessa värden. Det gör vi genom att innesluta funktionen Aggr() i Max():

Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))

  1. Klicka på Lägg till kolumn och välj Mått.
  2. Klicka på symbolen Uttryck.
    Uttrycksredigeraren öppnas.
  3. Ange följande: Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Klicka på Tillämpa.

Tabell som visar region, genomsnittligt ordervärde och största genomsnittliga ordervärde för varje region, per chef.

Tabell som visar region, genomsnittligt ordervärde och största genomsnittliga ordervärde för varje region, per chef.

Du kan se det största genomsnittliga ordervärdet för alla chefer på regionnivå. Det här är det första av våra två komplexa uttryck! Nästa krav är att namnet på cheferna som är ansvariga för dessa stora genomsnittliga ordervärden ska visas intill värdena.

Det uppnår vi genom att använda samma Aggr()-funktion som tidigare, men den här gången tillsammans med FirstSortedValue()-funktionen. Funktionen FirstSortedValue() talar om för Qlik Sense att vi vill ha chefen för den specifika dimensionen som anges i funktionens andra del:

FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))

Anteckning om tipsEn liten detalj i uttrycket är mycket viktig: minustecknet före Aggr()-uttrycket. I en FirstSortedValue()-funktion kan du ange sorteringsordningen för datamatrisen. Här anger minustecknet att Qlik Sense ska sortera från största till minsta.
  1. Klicka på Lägg till kolumn och välj Mått.
  2. Klicka på symbolen Uttryck.
    Uttrycksredigeraren öppnas.
  3. Ange följande: FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Klicka på Tillämpa.

Tabell som visar region, genomsnittligt ordervärde, största genomsnittliga ordervärde för varje region och chefen som är ansvarig för det ordervärdet.

Tabell som visar region, genomsnittligt ordervärde, största genomsnittliga ordervärde för varje region och chefen som är ansvarig för det ordervärdet.

Mer information finns i Aggr.

Mer information finns i FirstSortedValue.

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!