Rubrique précédenteRubrique suivante


Classe Total

La classe Total sert de collecteur pour les fonctions d'agrégation. Elle contient un certain nombre de fonctions d'agrégation. Ces fonctions sont des extensions BIRT de JavaScript qui regroupent un ensembles de lignes. L'application BIRT Report Engine implémente une fonction dans les deux phases suivantes :

BIRT réécrit les scripts qui contiennent un agrégat, en créant un script révisé qui exécute les deux phases. Le seul stade où il est important d'avoir connaissance de ce processus est lors du débogage d'une expression contenant un agrégat. Observez l'exemple indiquant une valeur dans le bas de page d'un groupe, où la valeur est un pourcentage du total pour tous les comptes. L'instruction ci-dessous exécute l'action suivante :

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

Dans l'exemple précédent, Total.OVERALL indique à BIRT de calculer l'agrégat de somme sur toutes les lignes, même si l'expression apparaît dans un total de groupe. Pour calculer l'expression dans l'exemple précédent, BIRT calcule le solde total dans un premier temps et calcule ensuite la valeur de chaque compte.

Les règles générales de la classe Total sont les suivantes :

A propos du regroupement et du filtrage

Tous les agrégats autorisent deux arguments facultatifs afin d'indiquer le filtrage et le regroupement :

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

A propos de l'argument de filtre

Un argument de filtre fournit une expression booléenne que l'application BIRT analyse sur chaque ligne. Elle prend uniquement en compte les lignes qui correspondent au filtre lors du calcul de l'agrégat. Par exemple, un rapport peut additionner les plafonds de crédit des clients actifs afin de déterminer le risque de crédit maximal.

L'expression est exécutée dans la phase de transformation des données. Elle peut accéder aux colonnes dans la ligne, aux paramètres, aux fonctions définies par l'utilisateur, ainsi qu'à d'autres ressources définies dans la description du contexte précédemment. Par exemple :

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

Un argument de filtre null, indéfini ou Total.NO_FILTER signifie qu'aucun filtre n'est fourni. Si l'application ne fournit aucun filtre, le filtre est par défaut non défini. Si vous indiquez un argument de groupe, vous devez entrer soit la valeur null, soit Total.NO_FILTER pour ne spécifier aucun filtrage.

A propos de l'argument de groupe

Les rapports ont souvent besoin d'afficher des totaux pour le niveau de regroupement en cours. Par exemple, supposez qu'un rapport soit regroupé en fonction des clients et des commandes et que les enregistrements des détails représentent les lignes article des commandes. Chaque ligne article comporte un prix unitaire et une quantité, comme dans l'agrégat suivant :

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

Cet agrégat additionne les valeurs sur le groupe en cours. S'il est placé dans le bas de page, il affiche la somme des lignes de cette commande. S'il est placé dans le bas de page du client, il affiche la somme des lignes de l'ensemble des commandes relatives à ce client. Par ailleurs, s'il est placé dans le bas de page du rapport, il affiche la somme des lignes de tous les clients.

L'application est parfois amenée à accéder à un total d'un autre niveau de regroupement. Par exemple, vous voulez connaître la valeur totale d'une commande sous la forme d'un pourcentage de toutes les commandes du client. Dans ce cas, vous devez accéder au total d'un groupe autre que celui en cours. Pour ce faire, utilisez l'argument de regroupement :

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

L'argument de groupe peut être l'un des suivants :

Les exemples ci-dessous illustrent ces types d'argument de groupe :

Total.sum( row["myCol"] null, null ); // Groupe en cours 
Total.sum( row["myCol"], null, "Customer" ); // Par nom 
Total.sum( row["myCol"], null, "row[`custID']" ); // Par clé de groupe  Total.sum( row["myCol"], null, 1 ); // Par index de groupe 
Total.sum( row["myCol"], null, "Overall" ); // Totaux généraux 
Total.sum( row["myCol"], null, 0 ); // Totaux généraux 

