Gå till huvudinnehåll Gå till ytterligare innehå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 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 för ett nyckelfältet som är länkat över två tabeller.

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.

ProductId-nyckel mellan Products- och Details-tabeller

Datamodell som visar två tabeller som länkas av ett nyckelfält "ProductId"

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.

Aggregeringar av nyckelfält som finns i tre eller fler tabeller

distinct-prefixet fungerar bara med nyckelfält som länkar upp till två tabeller. När en aggregering grupperas över ett nyckelfält som finns i tre eller fler tabeller kommer alla operationer där frekvensinformation krävs för ett fält returnera NULL. Om ett nyckelfält länkar tre eller fler tabeller måste en icke-nyckelkopia av fältet användas istället.

RELATERAD INFORMATION:

Mer information

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!