Aggregeringsfunktioner
Den grupp av funktioner som kallas aggregeringsfunktioner utgörs av funktioner som tar flera fältvärden som indata och returnerar ett enda resultat per grupp, där grupperingen definieras av en diagramdimension eller en group by-sats i skriptsatsen.
Aggregeringsfunktionerna omfattar Sum(), Count(), Min(), Max() med flera.
De flesta aggregeringsfunktioner kan användas i både dataladdningsskriptet och diagramuttryck, men syntaxen skiljer sig.
Begränsningar:
Aggregeringsfunktionens parameter får inte innehålla andra aggregeringsfunktioner, om inte dessa inre aggregeringar innehåller TOTAL-kvalificeraren. För mer avancerade nästlade aggregeringar använder du den avancerade Aggr-funktionen i kombination med en specificerad dimension.
När du namnger ett element, undvik att tilldela samma namn till mer än ett fält, variabel eller mått. Det finns en strikt prioritetsordning för att lösa konflikter mellan enheter med identiska namn. Denna ordning återspeglas i alla objekt eller sammanhang där dessa enheter används. Denna prioritetsordning är följande:
-
Inuti en aggregering prioriteras ett fält framför en variabel. Måttnamn är inte relevanta i aggregeringar och är inte prioriterade.
-
Utanför en aggregering prioriteras en måttetikett före en variabel, som i sin tur prioriteras före ett fält.
-
Utanför en aggregering kan ett mått dessutom återanvändas genom att referera till dess etikett, såvida inte etiketten faktiskt är en beräknad sådan. I det läget sjunker uttrycket i betydelse för att minska risken för självhänvisning, och i det här fallet kommer namnet alltid att först tolkas som ett måttnamn, därefter som ett fältnamn och för det tredje som ett variabelnamn.
Använda aggregeringsfunktioner i ett dataladdningsskript
Aggregeringsfunktioner kan enbart användas inuti LOAD - och SELECT-satser.
Använda aggregeringsfunktioner i diagramuttryck
Aggregeringsfunktionens parameter får inte innehålla andra aggregeringsfunktioner, om inte dessa inre aggregeringar innehåller TOTAL-kvalificeraren. För mer avancerade nästlade aggregeringar använder du den avancerade Aggr-funktionen i kombination med en specificerad dimension.
En aggregeringsfunktion aggregerar över den uppsättning möjliga poster som definierats av urvalet. En alternativ uppsättning poster kan dock definieras med ett s.k. set-uttryck i set-analys.
Se: Set-analys
Så beräknas aggregeringar
En aggregering körs i en slinga över posterna för en specifik tabell och aggregerar posterna i den. Till exempel räknar Count(<Field>) antalet poster i tabellen där <Field> finns. Om du bara vill aggregera distinkta fältvärden ska du använda distinct-satsen, som Count(distinct <Field>).
Om aggregeringsfunktionen innehåller fält från olika tabeller kör aggregeringsfunktionen en slinga över posterna från de olika tabellerna för de befintliga fälten. Detta påverkar prestandan och därför bör sådana aggregeringar undvikas, speciellt när du har stora datamängder.
Aggregering av nyckelfält
Sättet aggregeringar beräknas på gör att du inte kan aggregera nyckelfält, eftersom det inte framgår vilken tabell som ska användas för aggregeringen. Om fältet <Key> till exempel är länken mellan två tabeller, så framgår det inte om Count(<Key>) ska returnera antalet poster från den första eller andra tabellen.
Om du använder distinct-satsen är emellertid aggregeringen väldefinierad och kan beräknas.
Så om du har ett nyckelfält inuti en aggregeringsfunktion utan distinct-satsen returnerar Qlik Sense ett tal som kan vara meningslöst. Lösningen är att antingen använda distinct-satsen eller använda en kopia av nyckeln – en kopia som bara finns i en tabell.
I följande tabeller är ProductID nyckeln mellan tabellerna.
Count(ProductID) kan räknas antingen i tabellen Products (som bara har en post per produkt – ProductID är primärnyckeln) eller i tabellen Details (som antagligen har flera poster per produkt). Om du vill räkna antalet distinkta produkter ska du använda Count(distinct ProductID). Om du vill räkna antalet rader i en specifik tabell ska du inte använda nyckeln.