Ga naar hoofdinhoud Ga naar aanvullende inhoud

Geneste aggregaties

Elke veldnaam in een diagramuitdrukking moet worden omsloten door precies één aggregatiefunctie. Als u aggregaties moet nesten, kunt u Aggr() gebruiken om een tweede aggregatieniveau toe te voegen. Aggr() bevat een aggregatiefunctie als een argument.

Een functie heeft altijd één aggregatieniveau

Een standaard app kan het volgende bevatten:

  • één miljoen records in de gegevens
  • honderd rijen in een draaitabel
  • één KPI, in een meter of tekstvak

Al zijn ze verschillend in omvang, toch vertegenwoordigen deze drie aantallen wellicht alle gegevens. De aantallen vormen slechts verschillende aggregatieniveaus.

Aggregatiefuncties maken gebruik van de waarden van vele records als invoer en vatten deze samen tot een enkele waarde, die als samenvatting van alle records gezien kan worden. Er is een beperking: u kunt geen aggregatiefunctie binnen een andere aggregatiefunctie gebruiken. Normaal gesproken moet elke veldreferentie door precies één aggregatiefunctie worden omsloten.

De volgende uitdrukkingen werken wel:

  • Sum(Sales)
  • Sum(Sales)/Count(Order Number)

De volgende uitdrukking werkt niet omdat het een geneste aggregatie betreft:

  • Count(Sum(Sales))

De oplossing hiervoor is de Aggr()-functie. Ondanks de naam is dit geen aggregatiefunctie. Dit is een 'veel-op-veel'-functie, zoals een matrix in de wiskunde. Hij zet een tabel met N-records om naar een tabel met M-records. De functie retourneert een reeks waarden. Je kunt hem ook bekijken als een virtuele strakke tabel met één meting, en een of meer dimensies.

TipGebruik de functie Aggr() in berekende dimensies als u geneste diagramaggregaties op meerdere niveaus wilt maken.

Aggr() voor geneste aggregaties gebruiken

Aggr() retourneert een reeks van waarden voor de uitdrukking die is berekend via de opgegeven dimensie of dimensies. Bijvoorbeeld de maximale waarden van verkopen, per klant, per regio. Voor geavanceerde aggregaties wordt de functie Aggr() ingesloten in een andere aggregatiefunctie met behulp van de reeks resultaten van de functie Aggr() als invoer voor de aggregatie waarin de functie is genest.

Als hij wordt gebruikt, produceert de Aggr()-instructie een virtuele tabel, waarbij een uitdrukking is ingedeeld bij een of meer dimensies. Het resultaat van deze virtuele tabel kan dan verder geaggregeerd worden door middel van een aggregatiefunctie van buitenaf.

De grootste gemiddelde bestelwaarde berekenen

Laten we een eenvoudige Aggr()-instructie in een diagramuitdrukking gebruiken.

We willen onze totalen op regionaal niveau bekijken, maar ook twee complexere uitdrukkingen tonen:

  • Grootste gemiddelde bestelwaarde per manager binnen elke regio.
  • Manager verantwoordelijk voor de grootste gemiddelde bestelwaarde.

We kunnen de gemiddelde bestelwaarde voor elke regio gemakkelijk berekenen met behulp van een standaard uitdrukking Sum(Sales)/Count([Order Number]).

In de app, op het werkblad Nested Aggregations vindt u een tabel met de naam Aggr() function.

  1. Selecteer de beschikbare Aggr() function-tabel.
    Het eigenschappenvenster wordt geopend.
  2. Klik op Kolom toevoegen en selecteer Meting.
  3. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  4. Voer het volgende in: Sum(Sales)/Count([Order Number])
  5. Klik op Toepassen.

Tabel met de gemiddelde bestelwaarde per regio.

Tabel met de gemiddelde bestelwaarde per regio.

TipZorg dat uw gegevens op de juiste wijze zijn geformatteerd. In dit geval veranderen we bij elke kolom het Waardelabel om aan te geven welke berekening erin staat. Bij kolommen met geldwaarden wijzigen we de Getalnotatie in Geld en het Opmaakpatroon in $ #,##0;-$ #,##0.

Ons doel is om de hoogste gemiddelde bestelwaarde van elke regio te bepalen. We moeten Aggr() gebruiken, om Qlik Sense te vertellen dat we de gemiddelde bestelwaarde van elke regio, per manager willen vinden, en dat we daar dan de grootste van willen laten weergeven. Om de gemiddelde bestelwaarde van elke regio, uitgesplitst naar manager, te bepalen, moeten we deze dimensies in onze Aggr()-instructie opnemen:

Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)

Deze uitdrukking zorgt ervoor dat Qlik Sense een virtuele tabel die er als volgt uitziet:

Virtuele tabel van de Aggr()-functie die de gemiddelde bestelwaarde voor elke regio weergeeft, uitgesplitst naar manager.

tabel met de AGGR-functie die de gemiddelde bestelwaarde voor elke regio weergeeft, uitgesplitst naar manager.

Als Qlik Sense de afzonderlijke gemiddelde bestelwaarde voor elke regio, per manager berekent, moeten we de grootste van deze waarden vinden. We doen dit door de Aggr()-functie te verpakken met Max():

Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))

  1. Klik op Kolom toevoegen en selecteer Meting.
  2. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  3. Voer het volgende in: Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Klik op Toepassen.

Tabel met de regio, de gemiddelde bestelwaarde en de grootste gemiddelde bestelwaarde voor elke regio, per manager.

Tabel met de regio, de gemiddelde bestelwaarde en de grootste gemiddelde bestelwaarde voor elke regio, per manager.

U kunt nu zien wat de grootse gemiddelde bestelwaarde was voor alle managers op regionaal niveau. Dit is de eerste van onze twee complexe uitdrukkingen! De volgende opdracht is, dat we de naam van de manager, verantwoordelijk voor deze grote gemiddelde bestelwaarden, naast de waarden zelf willen laten weergeven.

We gebruiken hiervoor dezelfde functie Aggr() die we eerder hebben gebruikt, maar dit keer in combinatie met de functie FirstSortedValue(). De FirstSortedValue()-functie vertelt Qlik Sense om ons de manager te leveren, behorend bij de specifieke dimensie, die in het tweede deel van de functie wordt aangegeven:

FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))

TipEr is een klein, maar erg belangrijk deel van de uitdrukking: er staat een minteken voor de Aggr()-uitdrukking. Binnen een FirstSortedValue()-functie kunt u de sorteervolgorde van de reeks gegevens aangeven. In dit geval vertelt het minteken Qlik Sense om van groot naar klein te sorteren.
  1. Klik op Kolom toevoegen en selecteer Meting.
  2. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  3. Voer het volgende in: FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. Klik op Toepassen.

Tabel met de regio, de gemiddelde bestelwaarde, de grootste gemiddelde bestelwaarde voor elke regio en de manager verantwoordelijk voor die bestelwaarde.

Tabel met de regio, de gemiddelde bestelwaarde, de grootste gemiddelde bestelwaarde voor elke regio en de manager verantwoordelijk voor die bestelwaarde.

Raadpleeg voor meer informatie Aggr

Raadpleeg voor meer informatie FirstSortedValue

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!