Ga naar hoofdinhoud Ga naar aanvullende inhoud

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.

Beperkingen:  

De parameter van de aggregatiefunctie mag geen andere aggregatiefuncties bevatten, tenzij deze ingesloten aggregaties de kwalificatie TOTAL bevatten. Gebruik voor meer geavanceerde geneste aggregaties de geavanceerde functie Aggr, in combinatie met een opgegeven dimensie.

Bij het toewijzen van een naam aan een entiteit moet u niet dezelfde naam geven aan meer dan één veld, variabele of meting. Er geldt een strikte volgorde van prioriteit voor het oplossen van conflicten tussen entiteiten met identieke namen. Deze volgorde wordt weerspiegeld in objecten of contexten waarin deze entiteiten worden gebruikt. Deze volgorde van prioriteit is als volgt:

  • Binnen een aggregatiefunctie krijgt een veld voorrang op een variabele. Metinglabels zijn niet relevant in aggregaties en krijgen geen prioriteit.

  • Buiten een aggregatiefunctie krijgt een metinglabel voorrang op een variabele, die weer voorrang krijgt op een veld.

  • Daarnaast kan een meting buiten een aggregatie opnieuw gebruikt geworden door te verwijzen naar het label, tenzij het label is berekend. In die situatie krijgt de meting minder prioriteit om het risico te voorkomen dat de uitdrukking naar zichzelf verwijst, en in dit geval wordt de naam altijd eerst geïnterpreteerd als een metinglabel, vervolgens als een veldnaam en daarna als een variabelenaam.

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 ingesloten 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.

Zie: Set-analyse

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 Count(<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 sleuteveld dat binnen twee tabellen is gekoppeld.

Als u een sleutelveld in een aggregatiefunctie gebruikt zonder het component afzonderlijk retourneert Qlik Sense 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

Gegevensmodel toont twee tabellen die zijn gekoppeld door een sleutelveld 'ProductId'

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.

Meer informatie

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!