Partager via


Calcul de totaux et autres agrégats (Reporting Services)

Dans une région de données de tableau matriciel, vous pouvez afficher les totaux agrégés d'un dataset de rapport, d'une région de données ou d'un groupe. Vous pouvez utiliser l'agrégation par défaut assurée par la commande Ajouter un total et utiliser l'étendue par défaut. Vous avez également la possibilité de spécifier une fonction d'agrégation différente des fonctions intégrées ou de spécifier une autre étendue.

Pour personnaliser un calcul d'agrégats, vous pouvez utiliser des variables de groupe associées à du code personnalisé. Pour plus d'informations, consultez Using Group Variables in Reporting Services 2008 for Custom Aggregation (en anglais).

Présentation de la commande Ajouter un total

Pour afficher les totaux généraux d'une région de données de tableau matriciel et les sous-totaux d'un groupe, utilisez la commande de raccourci Ajouter un total. La commande Ajouter un total est contextuelle. Pour une cellule figurant dans la zone d'un groupe de lignes, la commande Ajouter un total ajoute automatiquement une ligne en dehors du groupe pour les totaux. Pour une cellule figurant dans la zone d'un groupe de colonnes, la commande Ajouter un total ajoute automatiquement une colonne en dehors du groupe pour les totaux. Pour une cellule figurant dans le corps qui contient une expression de champ de type numérique, la commande Ajouter un total donne le choix d'ajouter un total à une ligne ou à une colonne. Pour plus d'informations sur l'utilisation de la commande Ajouter un total, consultez Procédure : ajouter un total à un groupe ou à une région de données de tableau matriciel (Reporting Services).

Par défaut, la commande Ajouter un total utilise la fonction Sum. Vous pouvez toutefois remplacer la fonction Sum par une autre fonction intégrée et effectuer une agrégation différente pour une étendue. Vous pouvez également écrire vos propres expressions pour calculer les valeurs d'agrégation d'une étendue par rapport à une autre étendue. Par exemple, vous pouvez calculer le pourcentage d'une valeur de groupe par rapport au dataset complet. Pour plus d'informations sur l'utilisation d'autres fonctions intégrées afin d'effectuer des agrégations, consultez Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services). Pour obtenir la liste des fonctions intégrées, consultez Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services).

Présentation de l'étendue par défaut

À mesure que le traitement et le rendu d'une région de données de tableau matriciel avancent, le Concepteur de rapports évalue la valeur de chaque cellule du tableau matriciel dans le contexte de l'étendue de la cellule. Lorsqu'elle figure sur une ligne associée à un groupe de lignes ou à un groupe de colonnes, une cellule peut appartenir à plusieurs groupes. L'ensemble de groupes auquel une cellule appartient, la région de données ou le dataset pour lequel une expression est évaluée est appelé étendue. L'étendue par défaut est définie par le groupe de colonnes et de lignes le plus profond auquel la cellule appartient. Des signaux visuels vous aident à identifier les groupes auxquels une cellule sélectionnée appartient. Pour plus d'informations, consultez Fonctionnement des cellules, lignes et colonnes des régions de données de tableau matriciel.

Un exemple d'étendue par défaut est fourni dans l'illustration suivante, qui présente un groupe de lignes parent basé sur une date, un groupe de lignes enfant basé sur une commande et un groupe de détails.

Mode Conception : total général dans table de base