Vous devez fournir l'argument de filtre lors de l'utilisation de l'argument de regroupement. Si vous n'avez pas besoin d'un filtre, attribuez la valeur null au filtre. L'index de groupe n'est pas placé entre guillemets. Il doit s'agir d'un nombre. A savoir que 1 représente le groupe au niveau 1, et "1" représente le groupe nommé "1".

Propriétés statiques

OVERALL

fonctions

Total.ave

Cette fonction d'agrégation calcule la valeur moyenne mathématique. Si l'expression a pour résultat un nombre, cette fonction renvoie la moyenne de ces nombres. Si l'expression a pour résultat une date, la fonction renvoie la date moyenne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur moyenne de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.

Exemple

L'instruction suivante renvoie l'âge moyen des étudiants dans une classe :

Total.ave( row.Age ) 

Pour renvoyer la date d'anniversaire moyenne des étudiants d'une classe, utilisez l'instruction suivante :

Total.ave( row.BirthDate ) 

Voir également

Agrégat Total.median

Agrégat Total.mo

Agrégat Total.movingAve

Agrégat Total.stdDev

Agrégat Total.variance

Agrégat Total.weightedAve

Total.count

Cette fonction calcule le nombre de lignes dans le groupe.

Syntaxe

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

Arguments

Exemple

Cet exemple calcule le nombre d'étudiants de sexe masculin et féminin dans une classe. Il est nécessaire de créer deux éléments de données. Affectez au premier la valeur :

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

Affectez au second la valeur :

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

Voir également

Agrégat Total.countDistinct

Agrégat Total.sum

Total.countDistinct

Cette fonction calcule le nombre de valeurs distinctes dans le groupe ou le fichier. L'argument expr donne une expression utilisée pour grouper les valeurs. L'expression fait référence à une colonne de ligne de données. Les valeurs null sont calculées comme des valeurs distinctes.

Syntaxe

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

Arguments

Renvoie

Le nombre de valeurs distinctes dans le groupe ou le fichier. Renvoie zéro si aucune ligne n'est disponible.

Exemple

Supposons que nous voudrions connaître le nombre de pays différents représentés par un groupe d'étudiants. Nous pouvons définir un élément de données qui utilise l'expression suivante :

Total.countDistinct( row.Country ) 

Dans cette instruction, row.Country est une colonne qui contient le nom ou le code du pays d'origine de l'étudiant. Supposons que certaines lignes contiennent des valeurs null, ce qui signifie que nous ne connaissons pas le pays d'origine. Utilisez l'instruction suivante pour exclure ces lignes du calcul :

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

Voir également

Agrégat Total.count

Total.first

Cette fonction d'agrégation renvoie la première valeur qui apparaît dans un fichier. Il s'agit de la première valeur extraite du fichier lors de l'extraction des lignes à l'aide de l'ordre de tri défini pour la table ou la liste.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la première valeur qui apparaît dans la suite de lignes, ou la valeur null si le fichier ne contient aucune ligne.

Exemple

Supposons qu'un rapport établisse les transactions d'un stock donné sur une période de temps. L'instruction suivante affiche l'acquisition la plus ancienne du stock :

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

Voir également

Agrégat Total.isBottomNPercent

Agrégat Total.max

Agrégat Total.min

Total.isBottomN

Cette fonction renvoie une valeur booléenne qui indique si la valeur d'un champ numérique indiqué est l'une des valeurs n les plus basses.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur true ou false. Cette fonction renvoie la valeur true si la valeur contenue dans le champ numérique est comprise dans l'ensemble n inférieur de toutes les valeurs présentes dans cette colonne.

Exemple

Supposons qu'une colonne du rapport comprenne cinq lignes contenant les valeurs 1, 2, 3, 4 et 5. Total.isBottomN(expr, 2) teste si le champ représenté par expr contient un 1 ou un 2, les deux nombres les plus faibles de la colonne.

Voir également

Total.isBottomNPercent

Total.isTopN

Total.isTopNPercent

Total.isBottomNPercent

