Předchozí témaNásledující téma


Třída Total

Třída Total se nabízí jako zásobník funkcí agregace. Třída Total obsahuje řadu funkcí pro agregování. Tyto funkce představují rozšíření BIRT skriptovacího jazyka JavaScript, jejichž úkolem je provádět souhrn množiny řádků. Generátor sestav BIRT implementuje funkci v následujících dvou fázích:

BIRT přepisuje všechny skripty obsahující agregace tak, že vytvoří pozměněný skript provádějící uvedené dvě fáze. O tomto procesu je třeba vědět pouze při ladění výrazů obsahujících agregace. Uvažujme ukázku zobrazující hodnotu v zápatí skupiny, kde hodnota představuje procentní část celkového součtu všech účtů. Tuto akci provede následující příkaz:

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

Total.OVERALL v předchozím příkladu způsobí, že BIRT vypočte agregovaný součet přes všechny řádky, přestože se výraz vyskytuje v celkovém součtu skupiny. V rámci výpočtu výrazu v předchozím příkladu BIRT uskuteční jeden průchod při výpočtu celkového salda a další průchod při výpočtu hodnoty každého z účtů.

Obecná pravidla pro třídu Total:

O seskupování a filtrování

Všechny funkce agregace povolují dva volitelné argumenty označující filtrování a seskupování:

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

O argumentu filtru

Argument filtru nabízí logický výraz, který BIRT vyhodnocuje pro každý řádek. Při výpočtu funkce agregace zvažuje BIRT pouze ty řádky, které splňují výraz filtru. V sestavě by se například mohly sčítat úvěrové limity s cílem určit maximální úvěrové riziko.

Výraz se testuje ve fázi transformace dat. Mohou se v něm používat sloupcové hodnoty řádku, parametry, funkce definované uživatelem a další prostředky definované ve výše uvedeném popisu kontextu. Například:

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

Argument filtru rovný null, argument s nedefinovanou hodnotou nebo hodnotou Total.NO_FILTER znamená, že filtr se nepoužije. Pokud aplikace neposkytuje žádný filtr, filtr je standardně nastaven jako nedefinovaný. Pokud zadáte argument seskupování, musíte pro filtr zadat null nebo Total.NO_FILTER na znamení toho, že filtr se nepoužívá.

O argumentu seskupování

V sestavách je často nutné zobrazovat součty pro aktuální úroveň seskupování. Předpokládejme například, že sestava je seskupena podle zákazníků a objednávek a záznamy s podrobnostmi představují řádkové položky v objednávkách. Každá řádková položka má jednotkovou cenu a množství, např. jako v následující funkci agregace:

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

Tato funkce agregace sčítá hodnoty v rámci aktuální skupiny. Pokud se umístí do zápatí, zobrazí součet řádkových položek dané objednávky. Pokud se umístí do zápatí u zákazníka, zobrazí součet všech řádkových položek pro všechny objednávky daného zákazníka. Pokud se umístí do zápatí sestavy, zobrazí součet všech řádkových položek pro všechny zákazníky dohromady.

Někdy je však třeba, aby aplikace přistupovala k celkové hodnotě z odlišné úrovně seskupování. Například můžete chtít vědět, jaká je celková hodnota objednávky vyjádřená v procentech všech objednávek daného zákazníka. V tomto případě musíte přistupovat k celkové sumě jiné skupiny, než je ta aktuální. To provedete s pomocí argumentu seskupování:

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

Argument seskupování může mít jednu z těchto hodnot:

Uvedené druhy argumentů seskupování jsou použity v následujících příkladech:

Total.sum( row["myCol"] null, null ); // Aktuální skupina 
Total.sum( row["myCol"], null, "Customer" ); // Podle názvu 
Total.sum( row["myCol"], null, "row[`custID']" ); // Podle klíče skupiny 
Total.sum( row["myCol"], null, 1 ); // Podle indexu skupiny 
Total.sum( row["myCol"], null, "Overall" ); // Celkové součty 
Total.sum( row["myCol"], null, 0 ); // Celkové součty 