Cette illustration montre une expression de champ pour Qty et LineTotal dans les cellules du corps d'un tableau matriciel sur plusieurs lignes. L'étendue par défaut de ces expressions de champ est décrite ci-dessous ligne par ligne :

  • Ligne 1. Cette ligne affiche des étiquettes de colonnes qui sont du texte statique. L'étendue par défaut correspond à la région de données. Cette ligne, qui n'apparaît qu'une seule fois, est parfois appelée « ligne d'en-tête ».

  • Ligne 2. Cette ligne affiche des données de détail, indiquées par le handle de ligne pour les détails (Poignée de ligne avec 3 lignes parallèles pour la ligne de détails). L'étendue par défaut de [Qty] correspond au groupe de détails, à savoir aux données du dataset lié à cette région de données une fois que tous les filtres de dataset, de région de données et de groupe ont été appliqués. Cette ligne se répète une fois par ligne dans le jeu de résultats de la requête de dataset. La valeur [Qty] affiche les données de détail du dataset.

  • Ligne 3. Cette ligne affiche les valeurs d'agrégation. L'étendue par défaut de [Sum(Qty)] correspond au groupe de lignes enfant Order. La ligne se répète une fois par valeur de numéro de commande unique. La valeur [Sum(Qty)] affiche la somme agrégée de chaque numéro de commande.

  • Ligne 4. Cette ligne affiche les valeurs d'agrégation. L'étendue par défaut de [Sum(Qty)] correspond au groupe de lignes parent Date. La ligne se répète une fois par valeur de date unique. La valeur [Sum(Qty)] affiche la somme agrégée pour chaque date.

  • Ligne 5. Cette ligne affiche les valeurs d'agrégation. L'étendue par défaut de [Sum(Qty)] correspond à la région de données. Cette ligne, qui n'apparaît qu'une seule fois, est parfois appelée « ligne de pied de page ». La valeur [Sum(Qty)] affiche la somme agrégée de la région de données.

Pour plus d'informations sur le contexte et l'étendue, consultez Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services). Pour plus d'informations sur l'interprétation des signaux visuels des régions de données de tableau matriciel, consultez Fonctionnement des cellules, lignes et colonnes des régions de données de tableau matriciel.

Spécification de calculs d'agrégats avec des étendues nommées

Pour spécifier une autre étendue que l'étendue par défaut, spécifiez une étendue nommée. Une étendue nommée inclut le nom du dataset, de la région de données ou du groupe. Comme les expressions sont contextuelles, l'étendue nommée que vous spécifiez doit être valide pour la fonction intégrée. Chaque fonction intégrée spécifie les étendues qui sont valides en tant que paramètre. Pour plus d'informations sur une référence de fonction spécifique, consultez la rubrique Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services).

Pour obtenir un exemple de modification de l'étendue par défaut en étendue nommée, supposez qu'un rapport possède les structures de données suivantes :

  • un dataset de rapport nommé Sales ;

  • une région de données de table nommée Tablix1 avec les groupes suivants :

    • un groupe de lignes parent nommé Category avec un groupe enfant nommé Subcat ;

    • un groupe de colonnes parent nommé Geography avec un groupe enfant nommé CountryRegion.

Dans ce rapport, vous utilisez la commande Ajouter un total pour ajouter des totaux à différentes cellules. Le rapport qui en résulte pourrait ressembler à celui illustré ci-dessous :

Matrice, groupes de lignes et de colonnes imbriqués avec totaux

