![]() ![]() |
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:
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:
Všechny funkce agregace povolují dva volitelné argumenty označující filtrování a seskupování:
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:
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á.
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:
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í:
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".
OVERALL
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.
Total.ave( expr [, filtr [, seskupování ]] )
Tato funkce vrací průměrnou hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
Následující výraz vrací průměrný věk studentů ve třídě:
Chcete-li zjistit průměrné narozeniny studentů ve třídě, použijte následující výraz:
Funkce agregace Total.median
Funkce agregace Total.mode
Funkce agregace Total.movingAve
Funkce agregace Total.stdDev
Funkce agregace Total.variance
Funkce agregace Total.weightedAve
Tato funkce vrací počet řádků ve skupině.
Total.count( [ filtr [, seskupování ]] )
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:
Nastavte druhou na:
Funkce agregace Total.countDistinct
Funkce agregace Total.sum
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.
Total.countDistinct ( expr [, filtr [, seskupování ]] )
Počet rozdílných hodnot v rámci skupiny nebo množiny dat. Pokud nejsou k dispozici žádné řádky, vrací nulu.
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:
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:
Funkce agregace Total.count
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.
Total.first( expr [, filtr [, seskupování ]] )
Tato funkce vrací první hodnotu v sekvenci řádků nebo hodnotu null v případě, že množina dat žádné řádky neobsahuje.
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:
Funkce agregace Total.isBottomNPercent
Funkce agregace Total.max
Funkce agregace Total.min
Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je jednou z nejnižších n hodnot.
Total.isBottomN( expr, n, [, filtr [, seskupování ]] )
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ř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.
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.
Total.isBottomNPercent( expr, n, [, filtr [, seskupování ]] )
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ř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.
Tato funkce vrací logickou hodnotu určující to, zda hodnota zadaného numerického pole je jednou z nejvyšších n hodnot.
Total.isTopN( expr, n, [, filtr [, seskupování ]] )
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ř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.
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.
Total.isTopNPercent( expr, n, [, filtr [, seskupování ]] )
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ř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.
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.
Total.last( expr [, filtr [, seskupování ]] )
Tato funkce vrací poslední hodnotu v sekvenci řádků, nebo hodnotu null v případě, že množina dat žádné řádky neobsahuje.
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:
Funkce agregace Total.first
Funkce agregace Total.max
Funkce agregace Total.min
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.
Total.max( expr [, filtr [, seskupování ]] )
Tato funkce vrací maximální hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
Následujícím příkazem se zjistí nejstarší student ve třídě:
Funkce agregace Total.first
Funkce agregace Total.isBottomNPercent
Funkce agregace Total.min
Tato funkce vypočítává matematickou hodnotu mediánu. Polovina hodnot je vyšší než medián, polovina hodnot je nižší.
Total.median( expr [, filtr [, seskupování ]] )
Funkce vrací hodnotu mediánu pro daný výraz. Pokud nejsou k dispozici žádné řádky, vrací null.
Následující výraz vrací medián pro věk studentů ve třídě:
Chcete-li zjistit hodnotu mediánu pro narozeniny studentů ve třídě, použijte následující výraz:
Funkce agregace Total.ave
Funkce agregace Total.mode
Funkce agregace Total.movingAve
Funkce agregace Total.stdDev
Funkce agregace Total.variance
Funkce agregace Total.weightedAve
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.
Total.min( expr [, filtr [, seskupování ]] )
Tato funkce vrací minimální hodnotu daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
Následující výraz vrací věk nejmladšího studenta ve třídě:
Funkce agregace Total.first
Funkce agregace Total.isBottomNPercent
Funkce agregace Total.max
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.
Total.mode( expr [, filtr [, seskupování ]] )
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.
Následující výraz vrací nejčastější věk studentů ve třídě:
Funkce agregace Total.ave
Funkce agregace Total.median
Funkce agregace Total.movingAve
Funkce agregace Total.stdDev
Funkce agregace Total.variance
Funkce agregace Total.weightedAve
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.
Total.movingAve( expr, okénko [, filtr [, seskupování ]] )
Tato funkce vrací klouzavý průměr daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
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:
Funkce agregace Total.ave
Funkce agregace Total.median
Funkce agregace Total.mode
Funkce agregace Total.stdDev
Funkce agregace Total.variance
Funkce agregace Total.weightedAve
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.
Tato funkce vrací hodnotu, která je na zadaném percentilu v množině analyzovaných hodnot.
Následující příkaz vrací počet bodů odpovídající 50. percentilu:
Pokud jsou v zadaném sloupci bodová ohodnocení 10, 20, 30, 40 a 50, funkce vrátí 30.
Tato funkce vypočítává procentní pozici hodnoty v zadaném poli.
percentRank( expr, filtr [, seskupování ]] )
Tato funkce vrací procentní pozici hodnoty v zadaném poli. Vrácená hodnota je v rozsahu od 0 do 1.
Následující příkaz vrací procentní pozici bodového ohodnocení mezi všemi bodovými výsledky ve sloupci:
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.
Tato funkce vypočítává t.
percentSum( expr [, filtr [, seskupování ]] )
Tato funkce vrací procentní podíl příspěvku této hodnoty k součtu všech hodnot ve zvažovaném rozsahu.
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:
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.
quartile( expr, kvartil [, filtr [, seskupování ]] )
Tato funkce vrací hodnotu v rámci zadané množiny, která spadá do zadaného kvartilu.
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:
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.
rank( expr [, filtr [, seskupování ]] )
Tato funkce vrací celé číslo odpovídající pozici hodnoty v rozsahu 1 až počet položek v množině hodnot.
Následující výraz vrací pozici pole OrderAmt mezi všemi hodnotami objednávek ve sloupci OrderAmt.
Tato funkce vypočítává současný počet řádků.
runningCount( filtr [, seskupování ]] )
Funkce vrací současný počet řádků.
Následující výraz vrací současný počet řádků pro sestavu:
Funkce agregace Total.count
Funkce agregace Total.percentRank
Tato funkce agregace vypočítává statistickou směrodatnou odchylku sekvence čísel. Směrodatná odchylka je měřítkem fluktuace množiny hodnot.
Total.stdDev( expr [, filtr [, seskupování ]] )
Funkce vrací směrodatnou odchylku daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
Funkce agregace Total.ave
Funkce agregace Total.median
Funkce agregace Total.mode
Funkce agregace Total.movingAve
Funkce agregace Total.variance
Funkce agregace Total.weightedAve
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.
Total.sum( expr [, filtr [, seskupování ]] )
Součet daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací nulu.
Následující výraz představuje součet hodnot objednávek určitého zákazníka:
Funkce agregace Total.count
Funkce agregace Total.percentRank
Tato funkce agregace vypočítává statistický rozptyl sekvence čísel. Rozptyl je měřítkem fluktuace množiny hodnot.
Total.variance( expr [, filtr [, seskupování ]] )
Tato funkce vrací rozptyl daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
Funkce agregace Total.ave
Funkce agregace Total.median
Funkce agregace Total.mode
Funkce agregace Total.movingAve
Funkce agregace Total.stdDev
Funkce agregace 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.
Total.weightedAve( expr, váha [, filtr [, seskupování ]] )
Tato funkce vrací vážený průměr daného výrazu. Pokud nejsou k dispozici žádné řádky, vrací null.
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:
Funkce agregace Total.ave
Funkce agregace Total.median
Funkce agregace Total.mode
Funkce agregace Total.movingAve
Funkce agregace Total.stdDev
Funkce agregace Total.variance
![]() ![]() |