Cette fonction renvoie une valeur booléenne indiquant si la valeur d'un champ numérique spécifié est comprise dans le pourcentage n inférieur de toutes les valeurs contenues dans la colonne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur true ou false. Cette fonction renvoie la valeur true si la valeur contenue dans le champ est comprise dans le pourcentage n inférieur de toutes les valeurs présentes dans cette colonne.

Exemple

Supposons qu'une colonne du rapport comporte cinq lignes contenant les valeurs 1, 2, 3, 4 et 5. Total.isBottomNPercent(expr, 60) teste si le champ représenté par expr contient un 1, 2 ou un 3, les soixante pour cent les plus bas des nombres compris dans la colonne.

Voir également

Total.isBottomN

Total.isTopN

Total.isTopNPercent

Total.isTopN

Cette fonction renvoie une valeur booléenne indiquant si la valeur d'un champ numérique indiqué est l'une des valeurs n les plus élevées.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur true ou false. Cette fonction renvoie la valeur true si la valeur contenue dans le champ numérique est comprise dans l'ensemble n supérieur de toutes les valeurs présentes dans cette colonne.

Exemple

Supposons qu'une colonne du rapport comprenne cinq lignes contenant les valeurs 1, 2, 3, 4 et 5. Total.isTopN(expr, 2) teste si le champ représenté par expr contient un 4 ou un 5, les deux chiffres les plus élevés de la colonne.

Voir également

Total.isTopNPercent

Total.isBottomN

Total.isBottomNPercent

Total.isTopNPercent

Cette fonction renvoie une valeur booléenne indiquant si la valeur d'un champ numérique spécifié est comprise dans le pourcentage n supérieur de toutes les valeurs contenues dans la colonne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur true ou false. Cette fonction renvoie la valeur true si la valeur contenue dans le champ est comprise dans le pourcentage n supérieur de toutes les valeurs présentes dans cette colonne.

Exemple

Supposons qu'une colonne du rapport comporte cinq lignes contenant les valeurs 1, 2, 3, 4 et 5. Total.isTopNPercent(expr, 60) teste si le champ représenté par expr contient 3, 4 ou 5, les soixante pour cent les plus élevés des nombres compris dans la colonne.

Voir également

Total.isTopN

Total.isBottomN

Total.isBottomNPercent

Total.last

Cette fonction renvoie la dernière valeur qui apparaît dans un fichier. Il s'agit de la dernière valeur extraite du fichier lors de l'extraction des lignes à l'aide de l'ordre de tri défini pour la table ou la liste.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la dernière valeur qui apparaît dans la suite de lignes, ou la valeur null si le fichier ne contient aucune ligne.

Exemple

Supposons qu'un rapport établisse les transactions d'un stock donné sur une période de temps. L'instruction suivante affiche l'acquisition la plus récente du stock :

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

Voir également

Agrégat Total.first

Agrégat Total.max

Agrégat Total.min

Total.max

Cette fonction calcule la valeur maximale de l'expression indiquée. L'expression est évaluée pour chaque ligne et la valeur maximale est conservée. Cette fonction peut fonctionner avec un nombre, une date ou une chaîne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur maximale de l'expression donnée. Elle renvoie la valeur null si aucune ligne n'était disponible.

Exemple

L'instruction suivante recherche l'étudiant le plus âgé d'une classe :

Total.max( row.Age ) 

Voir également

Agrégat Total.first

Agrégat Total.isBottomNPercent

Agrégat Total.min

Total.median

Cette fonction d'agrégation calcule la valeur médiane mathématique. La moitié des valeurs sont situées au dessus de la médiane et l'autre moitié en dessous.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie une valeur moyenne de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.

Exemple

L'instruction suivante renvoie l'âge moyen des étudiants d'une classe :

Total.median( row.Age ) 

Pour renvoyer la date d'anniversaire médiane des étudiants d'une classe, utilisez l'instruction suivante :

Total.median( row.BirthDate ) 

Voir également

Agrégat Total.ave

Agrégat Total.mo

Agrégat Total.movingAve

Agrégat Total.stdDev

Agrégat Total.variance

Agrégat Total.weightedAve

Total.min

