Aggr - grafiekfunctie

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. De functie Aggr wordt gebruikt voor geavanceerde aggregaties, waarbij de functie Aggr is 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.

Syntaxis:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Retourgegevenstype: dual

Argumenten:  

Argument Beschrijving
expr

Een uitdrukking die bestaat uit een aggregatiefunctie. De aggregatiefunctie aggregeert standaard over de set mogelijke records die wordt gedefinieerd door de selectie.

StructuredParameter

StructuredParameter bestaat uit een dimensie, optioneel met sorteercriteria, in de volgende notatie: (Dimension(Sort-type, Ordering))

De dimensie is een enkel veld en kan geen uitdrukking zijn. De dimensie wordt gebruikt om de reeks van waarden te bepalen waarvoor de uitdrukking Aggr wordt berekend.

Als sorteercriteria worden opgenomen, wordt de reeks van waarden die door de functie Aggr wordt gemaakt en voor de dimensie wordt berekend, gesorteerd. Dit is belangrijk wanneer de sorteervolgorde van invloed is op het resultaat van de uitdrukking waarin de functie Aggr is ingesloten.

Zie Sorteercriteria toevoegen aan de dimensie in de gestructureerde parameter voor meer informatie over het gebruik van sorteercriteria.

SetExpression De aggregatiefunctie aggregeert standaard over de set mogelijke records die wordt gedefinieerd door de selectie. Met de uitdrukking Set-analyse kunt u een alternatieve set records definiëren.
DISTINCT Als het argument van de uitdrukking wordt voorafgegaan door de kwalificatie distinct of als er geen kwalificatie wordt gebruikt, genereert elke combinatie van dimensiewaarden slechts één retourwaarde. Dit is de normale manier om aggregaties te maken: elke afzonderlijke combinatie van dimensiewaarden levert één lijn in de grafiek op.
NODISTINCT

Als het argument van de uitdrukking vóór de kwalificatie nodistinct staat, kan elke combinatie van dimensiewaarden meer dan één retourwaarde genereren, afhankelijk van de onderliggende gegevensstructuur. Als er slechts één dimensie is, retourneert de aggr-functie een array met hetzelfde aantal elementen als er rijen zijn in de brongegevens.

Elementaire aggregatiefuncties, zoals Sum, Min en Avg, retourneren een enkele numerieke waarde, terwijl de functie Aggr() kan worden vergeleken met het maken van een tijdelijke resultatenset (een virtuele tabel) waarop een andere aggregatie kan worden uitgevoerd. Bijvoorbeeld: het berekenen van een gemiddelde omzetwaarde door het optellen van de omzet per klant in een Aggr()-opdracht en het vervolgens berekenen van het gemiddelde van de opgetelde resultaten: Avg(TOTAL Aggr(Sum(Sales), Customer)).

Tip: Gebruik de functie Aggr() in berekende dimensies als u geneste grafiekaggregatie op meerdere niveaus wilt uitvoeren.

Beperkingen:  

Elke dimensie in een Aggr()-functie moet een enkel veld en geen uitdrukking (berekende dimensie) zijn.

Sorteercriteria toevoegen aan de dimensie in de gestructureerde parameter

In zijn basisvorm is het argument StructuredParameter in de syntaxis van de functie Aggr een enkele dimensie. Met de uitdrukking Aggr(Sum(Sales, Month)) wordt de totale waarde van de omzet voor elke maand berekend. Wanneer deze uitdrukking echter in een andere aggregatiefunctie wordt ingesloten, kan dit onverwachte resultaten tot gevolg hebben, tenzij sorteercriteria worden gebruikt. Dit komt omdat sommige dimensies bijvoorbeeld numeriek of alfabetisch kunnen worden gesorteerd.

In het argument StructuredParameter in de functie Aggr kunt u sorteercriteria opgeven voor de dimensie in uw uitdrukking. Op deze manier legt u een sorteervolgorde op aan de virtuele tabel die door de functie Aggr wordt gemaakt.

Het argument StructuredParameter heeft de volgende syntaxis:

(FieldName, (Sort-type, Ordering))

Gestructureerde parameters kunnen worden genest:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Voor het sorteertype hebt u de volgende opties: NUMERIC, TEXT, FREQUENCY of LOAD_ORDER.

Aan de sorteertypen zijn de volgende ordeningstypen gekoppeld:

Sorteertype Toegestane ordeningstypen
NUMERIC ASCENDING, DESCENDING of REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE of Z2A
FREQUENCY DESCENDING, REVERSE of ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING of REVERSE

De ordeningstypen REVERSE en DESCENDING zijn equivalent aan elkaar.

Voor sorteertype TEXT zijn de ordeningstypen ASCENDING en A2Z equivalent aan elkaar, en zijn daarnaast DESCENDING, REVERSE en Z2A equivalent aan elkaar.

Voor sorteertype LOAD_ORDER zijn de ordeningstypen ASCENDING en ORIGINAL equivalent aan elkaar.

Voorbeelden en resultaten:  

Voorbeeld Resultaat
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

De uitdrukking Aggr(Sum(UnitSales*UnitPrice), Customer) leidt tot de totale waarde van de omzet per Customer en retourneert een reeks van waarden: 295, 715 en 120 voor de drie Customer-waarden.

In feite hebben we hiermee een tijdelijke lijst met waarden gemaakt zonder een expliciete tabel of kolom te hoeven maken die deze waarden bevat.

Deze waarden worden gebruikt als invoer voor de functie Avg() voor het berekenen van de gemiddelde omzetwaarde, 376.6667. (In het eigenschappenvenster moet u onder Presentation de optie Totalen hebben geselecteerd.

Aggr(NODISTINCT Max(UnitPrice), Customer)

Een reeks van waarden: 16, 16, 16, 25, 25, 25, 19 en 19. De kwalificatie nodistinct betekent dat de reeks voor elke rij in de brongegevens één element bevat: elk element is de maximale UnitPrice per Customer en Product.

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Sorteercriteria gebruiken in het argument StructuredParameter in de uitdrukking max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Zonder sorteercriteria is het resultaat van de uitdrukking max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) afhankelijk van de manier waarop de dimensie MonthYear wordt gesorteerd. Mogelijk krijgen we zo niet het resultaat dat we voor ogen hadden.

Door aan de dimensie waarden voor het sorteertype en ordeningstype toe te voegen, leggen we de gestructureerde parameter (MonthYear, (NUMERIC, ASCENDING)) sorteercriteria op, waarbij het sorteertype NUMERIC en de ordening ASCENDING bepalen dat MonthYear in oplopende numerieke volgorde wordt gesorteerd.

We zijn hier op zoek naar de grootste toename in het aantal klanten, van maand tot maand. Dit kan bijvoorbeeld in een KPI-visualisatie worden gebruikt.

Met het onderdeel Aggr in de uitdrukking vergelijken we het totale aantal klanten in een maand (vertegenwoordigd door MonthYear) met het totale aantal in de vorige maand.

Omdat we sorteercriteria met de dimensie (MonthYear,(NUMERIC, ASCENDING)) gebruiken, weten we zeker dat Aggr het aantal klanten in opeenvolgende maanden in de virtuele tabel vergelijkt door de maanden in oplopende numerieke volgorde te sorteren en niet in aflopende alfabetische volgorde.

Gegevens die worden gebruikt in voorbeelden:

Maak een tabel met Customer, Product, UnitPrice en UnitSales als dimensies. Voeg de uitdrukking als meting toe aan de tabel.

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');