Gå till huvudinnehåll

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 är olika.

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 och set-uttryck

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.

Nyckeln ProductID mellan tabellerna Products och Details

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.