Aggregatiefuncties
De functiegroep met zogeheten aggregatiefuncties bestaat uit functies die meerdere veldwaarden als invoer aannemen en een enkel resultaat per groep retourneren, waarbij de groepering wordt gedefinieerd door een diagramdimensie of een group by-clausule in de scriptopdracht.
Aggregatiefuncties zijn onder meer Sum(), Count(), Min(), Max() en nog veel meer.
De meeste aggregatiefuncties kunnen zowel worden gebruikt in het script voor het laden van gegevens als in diagramuitdrukkingen, maar de syntaxis verschilt.
Aggregatiefuncties gebruiken in het script voor het laden van gegevens
Aggregatiefuncties kunnen alleen worden gebruikt binnen de opdrachten LOAD en SELECT.
Aggregatiefuncties gebruiken in diagramuitdrukkingen
De parameter van de aggregatiefunctie mag geen andere aggregatiefuncties bevatten, tenzij deze interne aggregaties de kwalificatie TOTAL bevatten. Gebruik voor meer geavanceerde geneste aggregaties de geavanceerde functie Aggr, in combinatie met een opgegeven dimensie.
Een aggregatiefunctie aggregeren over de set mogelijke records die wordt gedefinieerd door de selectie. Maar er kan een alternatieve set records worden gedefinieerd door gebruik te maken van een set-uitdrukking bij set-analyse.
Set-analyse en set-uitdrukkingen
Hoe aggregaties worden berekend
Een aggregatie doorloopt de records van een specifieke tabel en aggregeert de records in die tabel. Zo wordt bijvoorbeeld met Aantal(<Field>) het aantal records geteld in de tabel waar <Field> voorkomt. Als u alleen de unieke veldwaarden wilt aggregeren, moet u de distinct-clausule gebruiken, zoals Aantal(distinct <Field>).
Als de aggregatiefunctie velden uit verschillende tabellen bevat, doorloopt de aggregatiefunctie de records van het vectorproduct van de velden. Dit zorgt voor prestatieverlies, en om die reden moet u zulke aggregaties vermijden, met name als u grote aantallen gegevens gebruikt.
Aggregatie van sleutelvelden
Door de manier waarop aggregaties worden berekend, kunt u geen sleutelvelden aggregeren omdat daarbij niet duidelijk is welke tabel voor de aggregatie moet worden gebruikt. Als bijvoorbeeld het veld <Key> twee tabellen aan elkaar koppelt, is niet duidelijk of Aantal(<Key>) het aantal records van de eerste of tweede tabel moet retourneren.
Maar als u het component distinct gebruikt, is de aggregatie op de juiste manier gedefinieerd en kan deze vervolgens worden berekend voor een sleutelveld dat binnen twee tabellen is gekoppeld.
Als u een sleutelveld in een aggregatiefunctie gebruikt zonder het component distinct retourneert QlikView 12 een aantal waar u mogelijk niets aan hebt. De oplossing is in dit geval om het component distinct of een kopie van de sleutel te gebruiken – een kopie die alleen in één tabel voorkomt.
In de volgende tabellen is ProductID bijvoorbeeld de sleutel tussen de tabellen.
ProductId-sleutel tussen Products- en Details-tabellen

Count(ProductID) kan zowel geteld worden in de tabel Products (die maar één record per product heeft – ProductID is de primaire sleutel) of het kan in de Details-tabel geteld worden (die waarschijnlijk meerdere records per product heeft). Als u het aantal verschillende producten wilt tellen, moet u Count(distinct ProductID) gebruiken. Als u het aantal rijen in een specifieke tabel wilt tellen, moet u de sleutel niet gebruiken.
Aggregaties van sleutelvelden in drie of meer tabellen
Het prefix distinct werkt alleen met sleutelvelden die maximaal twee tabellen koppelen. Bij het groeperen van een aggregatie met een sleutelveld dat in drie of meer tabellen aanwezig is, wordt NULL geretourneerd voor een veld dat frequentiegegevens voor een veld vereist. In het geval van een sleutelveld dat drie of meer tabellen koppelt, moet in plaats daarvan een niet-sleutelkopie van het veld worden gebruikt.