Föregående avsnittNästa avsnitt


Klassen Total

Klassen Total finns som en hållare för aggregatfunktioner. Klassen Total innehåller ett antal funktioner för aggregering. De funktionerna är BIRT-utökningar för JavaScript som summerar en uppsättning rader. BIRT-rapportmotorn implementerar en funktion i följande två faser:

BIRT skriver om alla skript som innehåller ett aggregat och skapar ett ändrat skript som utför de två faserna. Den enda gången som det är viktigt att vara medveten om den här processen är när du felsöker ett uttryck som innehåller ett aggregat. Tänk dig ett exempel där du visar ett värde i en sidfot för en grupp där värdet är en procentsats av totalen för alla kontona. Följande sats utför den åtgärden:

(balance / Total.sum( balance, Total.OVERALL ) ) * 100.0 

I föregående exempel förorsakar Total.OVERALL BIRT att beräkna den aggregerade summan över alla raderna fastän uttrycket förekommer i ett grupptotal. Om du vill beräkna uttrycket i föregående exempel beräknar BIRT den totala balansen i ett pass och värdet för de olika kontona i ett andra pass.

Följande är de allmänna reglerna för klassen Total:

Gruppering och filtrering

Det går att använda två valfria argument som visar filtrering och gruppering i alla aggregat:

Total.<aggregate function> ( ..., filter, group ) 

Filterargument

Ett filterargument ger ett booleskt uttryck som värderas på varje rad i BIRT. BIRT tar endast med rader som är identiska med filtret när aggregatet beräknas. En rapport skulle till exempel kunna summera kreditgränserna för aktiva kunder för att bestämma den maximala kreditexponeringen.

Uttrycket utförs i dataomvandlingsfasen. Det kan ge access till kolumner i raden, parametrar, användardefinierade funktioner och andra resurser som har definierats i kontextbeskrivningen ovan. Exempel:

Total.sum( row["CreditLimit"], row["Active"] == 'Y' ); 

Ett filterargument som är null eller undefined eller Total.NO_FILTER betyder att inget filter har tagits med. In tillämpningen inte har något filter är standardiställningen undefined. Om du anger ett gruppargument måste du ange antingen null eller Total.NO_FILTER som visar att det inte finns någon filtrering.

Gruppargument

Rapporter behöver ofta visa totaler för den aktuella grupperingsnivån. Om du till exempel antar att rapporten är grupperad per kund och order och att de detaljerade posterna representerar radobjekt i order. Varje radobjekt har ett enhetspris och en kvantitet på det sätt som visas i följande aggregat:

Total.sum( row["price"] * row["quantity"] ) 

Det här aggregatet summerar värden över den aktuella gruppen. Om det placeras i sidfoten visas summan av radobjekt för den ordern. Om det placeras i kundsidfoten visas summan av alla radobjekt för alla beställningar för den kunden. Och om det placeras i rapportsidfoten visas summan av alla radobjekt för alla kunder.

Men i bland behöver tillämpningen ha access till en totalsumma från en annan grupperingsnivå. Du kan till exempel vilja veta det totala värdet för en order som en procentsats av alla beställningar för den kunden. I det fallet måste du ha access till totalen för en grupp som inte är den aktuella gruppen. Det gör du genom att använda följande grupperingsargument:

Total.sum( row.CreditLimit, null, "Customer" ); 

Grupperingsargumentet kan vara ett av följande:

I följande exempel visas den här typen av gruppargument:

Total.sum( row["myCol"] null, null ); // Aktuell grupp 
Total.sum( row["myCol"], null, "Kund" ); // Per namn 
Total.sum( row["myCol"], null, "row[`custID']" ); // Per gruppnyckel  Total.sum( row["myCol"], null, 1 ); // Per gruppindex 
Total.sum( row["myCol"], null, "Overall" ); // Totaler 
Total.sum( row["myCol"], null, 0 ); // Totaler 