Cette fonction d'agrégation calcule la valeur minimale de l'expression donnée. L'expression est évaluée pour chaque ligne et la valeur minimale est conservée. Cette fonction peut fonctionner avec n'importe quel type simple : un nombre, une date ou une chaîne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur minimale de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.

Exemple

L'instruction suivante renvoie l'âge de l'étudiant le plus jeune d'une classe :

Total.min( row.Age ) 

Voir également

Agrégat Total.first

Agrégat Total.isBottomNPercent

Agrégat Total.max

Total.mode

Cette fonction d'agrégation calcule la valeur de mode mathématique. Le mode est la valeur qui apparaît le plus fréquemment dans les données. Par exemple, dans la suite {1, 2, 3, 2, 4, 7}, 2 est le mode, car il apparaît deux fois, alors que les autres chiffres n'apparaissent qu'une seule fois. Si un fichier contient plusieurs modes, comme dans la séquence {1,2,3,2,3}, l'agrégat du mode renvoie la valeur null.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie une valeur de mode de l'expression donnée. Elle renvoie la valeur null si aucune ligne n'était disponible ou si les données comportaient plusieurs modes.

Exemple

L'instruction suivante renvoie l'âge le plus courant des étudiants d'une classe :

Total.mode( row.Age ) 

Voir également

Agrégat Total.ave

Agrégat Total.median

Agrégat Total.movingAve

Agrégat Total.stdDev

Agrégat Total.variance

Agrégat Total.weightedAve

Total.movingAve

Cette fonction d'agrégation calcule une moyenne mobile. L'argument expr affecte la valeur à la moyenne et l'argument window indique le nombre de lignes à prendre en compte. La moyenne des lignes est calculée dans l'ordre déterminé par le contexte, généralement celui indiqué par un tri pour un élément List ou Table.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie une valeur de moyenne mobile de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.

Exemple

Supposons qu'un rapport établisse la liste du coût journalier d'un stock. Pour afficher la moyenne mobile de ce stock sur les cinq derniers jours, utilisez l'instruction suivante :

Total.movingAve( row.price, 5 ); 

Voir également

Agrégat Total.ave

Agrégat Total.median

Agrégat Total.mo

Agrégat Total.stdDev

Agrégat Total.variance

Agrégat Total.weightedAve

Total.percentile

Cette fonction examine un ensemble de valeurs et renvoie celle située à un certain centile de toutes les valeurs contenues dans l'ensemble. Par exemple, vous voulez savoir quel résultat représente le 90ème centile de tous les résultats d'un test.

Syntaxe

Arguments

Renvoie

Cette fonction renvoie la valeur qui est au centile indiqué dans l'ensemble de valeurs analysées.

Exemple

L'instruction suivante renvoie la 50ème valeur centile :

Total.percentile( row.TestScore, 0.5) 

Si l'ensemble des résultats de test dans la colonne indiqué est 10, 20, 30, 40 et 50, cette instruction renvoie 30.

Voir également

Total.percentRank

Total.percentSum

Total.quartile

Total.percentRank

Cette fonction calcule le classement en pourcentage d'une valeur dans un champ donné.

Syntaxe

percentRank( expr, filter [, group ]] )

Arguments

Renvoie

Cette fonction renvoie le classement en pourcentage de la valeur contenue dans le champ indiqué. La valeur de retour est comprise entre zéro et un.

Exemple

L'instruction suivante renvoie le classement en pourcentage d'un résultat parmi les résultats contenus dans une colonne :

Total.percentRank( row.Scores ) 

Si les résultats compris dans l'intervalle d'évaluation sont 10, 10, 20 et 50, et que le résultat dans la cellule contenant cette instruction est 30, la valeur de retour est 0,5 car la moitié des valeurs sont au dessus de 20 et la moitié en dessous de 20.

Voir également

Total.percentile

Total.percentSum

Total.quartile

Total.percentSum

Cette fonction calcule un pourcentage.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie le pourcentage de la contribution de cette valeur à la somme de toutes les valeurs comprises dans l'intervalle.

Exemple

L'instruction suivante renvoie le pourcentage de contribution du montant de cette commande à la somme de tous les montants des commandes :

