![]() ![]() |
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 :
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 :
Tous les agrégats autorisent deux arguments facultatifs afin d'indiquer le filtrage et le regroupement :
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 :
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.
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 :
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 :
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".
OVERALL
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.
Total.ave( expr [, filter [, group ]] )
Cette fonction renvoie la valeur moyenne de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.
L'instruction suivante renvoie l'âge moyen des étudiants dans une classe :
Pour renvoyer la date d'anniversaire moyenne des étudiants d'une classe, utilisez l'instruction suivante :
Agrégat Total.median
Agrégat Total.mo
Agrégat Total.movingAve
Agrégat Total.stdDev
Agrégat Total.variance
Agrégat Total.weightedAve
Cette fonction calcule le nombre de lignes dans le groupe.
Total.count( [ filter [, group ]] )
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 :
Affectez au second la valeur :
Agrégat Total.countDistinct
Agrégat Total.sum
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.
Total.countDistinct ( expr [, filter [, group ]] )
Le nombre de valeurs distinctes dans le groupe ou le fichier. Renvoie zéro si aucune ligne n'est disponible.
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 :
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 :
Agrégat Total.count
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.
Total.first( expr [, filter [, group ]] )
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.
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 :
Agrégat Total.isBottomNPercent
Agrégat Total.max
Agrégat Total.min
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.
Total.isBottomN( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.isBottomNPercent( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.isTopN( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.isTopNPercent( expr, n, [, filter [, group ]] )
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.
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.
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.
Total.last( expr [, filter [, group ]] )
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.
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 :
Agrégat Total.first
Agrégat Total.max
Agrégat Total.min
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.
Total.max( expr [, filter [, group ]] )
Cette fonction renvoie la valeur maximale de l'expression donnée. Elle renvoie la valeur null si aucune ligne n'était disponible.
L'instruction suivante recherche l'étudiant le plus âgé d'une classe :
Agrégat Total.first
Agrégat Total.isBottomNPercent
Agrégat Total.min
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.
Total.median( expr [, filter [, group ]] )
Cette fonction renvoie une valeur moyenne de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.
L'instruction suivante renvoie l'âge moyen des étudiants d'une classe :
Pour renvoyer la date d'anniversaire médiane des étudiants d'une classe, utilisez l'instruction suivante :
Agrégat Total.ave
Agrégat Total.mo
Agrégat Total.movingAve
Agrégat Total.stdDev
Agrégat Total.variance
Agrégat Total.weightedAve
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.
Total.min( expr [, filter [, group ]] )
Cette fonction renvoie la valeur minimale de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.
L'instruction suivante renvoie l'âge de l'étudiant le plus jeune d'une classe :
Agrégat Total.first
Agrégat Total.isBottomNPercent
Agrégat Total.max
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.
Total.mode( expr [, filter [, group ]] )
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.
L'instruction suivante renvoie l'âge le plus courant des étudiants d'une classe :
Agrégat Total.ave
Agrégat Total.median
Agrégat Total.movingAve
Agrégat Total.stdDev
Agrégat Total.variance
Agrégat Total.weightedAve
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.
Total.movingAve( expr, window [, filter [, group ]] )
Cette fonction renvoie une valeur de moyenne mobile de l'expression donnée. Renvoie la valeur null si aucune ligne n'est disponible.
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 :
Agrégat Total.ave
Agrégat Total.median
Agrégat Total.mo
Agrégat Total.stdDev
Agrégat Total.variance
Agrégat Total.weightedAve
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.
Cette fonction renvoie la valeur qui est au centile indiqué dans l'ensemble de valeurs analysées.
L'instruction suivante renvoie la 50ème valeur centile :
Si l'ensemble des résultats de test dans la colonne indiqué est 10, 20, 30, 40 et 50, cette instruction renvoie 30.
Cette fonction calcule le classement en pourcentage d'une valeur dans un champ donné.
percentRank( expr, filter [, group ]] )
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.
L'instruction suivante renvoie le classement en pourcentage d'un résultat parmi les résultats contenus dans une colonne :
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.
Cette fonction calcule un pourcentage.
percentSum( expr [, filter [, group ]] )
Cette fonction renvoie le pourcentage de la contribution de cette valeur à la somme de toutes les valeurs comprises dans l'intervalle.
L'instruction suivante renvoie le pourcentage de contribution du montant de cette commande à la somme de tous les montants des commandes :
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.
quartile( expr, quartile, [, filter [, group ]] )
Cette fonction renvoie la valeur comprise dans l'ensemble indiqué correspondant au quartile spécifié.
L'instruction suivante renvoie le montant de la commande dont 75 % sont inférieurs et 25 % sont supérieurs :
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.
rank( expr [, filter [, group ]] )
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
L'instruction suivante renvoie le classement du champ OrderAmt parmi les montants des commandes contenus dans la colonne OrderAmt.
Cette fonction calcule un nombre de lignes actives.
runningCount( filter [, group ]] )
Cette fonction renvoie le nombre de lignes actives.
L'instruction suivante renvoie le comptage en cours d'un rapport :
Agrégat Total.count
Agrégat Total.percentRank
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.
Total.stdDev( expr [, filter [, group ]] )
Cette fonction renvoie un écart type de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.
Agrégat Total.ave
Agrégat Total.median
Agrégat Total.mo
Agrégat Total.movingAve
Agrégat Total.variance
Agrégat Total.weightedAve
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.
Total.sum( expr [, filter [, group ]] )
La somme de l'expression indiquée. Renvoie zéro si aucune ligne n'est disponible.
L'instruction suivante totalise les montants des commandes d'un client :
Agrégat Total.count
Agrégat Total.percentRank
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.
Total.variance( expr [, filter [, group ]] )
Cette fonction renvoie l'écart de l'expression indiquée. Renvoie la valeur null si aucune ligne n'est disponible.
Agrégat Total.ave
Agrégat Total.median
Agrégat Total.mo
Agrégat Total.movingAve
Agrégat Total.stdDev
Agrégat 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.
Total.weightedAve( expr, weight [, filter [, group ]] )
Cette fonction renvoie la valeur moyenne pondérée de l'expression. Renvoie la valeur null si aucune ligne n'est disponible.
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é :
Agrégat Total.ave
Agrégat Total.median
Agrégat Total.mo
Agrégat Total.movingAve
Agrégat Total.stdDev
Agrégat Total.variance
![]() ![]() |