Aggr - diagramfunctie

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.

Syntax:  

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

Return data type: duaal

Arguments:  

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 en, optioneel, sorteercriteria in de notatie: (Dimension(Sort-type, Ordering))

De dimensie is een enkel veld en kan geen uitdrukking zijn. Aan de hand van de dimensie wordt de reeks waarden bepaald waarvoor de uitdrukking Aggr wordt berekend.

Als sorteercriteria zijn opgenomen, wordt de reeks 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 opgenomen.

Voor details over het gebruik van sorteercriteria raadpleegt u Sorteercriteria toevoegen aan de dimensie in de gestructureerde parameter.

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 afzonderlijke combinatie van dimensiewaarden slechts één retourwaarde. Dit is de normale manier om aggregaties te maken: elke afzonderlijke combinatie van dimensiewaarden levert één lijn in het diagram op.

NODISTINCT

Als het argument van de uitdrukking wordt voorafgegaan door de kwalificatie nodistinct, kan elke combinatie van dimensiewaarden meer dan één retourwaarde genereren, afhankelijk van de onderliggende gegevensstructuur. Als er slechts één dimensie is, retourneert de functie aggr een reeks 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) waarover een andere aggregatie kan worden uitgevoerd. Zo kunt u bijvoorbeeld een gemiddelde verkoopwaarde berekenen door met een Aggr()-instructie de verkopen per klant op te tellen en daarna het gemiddelde van de opgetelde resultaten te berekenen: Avg(TOTAL Aggr(Sum(Sales),Customer)).

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

Limitations:  

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

In zijn basisvorm is het argument StructuredParameter in de syntaxis van de functie Aggr een enkele dimensie. De uitdrukking Aggr(Sum(Sales, Month)) levert de totale verkoopwaarde voor elke maand op. Bij insluiting in een andere aggregatiefunctie kunnen er onverwachte resultaten optreden tenzij sorteercriteria worden gebruikt. Dit komt doordat sommige dimensies numeriek of alfabetisch kunnen worden gesorteerd, enzovoort.

In het argument StructuredParameter in de functie Aggr kunt u sorteercriteria opgeven voor de dimensie in uw uitdrukking. Op die 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)))

Het sorteertype kan zijn: NUMERIC, TEXT, FREQUENCY of LOAD_ORDER.

De volgende ordeningstypen zijn aan elke sorteertype 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.

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

Voor sorteertype LOAD_ORDER zijn de ordeningstypen ASCENDING en ORIGINAL equivalent.

Examples and results:  

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

De uitdrukking Aggr(Sum(UnitSales*UnitPrice), Customer) levert de totale verkoopwaarde per Customer op en retourneert een reeks waarden: 295, 715 en 120 voor de drie Customer-waarden.

Het komt erop neer dat wij een tijdelijke lijst met waarden hebben samengesteld zonder een expliciete tabel of kolom te hoeven maken die deze waarden bevat.

Deze waarden worden gebruikt als invoer voor de functie Avg() om de gemiddelde verkoopwaarde te berekenen: 376.6667 (in het eigenschappenvenster moet u onder Presentatie de optie Totalen hebben geselecteerd).

Aggr(NODISTINCT Max(UnitPrice), Customer)

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

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 '|');

 

Examples and results: Gestructureerde parameters

Voorbeeld Resultaat
Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

Met deze meting wordt de verkoop in het huidige jaar tot heden voor elke maand berekend met behulp van sorteercriteria in het StructuredParameter-argument in de uitdrukking.

Zonder sorteercriteria is het resultaat van de uitdrukking Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) )) afhankelijk van hoe de dimensies Year en Month zijn gesorteerd. Mogelijk krijgen we niet het gewenste resultaat.

Door waarden voor sorteertype en ordeningstype aan de dimensie toe te voegen, voegen we sorteercriteria toe aan de gestructureerde parameter: (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)). Het sorteertype NUMERIC en het ordeningstype ASCENDING bepalen dat Year en Month in oplopende numerieke volgorde worden gesorteerd.

Gegevens die worden gebruikt in voorbeelden:

Met het volgende load-script wordt een bestellingentabel met bestelregels gegenereerd die in het voorbeeld voor gestructureerde parameters wordt gebruikt.

Set vNumberOfOrders = 1000; OrderLines: Load RowNo() as OrderLineID, OrderID, OrderDate, Round((Year(OrderDate)-2005)*1000*Rand()*Rand()*Rand1) as Sales While Rand()<=0.5 or IterNo()=1; Load * Where OrderDate<=Today(); Load Rand() as Rand1, Date(MakeDate(2013)+Floor((365*4+1)*Rand())) as OrderDate, RecNo() as OrderID Autogenerate vNumberOfOrders; Calendar: Load distinct Year(OrderDate) as Year, Month(OrderDate) as Month, OrderDate Resident OrderLines;

U kunt de resultaten van deze metingen vergelijken in een tabel of in afzonderlijke lijndiagrammen:

  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year), (Month) ))
  • Sum(Aggr( Rangesum(Above(Sum(Sales),0,12)), (Year, (Numeric, Ascending)), (Month, (Numeric, Ascending)) ))

De tweede meting levert de juiste verkoopcijfers voor elke maand van het huidige jaar tot heden op.