Total.percentSum( row.OrderAmt ) 

Voir également

Total.percentile

Total.percentRank

Total.quartile

Total.quartile

Cette fonction calcule la valeur comprise dans un ensemble de valeurs définies dont 0 %, 25 %, 50 %, 75 % or 100 % des valeurs de l'ensemble sont supérieures.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur comprise dans l'ensemble indiqué correspondant au quartile spécifié.

Exemple

L'instruction suivante renvoie le montant de la commande dont 75 % sont inférieurs et 25 % sont supérieurs :

Total.quartile( row.OrderAmt, 3) 

Voir également

Total.percentile

Total.percentRank

Total.percentSum

Total.rank

Cette fonction calcule la position à laquelle une valeur se classe parmi un ensemble de valeurs. La valeur de classement est comprise entre 1 et le nombre de valeurs contenues dans l'ensemble. Si deux valeurs sont identiques, elles ont le même classement.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie un entier qui reflète le classement des valeurs et comporte un intervalle de 1 au nombre d'éléments compris dans l'ensemble de valeurs

Exemple

L'instruction suivante renvoie le classement du champ OrderAmt parmi les montants des commandes contenus dans la colonne OrderAmt.

Total.rank( row.OrderAmt ) 

Voir également

Total.percentRank

Total.runningCount

Cette fonction calcule un nombre de lignes actives.

Syntaxe

runningCount( filter [, group ]] )

Arguments

Renvoie

Cette fonction renvoie le nombre de lignes actives.

Exemple

L'instruction suivante renvoie le comptage en cours d'un rapport :

Total.runningCount( ) 

Voir également

Agrégat Total.count

Agrégat Total.percentRank

Total.stdDev

Cette fonction d'agrégation calcule l'écart type statistique d'une suite de nombres. L'écart type est une mesure de l'étendue d'un ensemble de valeurs.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie un écart type de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.

Voir également

Agrégat Total.ave

Agrégat Total.median

Agrégat Total.mo

Agrégat Total.movingAve

Agrégat Total.variance

Agrégat Total.weightedAve

Total.sum

Cette fonction d'agrégation calcule la somme résultant de l'ajout d'une valeur pour chaque ligne du groupe. La valeur de chaque ligne est calculée à l'aide de l'expression indiquée dans l'argument expr. On obtient cette somme en ajoutant toutes ces valeurs.

Syntaxe

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

Arguments

Renvoie

La somme de l'expression indiquée. Renvoie zéro si aucune ligne n'est disponible.

Exemple

L'instruction suivante totalise les montants des commandes d'un client :

Total.sum( row.OrderAmt ) 

Voir également

Agrégat Total.count

Agrégat Total.percentRank

Total.variance

Cette fonction d'agrégation calcule l'écart statistique d'une suite de nombres. L'écart est une mesure de l'étendue d'un ensemble de valeurs.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie l'écart de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.

Voir également

Agrégat Total.ave

Agrégat Total.median

Agrégat Total.mo

Agrégat Total.movingAve

Agrégat Total.stdDev

Agrégat Total.weightedAve

Total.weightedAve

Cette fonction d'agrégation calcule la valeur moyenne pondérée mathématique. Si l'un ou l'autre des arguments expr ou weight ont la valeur null, la ligne est exclue de la moyenne.

Syntaxe

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

Arguments

Renvoie

Cette fonction renvoie la valeur moyenne pondérée de l'expression. Renvoie la valeur null si aucune ligne n'est disponible.

Exemple

Supposons qu'une application financière surveille les lots d'un stock acheté à différentes périodes. Chaque lot comporte un prix d'achat différent et un nombre de parts achetées à ce prix. L'instruction suivante calcule le prix d'achat moyen pondéré :

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

Voir également

Agrégat Total.ave

Agrégat Total.median

Agrégat Total.mo

Agrégat Total.movingAve

Agrégat Total.stdDev

Agrégat Total.variance


(c) Copyright Actuate Corporation 2006

Rubrique précédenteRubrique suivante