![]() ![]() |
Die Klasse "Total" dient als Aufbewahrungsort für die Aggregatfunktionen. Sie enthält eine Reihe von Funktionen für die Aggregation (= Kumulation). Diese Funktionen sind BIRT-Erweiterungen von JavaScript, die eine Gruppe von Zeilen zusammenfassen. Die BIRT-Berichtssteuerkomponente implementiert eine Funktion in den beiden folgenden Phasen:
BIRT schreibt jedes Script neu, das ein Aggregat enthält und erstellt hierzu ein überarbeitetes Script, das die beiden Phasen ausführt. Die einzige Situation, bei der man diesen Prozess berücksichtigen muss, ist das Debug eines Ausdrucks, der ein Aggregat enthält. Sehen Sie sich in diesem Zusammenhang das Beispiel für das Anzeigen eines Wertes in der Fußzeile einer Gruppe an, bei dem der Wert ein Prozentsatz der Summe für alle Konten ist. Diese Aktion wird durch die folgende Anweisung ausgeführt:
In diesem Beispiel bewirkt "Total.OVERALL", dass BIRT das Summenaggregat für alle Zeilen berechnet, obwohl der Ausdruck in einer Gruppensumme angegeben ist. Um den Ausdruck im obigen Beispiel zu berechnen, unternimmt BIRT einen Durchlauf, in dem der Gesamtsaldo berechnet wird, und einen zweiten Durchlauf, in dem der Wert für jedes Konto berechnet wird.
Für die Klasse "Total" gelten die folgenden allgemeinen Regeln:
Alle Aggregate lassen zwei optionale Argumente zu, um eine Filterung und Gruppierung anzugeben:
Ein Argument "filter" stellt einen Booleschen Ausdruck bereit, den BIRT für jede Zeile auswertet. BIRT berücksichtigt bei der Berechnung des Aggregats nur Zeilen, die mit dem Filter übereinstimmen. Ein Bericht könnte beispielsweise die Kreditrahmen aktiver Kunden summieren, um das maximale Kreditaufkommen zu ermitteln.
Der Ausdruck wird in der Datenumwandlungsphase ausgeführt. Er kann auf die Spalten in der Zeile, die Parameter, die benutzerdefinierten Funktionen und andere Ressourcen wie in der obigen Kontextbeschreibung definiert zugreifen. Beispiel:
Ein Argument "filter", das den Wert "Null" hat oder nicht definiert ist, bzw. die Angabe "Total.NO_FILTER" bedeutet, dass kein Filter bereitgestellt wird. Wenn die Anwendung keinen Filter zur Verfügung stellt, ist der Filter standardmäßig nicht definiert. Falls Sie ein Argument "group" angeben, müssen Sie entweder Null oder "Total.NO_FILTER" angeben, um festzulegen, dass keine Filterung stattfindet.
Berichte müssen häufig Summen für die aktuelle Gruppierungsebene anzeigen. Beispiel: Ein Bericht ist nach Kunden und Bestellungen gruppiert, und die Detailsätze stellen Produktlinienartikel in Bestellungen dar. Jeder Produktlinienartikel hat einen Einheitenpreis und eine Menge, wie im folgenden Aggregat:
Dieses Aggregat summiert Werte für die aktuelle Gruppe. Falls es in die Fußzeile gestellt wird, zeigt es die Summe der Produktlinienartikel für diese Bestellung an. Wird es in die Fußzeile des Kunden gestellt, zeigt es die Summe aller Produktlinienartikel für alle Bestellungen dieses Kunden an. Wird es schließlich in die Fußzeile des Berichts gestellt, zeigt es die Summe aller Produktlinienartikel für alle Kunden an.
Manchmal muss die Anwendung jedoch auf eine Summe aus einer anderen Gruppenebene zugreifen. Es kann beispielsweise sein, dass Sie den Gesamtwert einer Bestellung als Prozentsatz aller Bestellungen für den Kunden ermitteln müssen. In diesem Fall müssen Sie auf die Summe für eine andere als der aktuellen Gruppe zugreifen. Hierzu verwenden Sie das Gruppierungsargument:
Das Argument "group" kann einen der folgenden Werte haben:
Die folgenden Beispiele veranschaulichen diese Arten von Argumenten "group":
Total.sum( row["myCol"] null, null ); // Aktuelle Gruppe Total.sum( row["myCol"], null, "Customer" ); // Nach Name Total.sum( row["myCol"], null, "row[`custID']" ); // Nach Gruppenschlüssel Total.sum( row["myCol"], null, 1 ); // Nach Gruppenindex Total.sum( row["myCol"], null, "Overall" ); // Gesamtsumme Total.sum( row["myCol"], null, 0 ); // Gesamtsumme
Bei Verwendung des Gruppierungsargumentes müssen Sie das Argument "filter" angeben. Wenn Sie keinen Filter benötigen, verwenden Sie für den Filter einen Nullwert. Der Gruppenindex wird nicht in Anführungszeichen gesetzt. Er muss als Zahl angegeben werden. Dies heißt, dass 1 die Gruppe auf der Ebene 1 bedeutet, während "1" die Gruppe namens "1" meint.
OVERALL
Diese Aggregatfunktion berechnet den mathematischen Mittelwert. Falls der Ausdruck in eine Zahl ausgewertet wird, gibt diese Funktion den Durchschnitt der Zahlen zurück. Wird der Ausdruck in ein Datum ausgewertet, gibt die Funktion das Durchschnittsdatum zurück.
Total.ave( expr [, filter [, group ]] )
Diese Funktion gibt den Durchschnittswert des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Die folgende Anweisung gibt das Durchschnittsalter der Schüler in einer Klasse zurück:
Um den durchschnittlichen Geburtstag der Schüler in einer Klasse zurückzugeben, verwenden Sie die folgende Anweisung:
Aggregatfunktion Total.median
Aggregatfunktion Total.mode
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.variance
Aggregatfunktion Total.weightedAve
Diese Funktion zählt die Anzahl der Zeilen in der Gruppe.
Total.count( [ filter [, group ]] )
Das folgende Beispiel zählt die Anzahl der weiblichen und männlichen Schüler in einer Klasse. Es müssen zwei Datenelemente erstellt werden. Legen Sie das erste folgendermaßen fest:
Legen Sie das zweite folgendermaßen fest:
Aggregatfunktion Total.countDistinct
Aggregatfunktion Total.sum
Diese Funktion berechnet die Anzahl unterschiedlicher Werte in der Gruppe oder im Datensatz. Das Argument "expr" gibt einen Ausdruck an, mit dem die Werte gruppiert werden. Der Ausdruck bezieht sich auf eine Datenzeilenspalte. Nullwerte werden als 1 unterschiedlicher Wert gezählt.
Total.countDistinct ( expr [, filter [, group ]] )
Die Anzahl der unterschiedlichen Werte in der Gruppe oder im Datensatz. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Sie wollen die Anzahl der unterschiedlichen Herkunftsländer für eine Gruppe von Schülern ermitteln. Hierzu können Sie ein Datenelement definieren, das den folgenden Ausdruck verwendet:
In dieser Anweisung ist "row.Country" eine Spalte, die den Namen oder den Code für das Herkunftsland des Schülers enthält. Einige Zeilen enthalten jedoch einen Nullwert, weil das Herkunftsland nicht bekannt ist. Mit der folgenden Anweisung können Sie solche Zeilen aus der Zählung ausschließen:
Aggregatfunktion Total.count
Diese Aggregatfunktion gibt den ersten Wert in einem Datensatz zurück. Es handelt sich hierbei um den ersten Wert, der beim Abrufen von Zeilen unter Verwendung der für die Tabelle oder Liste definierte Sortierreihenfolge aus dem Datensatz abgerufen wird.
Total.first( expr [, filter [, group ]] )
Diese Funktion gibt den ersten Wert in einer Folge von Zeilen zurück. Falls der Datensatz keine Zeilen enthält, gibt Sie Null zurück.
Ein Bericht listet Transaktionen auf, die für einen bestimmten Warenbestand über einen Zeitraum erfolgen. Die folgende Anweisung zeigt die frühesten Einkauf des Warenbestandes an:
Aggregatfunktion Total.isBottomNPercent
Aggregatfunktion Total.max
Aggregatfunktion Total.min
Diese Funktion gibt einen Booleschen Wert zurück, der angibt, ob der Wert eines angegebenen numerischen Feldes zu einem der niedrigsten n Werte gehört.
Total.isBottomN( expr, n, [, filter [, group ]] )
Diese Funktion gibt "true" oder "false" zurück. Falls der Wert im numerischen Feld zu den niedrigsten n Werten in dieser Spalte gehört, gibt die Funktion den Wert "true" zurück.
Angenommen, eine Berichtsspalte enthält 5 Zielen mit den Werten 1, 2, 3, 4 und 5. Die Funktion "Total.isBottomN(expr, 2)" testet, ob das mit dem Argument "expr" angegebene Feld eine 1 oder eine 2 (also die niedrigsten beiden Zahlen in der Spalte) enthält.
Funktion Total.isBottomNPercent
Funktion Total.isTopN
Funktion Total.isTopNPercent
Diese Funktion gibt einen Booleschen Wert zurück, der angibt, ob der Wert eines angegebenen numerischen Feldes in den unteren n Prozent aller Werte in der Spalte liegt.
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
Diese Funktion gibt "true" oder "false" zurück. Falls der Wert im Feld zu den unteren n Prozent aller Werte in dieser Spalte gehört, gibt die Funktion den Wert "true" zurück.
Angenommen, eine Berichtsspalte enthält 5 Zielen mit den Werten 1, 2, 3, 4 und 5. Die Funktion "Total.isBottomNPercent(expr, 60)" testet, ob das mit dem Argument "expr" angegebene Feld eine 1, eine 2 oder eine 3 (also die unteren 60 Prozent der Zahlen in der Spalte) enthält.
Funktion Total.isBottomN
Funktion Total.isTopN
Funktion Total.isTopNPercent
Diese Funktion gibt einen Booleschen Wert zurück, der angibt, ob der Wert eines angegebenen numerischen Feldes zu einem der höchsten n Werte gehört.
Total.isTopN( expr, n, [, filter [, group ]] )
Diese Funktion gibt "true" oder "false" zurück. Falls der Wert im numerischen Feld zu den höchsten n Werten in dieser Spalte gehört, gibt die Funktion den Wert "true" zurück.
Angenommen, eine Berichtsspalte enthält 5 Zielen mit den Werten 1, 2, 3, 4 und 5. Die Funktion "Total.isTopN(expr, 2)" testet, ob das mit dem Argument "expr" angegebene Feld eine 4 oder eine 5 (also die höchsten beiden Zahlen in der Spalte) enthält.
Funktion Total.isTopNPercent
Funktion Total.isBottomN
Funktion Total.isBottomNPercent
Diese Funktion gibt einen Booleschen Wert zurück, der angibt, ob der Wert eines angegebenen numerischen Feldes in den oberen n Prozent aller Werte in der Spalte liegt.
Total.isTopNPercent( expr, n, [, filter [, group ]] )
Diese Funktion gibt "true" oder "false" zurück. Falls der Wert im Feld zu den oberen n Prozent aller Werte in dieser Spalte gehört, gibt die Funktion den Wert "true" zurück.
Angenommen, eine Berichtsspalte enthält 5 Zielen mit den Werten 1, 2, 3, 4 und 5. Die Funktion "Total.isTopNPercent(expr, 60)" testet, ob das mit dem Argument "expr" angegebene Feld eine 3, eine 4 oder eine 5 (also die oberen 60 Prozent der Zahlen in der Spalte) enthält.
Funktion Total.isTopN
Funktion Total.isBottomN
Funktion Total.isBottomNPercent
Diese Funktion gibt den letzten Wert zurück, der in einem Datensatz vorhanden ist. Es handelt sich hierbei um den letzten Wert, der beim Abrufen von Zeilen unter Verwendung der für die Tabelle oder Liste definierte Sortierreihenfolge aus dem Datensatz abgerufen wird.
Total.last( expr [, filter [, group ]] )
Diese Funktion gibt den letzten Wert in einer Folge von Zeilen zurück. Falls der Datensatz keine Zeilen enthält, gibt Sie Null zurück.
Ein Bericht listet Transaktionen auf, die für einen bestimmten Warenbestand über einen Zeitraum erfolgen. Die folgende Anweisung zeigt die letzten Verkauf aus dem Warenbestand an:
Aggregatfunktion Total.first
Aggregatfunktion Total.max
Aggregatfunktion Total.min
Diese Funktion berechnet den Maximalwert des angegebenen Ausdrucks. Der Ausdruck wird für jede Zeile ausgewertet, und der Maximalwert wird beibehalten. Diese Funktion kann mit einer Zahl, einem Datum oder einer Zeichenfolge verwendet werden.
Total.max( expr [, filter [, group ]] )
Diese Funktion gibt den Maximalwert des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Die folgende Anweisung sucht nach dem ältesten Schüler in einer Klasse:
Aggregatfunktion Total.first
Aggregatfunktion Total.isBottomNPercent
Aggregatfunktion Total.min
Diese Aggregatfunktion berechnet den mathematischen Mittelwert. Die Hälfte der Werte liegt über dem Mittel, die andere Hälfte liegt darunter.
Total.median( expr [, filter [, group ]] )
Diese Funktion gibt das Mittel des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Die folgende Anweisung gibt das gemittelte Alter der Schüler in einer Klasse zurück:
Um den gemittelten Geburtstag der Schüler in einer Klasse zurückzugeben, verwenden Sie die folgende Anweisung:
Aggregatfunktion Total.ave
Aggregatfunktion Total.mode
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.variance
Aggregatfunktion Total.weightedAve
Diese Funktion berechnet den Mindestwert des angegebenen Ausdrucks. Der Ausdruck wird für jede Zeile ausgewertet, und der Mindestwert wird beibehalten. Diese Funktion kann mit jedem einfachen Typ, also einer Zahl, einem Datum oder einer Zeichenfolge verwendet werden.
Total.min( expr [, filter [, group ]] )
Diese Funktion gibt den Mindestwert des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Die folgende Anweisung gibt das Alter des jüngsten Schülers in einer Klasse zurück:
Aggregatfunktion Total.first
Aggregatfunktion Total.isBottomNPercent
Aggregatfunktion Total.max
Diese Aggregatfunktion berechnet den mathematischen Moduswert. Der Modus ist der Wert, der am häufigsten in den Daten vorhanden ist. Beispielsweise ist in der Folge {1, 2, 3, 2, 4, 7} 2 der Modus, weil diese Zahl zwei Mal vorkommt, während alle anderen Zahlen nur ein Mal vorhanden sind. Falls ein Datensatz mehrere Modi enthält (z. B. in der Folge {1,2,3,2,3}), gibt die Aggregatfunktion für den Modus Null zurück.
Total.mode( expr [, filter [, group ]] )
Diese Funktion gibt einen Moduswert des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind oder falls die Daten mehrere Modi enthalten, gibt die Funktion Null zurück.
Die folgende Anweisung gibt das häufigste Alter der Schüler in einer Klasse zurück:
Aggregatfunktion Total.ave
Aggregatfunktion Total.median
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.variance
Aggregatfunktion Total.weightedAve
Diese Aggregatfunktion berechnet einen gleitenden Durchschnitt. Das Argument "expr" gibt den Wert an, dessen Durchschnitt ermittelt werden soll. Das Argument "window" gibt die Anzahl der zu berücksichtigenden Zeilen an. Der Durchschnitt wird aus den Zeilen in der durch den Kontext bestimmten Reihenfolge gebildet. Normalerweise ist dies die Reihenfolge, die durch die Sortierung eines Listen- oder Tabellenelements vorgegeben ist.
Total.movingAve( expr, window [, filter [, group ]] )
Diese Funktion gibt den gleitenden Durchschnittswert des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Angenommen, ein Bericht listet den täglichen Preis für eine Aktie auf. Um den gleitenden Durchschnitt dieser Aktie während der letzten fünf Tage anzuzeigen, verwenden Sie die folgende Anweisung:
Aggregatfunktion Total.ave
Aggregatfunktion Total.median
Aggregatfunktion Total.mode
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.variance
Aggregatfunktion Total.weightedAve
Diese Funktion untersucht eine Gruppe von Werten und gibt den Wert zurück, der an einem bestimmten Perzentil aller Werte in der Gruppe liegt. Hiermit können Sie beispielsweise ermitteln, welche Bewertung das 90. Perzentil aller Bewertungen in einem Test darstellt.
Diese Funktion gibt den Wert zurück, der in der Gruppe der analysierten Werte am angegebenen Perzentil liegt.
Die folgende Anweisung gibt den Bewertungswert für das 50. Perzentil zurück.
Falls die Gruppe der Testbewertungen in der angegebenen Spalte aus den Werten 10, 20, 30, 40 und 50 besteht, gibt diese Anweisung den Wert 30 zurück.
Funktion Total.percentRank
Funktion Total.percentSum
Funktion Total.quartile
Diese Funktion berechnet die Prozentsatzrangfolge eines Wertes in einem angegebenen Feld.
percentRank( expr, filter [, group ]] )
Diese Funktion gibt die Prozentsatzrangfolge des Wertes im angegebenen Feld zurück. Der Rückgabewert liegt zwischen 0 und 1.
Die folgende Anweisung gibt die Prozentsatzrangfolge einer Bewertung unter allen Bewertungen in einer Spalte zurück:
Falls die Bewertungen im Auswertungsbereich die Werte 10, 10, 20 und 50 haben und die Bewertung in der Zelle, die diese Anweisung enthält, den Wert 30 hat, ist der Rückgabewert 0,5, weil die Hälfte der Werte über 20 und die Hälfte der Werte unter 20 liegt.
Funktion Total.percentile
Funktion Total.percentSum
Funktion Total.quartile
Diese Funktion berechnet, wie viel Prozent ein Wert zur Summe aller Werte in einem Bereich beiträgt.
percentSum( expr [, filter [, group ]] )
Diese Funktion gibt zurück, wie viel Prozentsatz dieser Wert zur Summe aller Werte im Bereich beiträgt.
Die folgende Anweisung gibt den Prozentsatz des Anteils zurück, den diese Bestellung an der Summe aller Bestellmengen hat:
Funktion Total.percentile
Funktion Total.percentRank
Funktion Total.quartile
Diese Funktion berechnet den Wert in einer definierten Gruppe von Werten, der kleiner als 0%, 25%, 50%, 75% oder 100% der Werte in der Gruppe ist.
quartile( expr, quartile, [, filter [, group ]] )
Diese Funktion gibt den Wert in der angegebenen Gruppe zurück, der im angegebenen Quartil liegt.
Die folgende Anweisung gibt die Bestellmenge zurück, bei der 75% kleiner und 25% größer ist:
Funktion Total.percentile
Funktion Total.percentRank
Funktion Total.percentSum
Diese Funktion berechnet, wo sich ein Wert in der Rangordnung einer Gruppe von Werten befindet. Der Wert für die Rangordnung liegt zwischen 1 und der Anzahl der Werte in der Gruppe. Falls zwei Werte identisch sind, haben sie dieselbe Position in der Rangfolge.
rank( expr [, filter [, group ]] )
Diese Funktion gibt eine ganze Zahl zurück, die die Position des Wertes in einer Rangfolge wiedergibt und zwischen 1 und der Anzahl der Elemente in der Gruppe von Werten liegt.
Die folgende Anweisung gibt die Rangordnung für das Feld "OrderAmt" unter allen Bestellmengen in der Spalte "OrderAmt" zurück:
Funktion Total.percentRank
Diese Funktion berechnet eine laufende Zeilenanzahl.
runningCount( filter [, group ]] )
Diese Funktion gibt die laufende Zeilenanzahl zurück.
Die folgende Anweisung gibt die laufende Zählung für einen Bericht zurück:
Aggregatfunktion Total.count
Aggregatfunktion Total.percentRank
Diese Aggregatfunktion berechnet die statistische Standardabweichung einer Folge von Zahlen. Die Standardabweichung ist eine Kennzahl für die Bandbreite einer Gruppe von Werten.
Total.stdDev( expr [, filter [, group ]] )
Diese Funktion gibt eine Standardabweichung für den angegebenen Ausdruck zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Aggregatfunktion Total.ave
Aggregatfunktion Total.median
Aggregatfunktion Total.mode
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.variance
Aggregatfunktion Total.weightedAve
Diese Aggregatfunktion berechnet die Summe, die bei der Addition eines Wertes für jede Zeile in der Gruppe entsteht. Der wert für jede Zeile wird unter Verwendung des Ausdrucks berechnet, der im Argument "expr" angegeben ist. Die Summe wird durch die Addition aller dieser Werte erzielt.
Total.sum( expr [, filter [, group ]] )
Die Summe des angegebenen Ausdrucks. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Die folgende Anweisung summiert die Bestellmengen für einen Kunden:
Aggregatfunktion Total.count
Aggregatfunktion Total.percentRank
Diese Aggregatfunktion berechnet die statistische Varianz einer Folge von Zahlen. Die Varianz ist eine Kennzahl für die Bandbreite einer Gruppe von Werten.
Total.variance( expr [, filter [, group ]] )
Diese Funktion gibt die Varianz des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Aggregatfunktion Total.ave
Aggregatfunktion Total.median
Aggregatfunktion Total.mode
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.weightedAve
Diese Aggregatfunktion berechnet das mathematische gewichtete Mittel. Falls das Argument "expr" oder das Argument "weight" mit Null ausgewertet wird, wird die Zeile aus dem Durchschnitt ausgeschlossen.
Total.weightedAve( expr, weight [, filter [, group ]] )
Diese Funktion gibt das gewichtete Mittel des angegebenen Ausdrucks zurück. Falls keine Zeilen verfügbar sind, gibt die Funktion Null zurück.
Angenommen, eine Finanzanwendung protokolliert Partien eines bestimmten Warenbestands, die zu unterschiedlichen Zeiten gekauft wurden. Jede Partie hat einen anderen Einkaufspreis, und es wurden jeweils eine Reihe von Einkäufen zu diesem Preis getätigt. Die folgende Anweisung berechnet den gewichteten mittleren Einkaufspreis:
Aggregatfunktion Total.ave
Aggregatfunktion Total.median
Aggregatfunktion Total.mode
Aggregatfunktion Total.movingAve
Aggregatfunktion Total.stdDev
Aggregatfunktion Total.variance
![]() ![]() |