Du måste ange filterargumentet när du använder grupperingsargumentet. Om du inte behöver något filter anger du null som värde för filtret. Gruppindexet står inte inom citattecken. Det måste ha ett tal. Det betyder att 1 är gruppen på nivå 1 medan "1" betyder gruppen med namnet "1".

Statiska egenskaper

OVERALL

funktioner

Total.ave

Den här aggregatfunktionen beräknar det matematiska medelvärdet. Om uttrycket utvärderas till ett tal returnerar den här funktionen medelvärdet av de talen. Om uttrycket utvärderas till ett datum returnerar funktionen medeldatumet.

Syntax

Total.ave( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar medelvärdet av det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Exempel

I följande stats returneras medelåldern för eleverna i en klass:

Total.ave( row.Age ) 

Om du vill att medelfödelsedagen för eleverna i en klass ska returneras använder du följande sats:

Total.ave( row.BirthDate ) 

Se även

Total.median-aggregatet

Total.mode-aggregatet

Total.movingAve-aggregatet

Total.stdDev-aggregatet

Total.variance-aggregatet

Total.weightedAve-aggregatet

Total.count

Den här funktionen räknar antalet rader inom gruppen.

Syntax

Total.count( [ filter [, group ]] )

Argument

Exempel

I det här exemplet räknas antalet manliga och kvinnliga elever i en klass. Det är nödvändigt att skapa två dataobjekt. Ange det första till:

Total.sum( row.sex == 'M' ); 

Ange det andra till:

Total.sum( row.sex == 'F' ); 

Se även

Total.countDistinct-aggregatet

Total.sum-aggregatet

Total.countDistinct

Den här funktionen beräknar antalet distinkta värden i gruppen eller datauppsättningen. Argumentet expr ger ett uttrycks som används för gruppering av värdena. Uttrycket hänvisar till en dataradkolumn. Null-värden räknas som ett distinkt värde.

Syntax

Total.countDistinct ( expr [, filter [, group ]] )

Argument

Returnering

Antalet distinkta värden i gruppen eller datauppsättningen. Noll returneras om det inte fanns några tillgängliga rader.

Exempel

Antag att vi vill ta reda på antalet olika länder som finns representerade i en grupp med studenter. Vi kan definiera ett dataobjekt som använder följande uttryck:

Total.countDistinct( row.Country ) 

I den här satsen är row.Country en kolumn som innehåller namnet eller koden för studentens hemland. Om vissa rader innehåller null betyder det att vi inte känner till de studenternas hemland. Använd följande sats om du vill ta bort sådana rader från antalet:

Total.countDistinct( row.Country, row.Country != null ) 

Se även

Total.count-aggregatet

Total.first

Den aggregatfunktionen returnerar det första värdet som visas i datauppsättningen. Det här är det första värde som hämtas från datauppsättningen när rader hämtas med den sorteringsordning som har definierats för tabellen eller listan.

Syntax

Total.first( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar det första värde som visas i sekvensen med rader, eller nu om datauppsättningen inte innehåller några rader.

Exempel

Antag att en rapport innehåller en lista med transaktioner för en given aktie under en viss tidsperiod. I följande sats visas det tidigaste inköpet i aktien:

Total.first( row.TransDate, row.Action == 'Buy' ); 

Se även

Total.isBottomNPercent-aggregatet

Total.max-aggregatet

Total.min-aggregatet

Total.isBottomN

Den här funktionen returnerar ett booleskt värde som visar om värdet av ett visst numeriskt fält är ett av de lägsta n värdena.

Syntax

Total.isBottomN( expr, n, [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar true eller false. Den returnerar true om värdet i det numeriska fältet ligger inom de lägsta n av alla värden i kolumnen.

Exempel

Anta att en rapportkolumn har fem rader som innehåller värdena 1, 2, 3, 4 och 5. Total.isBottomN(expr, 2) testar om fältet representeras av expr innehåller en 1:a eller en 2:a, de lägsta två numren i kolumnen.

Se även

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

Den här funktionen returnerar ett booleskt värde som visar om värdet i ett visst numeriskt fält är ett av de lägsta n procenten av alla värden i kolumnen.

Syntax

Total.isBottomNPercent( expr, n, [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar true eller false. Den returnerar true om värdet i fältet ligger inom de lägsta n procenten av alla värden i kolumnen.

Exempel

Anta att en rapportkolumn har fem rader som innehåller värdena 1, 2, 3, 4 och 5. Total.isBottomNPercent(expr, 60) testar om fältet representeras av expr innehåller en 1:a, en 2:a en 3:a, de lägsta 60 procenten av talen i kolumnen.

Se även

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

Den här funktionen returnerar ett booleskt värde som visar om värdet av ett visst numeriskt fält är ett av de högsta n värdena.

Syntax

Total.isTopN( expr, n, [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar true eller false. Den returnerar true om värdet i det numeriska fältet ligger inom de högsta n av alla värden i kolumnen.

Exempel

Anta att en rapportkolumn har fem rader som innehåller värdena 1, 2, 3, 4 och 5. Total.isTopN(expr, 2) testar om fältet representeras av expr innehåller en 4:a eller en 5:a, de högsta två talen i kolumnen.

Se även

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

Den här funktionen returnerar ett booleskt värde som visar om värdet i ett visst numeriskt fält är ett av de högsta n procenten av alla värden i kolumnen.

Syntax

Total.isTopNPercent( expr, n, [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar true eller false. Den returnerar true om värdet i fältet ligger inom de högsta n procenten av alla värden i kolumnen.

Exempel

Anta att en rapportkolumn har fem rader som innehåller värdena 1, 2, 3, 4 och 5. Total.isTopNPercent(expr, 60) testar om fältet representeras av expr innehåller en 3:a, en 4:a eller en 5:a, de högsta 60 procenten av talen i kolumnen.

Se även

Total.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

Den här funktionen returnerar det sista värde som visas i en datauppsättning. Det här är det sista värde som hämtas från datauppsättningen när rader hämtas med den sorteringsordning som har definierats för tabellen eller listan.

Syntax

Total.last( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar det sista värde som visas i sekvensen med rader, eller nu om datauppsättningen inte innehåller några rader.

Exempel

Antag att en rapport innehåller en lista med transaktioner för en given aktie under en viss tidsperiod. I följande sats visas den senaste försäljningen av aktien:

Total.last( row.TransDate, row.Action == 'Sell' ); 

Se även

Total.first-aggregatet

Total.max-aggregatet

Total.min-aggregatet

Total.max

Den här funktionen beräknar det högsta värdet i det angivna uttrycket. Uttrycket valideras för varje rad och det högsta värdet behålls. Den här funktionen kan fungera med number, date eller string.

Syntax

Total.max( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar maxvärdet i det angivna uttrycket. Om inga rader fanns tillgängliga returneras null.

Exempel

Med följande sats söker du reda på den äldsta eleven i en klass:

Total.max( row.Age ) 

Se även

Total.first-aggregatet

Total.isBottomNPercent-aggregatet

Total.min-aggregatet

Total.median

Den här aggregatfunktionen beräknar det matematiska medianvärdet. Hälften av värden ligger ovanför medianen, och hälften ligger nedanför.

Syntax

Total.median( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar medianvärdet i det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Exempel

I följande stats returneras medianåldern för eleverna i en klass:

Total.median( row.Age ) 

Och om du vill att medianfödelsedagen för eleverna i en klass ska returneras använder du följande sats:

Total.median( row.BirthDate ) 

Se även

Total.ave-aggregatet

Total.mode-aggregatet

Total.movingAve-aggregatet

Total.stdDev-aggregatet

Total.variance-aggregatet

Total.weightedAve-aggregatet

Total.min

Den här aggregatfunktionen beräknar minimivärdet i det angivna uttrycket. Uttrycket valideras för varje rad och det lägsta värdet behålls. Den här funktionen kan fungera med alla enkla typer: number, date eller string.

Syntax

Total.min( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar minimivärdet av det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Exempel

I följande stats returneras åldern för den yngsta eleven i en klass:

Total.min( row.Age ) 

Se även

Total.first-aggregatet

Total.isBottomNPercent-aggregatet

Total.max-aggregatet

Total.mode

Den här aggregatfunktionen beräknar det matematiska lägesvärdet. Läget är det värde som oftast inträffar i uppgifterna. I sekvensen {1, 2, 3, 2, 4, 7}, till exempel, är siffran två läget eftersom den förekommer två gånger medan alla de andra siffrorna endast förekommer en gång. Om en datauppsättning har flera lägen, t.ex. i sekvensen {1,2,3,2,3}, returnerar lägesaggregatet null.

Syntax

Total.mode( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar lägesvärdet i det angivna uttrycket. Om inga rader finns tillgängliga eller om det finns mer än ett läge i uppsättningen returneras null.

Exempel

I följande stats returneras den ålder som är mest frekvent för eleverna i en klass:

Total.mode( row.Age ) 

Se även

Total.ave-aggregatet

Total.median-aggregatet

Total.movingAve-aggregatet

Total.stdDev-aggregatet

Total.variance-aggregatet

Total.weightedAve-aggregatet

Total.movingAve

Den här aggregatfunktionen beräknar det flytande medelvärdet. Argumentet expr ger värdet för average, och argumentet window argument giver antalet rader som ska tas med. Medelvärdet för raderna beräknas i den ordning som bestäms av kontexten, vanligen i den ordning som har angetts för sortering av något av elementen List eller Table.

Syntax

Total.movingAve( expr, window [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar ett flytande medelvärde i det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Exempel

Antag att en rapport innehåller en lista med dagliga priserna för en aktie. Om du vill visa det flytande medelvärdet av den aktien över de sista fem dagarna använder du följande sats:

Total.movingAve( row.price, 5 ); 

Se även

Total.ave-aggregatet

Total.median-aggregatet

Total.mode-aggregatet

Total.stdDev-aggregatet

Total.variance-aggregatet

Total.weightedAve-aggregatet

Total.percentile

Med den här funktionen undersöks en uppsättning värden och det värde returneras som ligger inom en viss angiven percentil av alla värden i uppsättningen. Om du till exempel vill veta vilket resultat representerar den 90:e percentilen av alla resultat på testen.

Syntax

Argument

Returnering

Den här funktionen returnerar det värde som finns inom den angivna percentilen i uppsättningen med analyserade värden.

Exempel

Följande sats returnerar den 50:d percentilen av resultatvärdet:

Total.percentile( row.TestScore, 0.5) 

Om uppsättningen med testresultat i den angivna kolumnen är 10, 20, 30, 40 och 50 skulle satsen returnera 30.

Se även

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Den här funktionen beräknar rangordningen i procent för ett värde i ett angivet fält.

Syntax

percentRank( expr, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar rangordningen i procent för värdet i det angivna fältet. Returvärdet ligger mellan noll och ett.

Exempel

I följande sats returneras rangordningen i procent för ett resultat bland alla resultat i en kolumn:

Total.percentRank( row.Scores ) 

Om resultaten i utvärderingsområdet är 10, 10, 20 och 50, och resultatet i den cell som innehåller den här satsen är 30, är returvärdet 0,5 eftersom hälften av värdena är ovanför 20 och hälften är under 20.

Se även

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Den här funktionen beräknar t.

Syntax

percentSum( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar procentsatsen för bidraget av det här värdet till summan av alla värden i området.

Exempel

I följande sats returneras procentsatsen för det här beställningsvärdets bidrag till summan av alla beställningsvärden:

Total.percentSum( row.OrderAmt ) 

Se även

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

Den här funktionen beräknar värdet inom en definierad uppsättning av värden där 0%, 25%, 50%, 75% eller 100% av värden i uppsättningen är högre.

Syntax

quartile( expr, quartile, [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar värdet inom den angivna uppsättningen som faller inom den angivna kvartilen.

Exempel

Följande sats returnerar det beställningsbelopp där 75% av beloppen är lägre och 25% är högre:

Total.quartile( row.OrderAmt, 3) 

Se även

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

Den här funktionen beräknar var ett värde ligger inom en uppsättning värden. Rangordningsvärdet ligger inom intervallet 1 till antalet värden i uppsättningen. Om två värden är identiska har de samma rangordning.

Syntax

rank( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar ett heltal som speglar värderangordningen och har ett område från 1 till antalet objekt i uppsättningen med värden

Exempel

I följande sats returneras rangordningen av fältet OrderAmt bland alla beställningsbelopp i kolumnen OrderAmt.

Total.rank( row.OrderAmt ) 

Se även

Total.percentRank

Total.runningCount

Den här funktionen beräknar ett löpande antal rader.

Syntax

runningCount( filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar det löpande antalet rader.

Exempel

I följande sats returneras det löpande antalet i en rapport:

Total.runningCount( ) 

Se även

Total.count-aggregatet

Total.percentRank-aggregatet

Total.stdDev

Den här aggregatfunktionen beräknar den statistiska standardavvikelsen för en talserie. Standardavvikelsen är ett mått på spridningen av en uppsättning värden.

Syntax

Total.stdDev( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar standardavvikelsen i det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Se även

Total.ave-aggregatet

Total.median-aggregatet

Total.mode-aggregatet

Total.movingAve-aggregatet

Total.variance-aggregatet

Total.weightedAve-aggregatet

Total.sum

Den här aggregatfunktionen beräknar den summa som är resultatet av att lägga ihop ett värde från varje rad i gruppen. Värdet för varje rad beräknas med hjälp av det uttryck som ges i expr-argumentet. Summan fås genom att lägga ihop alla de värdena.

Syntax

Total.sum( expr [, filter [, group ]] )

Argument

Returnering

Summan av det angivna uttrycket. Noll returneras om det inte fanns några tillgängliga rader.

Exempel

I följande sats läggs alla beställningsbelopp för en kund ihop:

Total.sum( row.OrderAmt ) 

Se även

Total.count-aggregatet

Total.percentRank-aggregatet

Total.variance

Den här aggregatfunktionen beräknar den statistiska variansen för en talserien. Standardvariansen är ett mått på spridningen av en uppsättning värden.

Syntax

Total.variance( expr [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar variansen av det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Se även

Total.ave-aggregatet

Total.median-aggregatet

Total.mode-aggregatet

Total.movingAve-aggregatet

Total.stdDev-aggregatet

Total.weightedAve-aggregatet

Total.weightedAve

Den här aggregatfunktionen beräknar det matematiskt beräknade viktade medelvärdet. Om något av argumenten expr eller weight utvärderas till null tas den raden bort från medelvärdet.

Syntax

Total.weightedAve( expr, weight [, filter [, group ]] )

Argument

Returnering

Den här funktionen returnerar det viktade medelvärdet av det angivna uttrycket. Om inga rader finns tillgängliga returneras null.

Exempel

Antag att en ekonomitillämpning spårar uppsättningar av en viss aktie som har köpts vid olika tillfällen. Varje uppsättning har olika inköpspris och ett antal aktier som köptes till det priset. I följande sats beräknas det viktade medelinköpspriset:

Total.weightedAve( row.purchasePrice, row.shareCount ) 

Se även

Total.ave-aggregatet

Total.median-aggregatet

Total.mode-aggregatet

Total.movingAve-aggregatet

Total.stdDev-aggregatet

Total.variance-aggregatet


(c) Copyright Actuate Corporation 2006

Föregående avsnittNästa avsnitt