Použijete-li argument seskupování, musíte zadat argument filtru. Pokud filtr nevyžadujete, zadejte null jako hodnotu filtru. Index skupiny se nedává do uvozovek. Musí se zadat jako číslo. To znamená, že 1 je skupina na úrovni 1, zatímco "1" je skupina s názvem "1".

Statické vlastnosti

OVERALL

funkce

Total.ave

Tato funkce agregace vypočítává průměrnou hodnotu. Pokud se výraz vyhodnocuje jako číslo, funkce vrací průměr těchto čísel. Pokud se výraz vyhodnocuje jako datum, funkce vrací průměrné datum.

Syntaxe

Total.ave( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací průměrnou hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Následující výraz vrací průměrný věk studentů ve třídě:

Total.ave( row.Age ) 

Chcete-li zjistit průměrné narozeniny studentů ve třídě, použijte následující výraz:

Total.ave( row.BirthDate ) 

Viz také

Funkce agregace Total.median

Funkce agregace Total.mode

Funkce agregace Total.movingAve

Funkce agregace Total.stdDev

Funkce agregace Total.variance

Funkce agregace Total.weightedAve

Total.count

Tato funkce vrací počet řádků ve skupině.

Syntaxe

Total.count( [ filtr [, seskupování ]] )

Argumenty

Příklad

Výraz v příkladu vrací počet mužů a žen ve třídě. Je nezbytné vytvořit dvě datové položky. Nastavte první na:

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

Nastavte druhou na:

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

Viz také

Funkce agregace Total.countDistinct

Funkce agregace Total.sum

Total.countDistinct

Tato funkce vypočítává počet rozdílných hodnot v rámci skupiny nebo množiny dat. Argument expr je výrazem pro seskupování hodnot. Výraz se odkazuje na sloupec datového řádku. Hodnoty null se společně počítají jako jedna hodnota.

Syntaxe

Total.countDistinct ( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Počet rozdílných hodnot v rámci skupiny nebo množiny dat. Pokud nejsou k dispozici žádné řádky, vrací nulu.

Příklad

Předpokládejme, že chceme určit počet různých zemí reprezentovaných skupinou studentů. Můžeme definovat datovou položku používající následující výraz:

Total.countDistinct( row.Country ) 

row.Country v tomto výrazu představuje sloupec obsahující název nebo kód domovské země studenta. Předpokládejme, že některé řádky obsahují hodnotu null, tj. domovská zem není známa. Pomocí následujícího výrazu lze takové řádky ze součtu vyloučit:

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

Viz také

Funkce agregace Total.count

Total.first

Tato funkce agregace vrací první hodnotu v množině dat. Jedná se o první hodnotu načtenou z množiny dat při načítání řádků za použití způsobu řazení, který je pro tabulku nebo seznam definován.

Syntaxe

Total.first( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací první hodnotu v sekvenci řádků nebo hodnotu null v případě, že množina dat žádné řádky neobsahuje.

Příklad

Předpokládejme, že v sestavě jsou uvedeny transakce daného akciového titulu za určité časové období. Následující výraz zobrazí nejstarší nákupní transakci akciového titulu:

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

Viz také

Funkce agregace Total.isBottomNPercent

Funkce agregace Total.max

Funkce agregace Total.min

Total.isBottomN

Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je jednou z nejnižších n hodnot.

Syntaxe

Total.isBottomN( expr, n, [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací logickou hodnotu true nebo false. Funkce vrací hodnotu true v případě, že hodnota v numerickém poli je jednou z n nejnižších hodnot v daném sloupci.

Příklad

Předpokládejme, že sloupec sestavy má pět řádků obsahujících hodnoty 1, 2, 3, 4 a 5. Total.isBottomN(expr, 2) testuje, zda pole představované výrazem expr obsahuje 1 nebo 2, tedy dvě nejnižší čísla ve sloupci.

Viz také

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je v rozsahu nejnižších n procent všech hodnot sloupce.

Syntaxe

Total.isBottomNPercent( expr, n, [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací logickou hodnotu true nebo false. Funkce vrací hodnotu true v případě, že hodnota v numerickém poli je mezi n procenty nejnižších hodnot v daném sloupci.

Příklad

Předpokládejme, že sloupec sestavy má pět řádků obsahujících hodnoty 1, 2, 3, 4 a 5. Total.isBottomNPercent(expr, 60) testuje, zda pole představované výrazem expr obsahuje 1, 2 nebo 3, tedy spodních 60 procent čísel ve sloupci.

Viz také

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je jednou z nejvyšších n hodnot.

Syntaxe

Total.isTopN( expr, n, [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací logickou hodnotu true nebo false. Funkce vrací hodnotu true v případě, že hodnota v numerickém poli je jednou z n nejvyšších hodnot v daném sloupci.

Příklad

Předpokládejme, že sloupec sestavy má pět řádků s hodnotami 1, 2, 3, 4 a 5. Total.isTopN(expr, 2) testuje, zda pole představované výrazem expr obsahuje 4 nebo 5, tedy dvě nejvyšší čísla ve sloupci.

Viz také

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je v rozsahu nejvyšších n procent všech hodnot sloupce.

Syntaxe

Total.isTopNPercent( expr, n, [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací logickou hodnotu true nebo false. Funkce vrací hodnotu true v případě, že hodnota v numerickém poli je mezi n procenty nejvyšších hodnot v daném sloupci.

Příklad

Předpokládejme, že sloupec sestavy má pět řádků s hodnotami 1, 2, 3, 4 a 5. Total.isTopNPercent(expr, 60) testuje, zda pole představované výrazem expr obsahuje 3, 4 nebo 5, tedy horních 60 procent čísel ve sloupci.

Viz také

Total.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

Tato funkce vrací poslední hodnotu v množině dat. Jedná se o poslední hodnotu načtenou z množiny dat při načítání řádků za použití způsobu řazení, který je pro tabulku nebo seznam definován.

Syntaxe

Total.last( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací poslední hodnotu v sekvenci řádků, nebo hodnotu null v případě, že množina dat žádné řádky neobsahuje.

Příklad

Předpokládejme, že v sestavě jsou uvedeny transakce daného akciového titulu za určité časové období. Následující výraz zobrazí naposledy provedenou prodejní transakci akciového titulu:

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

Viz také

Funkce agregace Total.first

Funkce agregace Total.max

Funkce agregace Total.min

Total.max

Tato funkce vypočítává maximální hodnotu daného výrazu. Výraz se vyhodnocuje pro každý řádek a uchovává se maximální zjištěná hodnota. Tato funkce může pracovat s čísly, daty nebo řetězci.

Syntaxe

Total.max( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací maximální hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Následujícím příkazem se zjistí nejstarší student ve třídě:

Total.max( row.Age ) 

Viz také

Funkce agregace Total.first

Funkce agregace Total.isBottomNPercent

Funkce agregace Total.min

Total.median

Tato funkce vypočítává matematickou hodnotu mediánu. Polovina hodnot je vyšší než medián, polovina hodnot je nižší.

Syntaxe

Total.median( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Funkce vrací hodnotu mediánu pro daný výraz. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Následující výraz vrací medián pro věk studentů ve třídě:

Total.median( row.Age ) 

Chcete-li zjistit hodnotu mediánu pro narozeniny studentů ve třídě, použijte následující výraz:

Total.median( row.BirthDate ) 

Viz také

Funkce agregace Total.ave

Funkce agregace Total.mode

Funkce agregace Total.movingAve

Funkce agregace Total.stdDev

Funkce agregace Total.variance

Funkce agregace Total.weightedAve

Total.min

Tato funkce agregace vypočítává minimální hodnotu daného výrazu. Výraz se vyhodnocuje pro každý řádek a uchovává se minimální zjištěná hodnota. Tato funkce může pracovat s libovolným jednoduchým typem: Číslem, datem nebo řetězcem.

Syntaxe

Total.min( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací minimální hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Následující výraz vrací věk nejmladšího studenta ve třídě:

Total.min( row.Age ) 

Viz také

Funkce agregace Total.first

Funkce agregace Total.isBottomNPercent

Funkce agregace Total.max

Total.mode

Tato Funkce agregace vypočítává matematickou hodnotu modu. Modus představuje hodnotu, která se v datech vyskytuje nejčastěji. Například v sekvenci {1, 2, 3, 2, 4, 7} je modem hodnota 2, protože se vyskytuje dvakrát, zatímco všechna ostatní čísla se vyskytují pouze jednou. Pokud je v množině dat modů několik, jako například v sekvenci {1,2,3,2,3}, tato funkce agregace vrací null.

Syntaxe

Total.mode( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací hodnotu modu pro daný výraz. Pokud nejsou k dispozici žádné řádky, nebo pokud je v datech modů několik, vrací null.

Příklad

Následující výraz vrací nejčastější věk studentů ve třídě:

Total.mode( row.Age ) 

Viz také

Funkce agregace Total.ave

Funkce agregace Total.median

Funkce agregace Total.movingAve

Funkce agregace Total.stdDev

Funkce agregace Total.variance

Funkce agregace Total.weightedAve

Total.movingAve

Tato funkce agregace vypočítává klouzavý průměr. Argument expr udává hodnotu, jejíž průměr se má počítat, a parametr okénko udává počet řádků, se kterými se má pracovat. Průměr řádků se vypočítává v pořadí určeném kontextem, zpravidla v pořadí zadaném funkcí řazení pro seznam nebo tabulku.

Syntaxe

Total.movingAve( expr, okénko [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací klouzavý průměr daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Předpokládejme, že v sestavě jsou uvedeny denní ceny akciového titulu. Chcete-li zobrazit klouzavý průměr tržní ceny dané akcie za posledních pět dnů, použijte následující příkaz:

Total.movingAve( row.price, 5 ); 

Viz také

Funkce agregace Total.ave

Funkce agregace Total.median

Funkce agregace Total.mode

Funkce agregace Total.stdDev

Funkce agregace Total.variance

Funkce agregace Total.weightedAve

Total.percentile

Tato funkce zkoumá množinu hodnot a vrací hodnotu, která je v zadaném percentilu všech hodnot v množině dat. Můžete například zjistit, jaký počet bodů odpovídá 90. percentilu všech bodových výsledků zkoušky.

Syntaxe

Argumenty

Vrací

Tato funkce vrací hodnotu, která je na zadaném percentilu v množině analyzovaných hodnot.

Příklad

Následující příkaz vrací počet bodů odpovídající 50. percentilu:

Total.percentile( row.TestScore, 0.5) 

Pokud jsou v zadaném sloupci bodová ohodnocení 10, 20, 30, 40 a 50, funkce vrátí 30.

Viz také

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Tato funkce vypočítává procentní pozici hodnoty v zadaném poli.

Syntaxe

percentRank( expr, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací procentní pozici hodnoty v zadaném poli. Vrácená hodnota je v rozsahu od 0 do 1.

Příklad

Následující příkaz vrací procentní pozici bodového ohodnocení mezi všemi bodovými výsledky ve sloupci:

Total.percentRank( row.Scores ) 

Pokud bodová ohodnocení ve zvažovaném rozsahu představují 10, 10, 20 a 50 a bodové ohodnocení v buňce obsahující tento výraz je 30, funkce vrátí hodnotu 0,5, protože polovina hodnot je nad 20 a polovina pod 20.

Viz také

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Tato funkce vypočítává t.

Syntaxe

percentSum( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací procentní podíl příspěvku této hodnoty k součtu všech hodnot ve zvažovaném rozsahu.

Příklad

Následující výraz vrací procentní podíl příspěvku této objednávky k celkovému součtu všech objednávek:

Total.percentSum( row.OrderAmt ) 

Viz také

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

Tato funkce vypočítává hodnotu v rámci definované množiny hodnot, pro kterou má 0 %, 25 %, 50 %, 75 % nebo 100 % položek v množině vyšší hodnotu.

Syntaxe

quartile( expr, kvartil [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací hodnotu v rámci zadané množiny, která spadá do zadaného kvartilu.

Příklad

Následující výraz vrací objednávané množství pro které platí, že 75 % objednávek je nižších a 25 % objednávek je vyšších:

Total.quartile( row.OrderAmt, 3) 

Viz také

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

Tato funkce vypočítává, jaká je pozice hodnoty v rámci množiny hodnot. Výsledná pozice může být 1 až počet hodnot v množině. Pokud jsou dvě hodnoty identické, mají stejnou pozici.

Syntaxe

rank( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací celé číslo odpovídající pozici hodnoty v rozsahu 1 až počet položek v množině hodnot.

Příklad

Následující výraz vrací pozici pole OrderAmt mezi všemi hodnotami objednávek ve sloupci OrderAmt.

Total.rank( row.OrderAmt ) 

Viz také

Total.percentRank

Total.runningCount

Tato funkce vypočítává současný počet řádků.

Syntaxe

runningCount( filtr [, seskupování ]] )

Argumenty

Vrací

Funkce vrací současný počet řádků.

Příklad

Následující výraz vrací současný počet řádků pro sestavu:

Total.runningCount( ) 

Viz také

Funkce agregace Total.count

Funkce agregace Total.percentRank

Total.stdDev

Tato funkce agregace vypočítává statistickou směrodatnou odchylku sekvence čísel. Směrodatná odchylka je měřítkem fluktuace množiny hodnot.

Syntaxe

Total.stdDev( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Funkce vrací směrodatnou odchylku daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Viz také

Funkce agregace Total.ave

Funkce agregace Total.median

Funkce agregace Total.mode

Funkce agregace Total.movingAve

Funkce agregace Total.variance

Funkce agregace Total.weightedAve

Total.sum

Tato funkce agregace vypočítává součet hodnot jednotlivých řádků ve skupině. Hodnota každého z řádku se určí pomocí výrazu daného argumentem expr. Součet se získá sečtením všech těchto hodnot dohromady.

Syntaxe

Total.sum( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Součet daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací nulu.

Příklad

Následující výraz představuje součet hodnot objednávek určitého zákazníka:

Total.sum( row.OrderAmt ) 

Viz také

Funkce agregace Total.count

Funkce agregace Total.percentRank

Total.variance

Tato funkce agregace vypočítává statistický rozptyl sekvence čísel. Rozptyl je měřítkem fluktuace množiny hodnot.

Syntaxe

Total.variance( expr [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací rozptyl daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Viz také

Funkce agregace Total.ave

Funkce agregace Total.median

Funkce agregace Total.mode

Funkce agregace Total.movingAve

Funkce agregace Total.stdDev

Funkce agregace Total.weightedAve

Total.weightedAve

Tato funkce agregace vypočítává matematickou váženou střední hodnotu. Pokud je argument expr nebo váha vyhodnocen jako null, příslušný řádek je z výpočtu vyloučen.

Syntaxe

Total.weightedAve( expr, váha [, filtr [, seskupování ]] )

Argumenty

Vrací

Tato funkce vrací vážený průměr daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.

Příklad

Předpokládejme, že finanční aplikace sleduje balíky akcií nakupované v různém čase. Ke každému balíku se váže pořizovací cena a počet akcií nakoupených za danou cenu. Následující výraz vypočítává vážený průměr pořizovací ceny:

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

Viz také

Funkce agregace Total.ave

Funkce agregace Total.median

Funkce agregace Total.mode

Funkce agregace Total.movingAve

Funkce agregace Total.stdDev

Funkce agregace Total.variance


(c) Copyright Actuate Corporation 2006

Předchozí témaNásledující téma