Dans cette illustration, l'une des cellules a été sélectionnée. Pour cette cellule, les crochets indicateurs de groupes orange désignent l'appartenance aux groupes les plus profonds, à savoir le groupe Category et le groupe CountryRegion. L'appartenance aux groupes les plus profonds définit l'étendue par défaut de cette cellule. (Pour la cellule sélectionnée, deux crochets de groupes gris désignent également des groupes : le groupe de lignes Subcat et le groupe de colonnes Geography. Les groupes marqués avec un crochet de groupe gris sont des groupes externes du groupe interne sélectionné ou ne figurent pas dans l'étendue de la cellule sélectionnée.)

La cellule sélectionnée possède l'expression suivante : [Sum(LineTotal)]. En fonction de l'étendue et de l'expression de la cellule, le rapport rendu indique la valeur de la zone de texte sous forme de total [LineTotal] pour chaque valeur Subcat spécifique dans chaque valeur CountryRegion spécifique.

Sans remplacer la fonction Sum dans l'expression, vous pourriez modifier l'étendue de cette cellule de différentes manières :

  • Modifiez l'étendue pour qu'elle devienne le dataset Sales.   Par exemple, pour spécifier le total du dataset, vous pouvez remplacer l'expression par =Sum(Fields!LineTotal.Value, "Sales").

  • Modifiez l'étendue pour qu'elle devienne la région de données Tablix1 complète.   Par exemple, pour calculer le pourcentage de participation d'un groupe à la région de données totale, vous pouvez remplacer l'expression par =Sum(Fields!LineTotal.Value)/Sum((Fields! LineTotal.Value),"Tablix1").

    Dans cette nouvelle expression, le numérateur Sum(Fields! LineTotal.Value) correspond à la somme des totaux des lignes de chaque catégorie. Le dénominateur Sum((Fields! LineTotal.Value), "Tablix1") correspond à la somme des totaux des lignes de la région de données. Il en résulte le pourcentage représenté par chaque catégorie dans la région de données totale.

    Dans la cellule sélectionnée, vous pouvez spécifier l'une des étendues de groupe suivantes pour la fonction Sum : CountryRegion, Geography ou Category. Vous ne pouvez pas spécifier l'étendue du groupe Subcat, car la cellule ne figure pas sur une ligne associée au groupe Subcat.

    [!REMARQUE]

    Vous ne pouvez spécifier qu'une seule étendue pour une fonction d'agrégation. Vous ne pouvez pas spécifier simultanément les groupes Category et Geography comme étendues pour l'expression du dénominateur. La spécification de plusieurs étendues n'est pas prise en charge.

Pour obtenir la liste des fonctions intégrées, consultez Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services).

Exemples de spécification de différentes étendues

Le tableau suivant fournit des exemples d'expressions qui utilisent l'étendue par défaut, l'étendue de la région de donnée et l'étendue du dataset. Ces exemples partent du principe qu'il existe une région de données de tableau matriciel nommée Tablix1, un dataset nommé Sales et un champ nommé LineTotal qui contient le total d'une ligne d'article d'une commande client.

Description

Expression

Somme des totaux des lignes d'articles de l'étendue actuelle.

=Sum(Field!LineTotal.Value)

Pourcentage de (la somme des totaux des lignes d'articles de l'étendue actuelle)/(la somme des totaux des lignes de la région de données).

Cette valeur est mise en forme dans le format d'affichage par défaut de la zone de texte.

=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1")

En cas de positionnement sur une ligne associée au groupe CountryRegion :

Pourcentage de (la somme des totaux des lignes d'articles du groupe CountryRegion)/(la somme des totaux des lignes du groupe Geography).

Cette valeur est mise en forme dans le format d'affichage par défaut de la zone de texte, qui doit être défini sur P1 pour le formulaire #.#%.

=Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Geography")

Pourcentage de (la somme des totaux des lignes d'articles de l'étendue actuelle)/(la somme des totaux des lignes de la région de données).

Cette valeur est mise en forme avec IIF, de telle sorte que le résultat reste vierge en l'absence de totaux des lignes d'articles dans le groupe actuel.

=IIF(Sum(Field!LineTotal.Value)<=0,"", FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Tablix1"),1)

Pourcentage de (la somme des totaux des lignes d'articles de l'étendue actuelle)/(la somme des totaux des articles du dataset).

Cette valeur est mise en forme avec FormatPercent qui spécifie un nombre de décimales.

="Percentage contributing to all sales: " & FormatPercent(Sum(Field!LineTotal.Value)/Sum(Field!LineTotal.Value,"Sales"),1)

Suppression de valeurs Null ou zéro dans une cellule

Pour de nombreux rapports, les calculs qui sont limités à des groupes peuvent créer plusieurs cellules ayant pour valeur zéro (0) ou Null. Pour clarifier votre rapport, ajoutez une expression visant à retourner des espaces vides lorsque la valeur d'agrégation est 0. Pour plus d'informations, consultez « Exemples de suppression de valeurs Null ou zéro » dans Exemples d'expressions (Reporting Services).

Historique des modifications

Mise à jour du contenu

Ajout d'un lien pour une agrégation personnalisée.