Utilisation de fonctions de rapport et d'agrégation intégrées dans des expressions (Reporting Services)

Reporting Services propose des fonctions intégrées utilisables dans des expressions pour calculer des données d'agrégation dans des datasets, des régions de données et des groupes, ainsi que pour extraire d'autres valeurs de données, telles que la première ou la dernière valeur d'une page de rapport. La fonction d'agrégation par défaut pour les champs de type numérique est SUM. Dans la boîte de dialogue Expression, sélectionnez la catégorie Agrégat dans Fonctions communes pour choisir une autre fonction.

Étant donné que les données de rapport et la mise en page de rapport sont associées au moment de l'exécution, le processeur de rapports détermine l'étendue par défaut de chaque référence de fonction dans une expression. L'étendue par défaut peut être un dataset, une région de données, un groupe de tableaux matriciels (parents, enfants, adjacents ou récursifs), l'intersection d'une ligne de tableau matriciel et d'un groupe de colonnes, ou un groupe de graphiques (série, catégorie, valeur). Pour la plupart des fonctions, vous pouvez également spécifier, pour votre appel de fonction, une étendue qui est différente que l'étendue par défaut. Pour déterminer les étendues valides pour une fonction, consultez la rubrique de référence de fonction individuelle. Pour obtenir des exemples, consultez Calcul de totaux et autres agrégats (Reporting Services).

Le tableau ci-dessous répertorie les catégories de fonctions intégrées prises en charge par Reporting Services :

  • Calcul d'agrégats

  • Calcul de valeurs d'exécution

  • Récupération de nombres de lignes

  • Extraction de valeurs dépendantes du tri

  • Extraction d'agrégats de serveurs

  • Extraction du niveau récursif

  • Test de l'étendue

Présentation de l'étendue

Dans Reporting Services, l'étendue d'un terme recouvre des concepts différents selon le contexte. La liste suivante décrit les différents concepts.

  • Étendue pour les éléments de rapport dans le traitement des rapports. Lorsque les données du rapport et la mise en page du rapport sont associées au moment de l'exécution, chaque élément de rapport est traité. Une région de données de tableau matriciel est traitée de l'extérieur en jeux de données encore plus restrictifs lorsque des groupes de lignes et des groupes de colonnes de tableau matriciel sont traités. Dans ce sens, un groupe est contenu par une région de données. Un groupe enfant et ses frères sont contenus par son groupe parent. Par exemple, un élément de bascule pour un groupe doit être une zone de texte présente dans le même groupe ou le même groupe conteneur. Pour plus d'informations, consultez Présentation des étendues contenantes plus loin dans cette rubrique.

  • Étendue pour les fonctions d'agrégation. Le processeur de rapports évalue chaque expression d'agrégation dans une étendue nommée ou l'étendue par défaut, comme décrit dans la liste suivante.

    • Une étendue nommée peut être le nom d'un dataset, d'une région de données ou d'un groupe.

    • L'étendue par défaut dépend de la propriété d'élément de rapport que le processeur de rapports évalue. Par exemple, l'étendue par défaut d'une cellule de tableau matriciel dans une région de données avec des groupes de lignes et de colonnes est le groupe de lignes et le groupe de colonnes les plus profonds auxquels la cellule appartient. L'étendue par défaut d'une cellule dans une table sans groupes est le groupe de détails. Sur l'aire de conception, une région de données de tableau matriciel fournit des éléments visuels que vous pouvez utiliser pour déterminer les étendues disponibles d'une cellule. Des barres de groupe apparaissent au-dessus et à côté de la région de données de tableau matriciel pour indiquer quelles lignes ou colonnes appartiennent à un groupe. Lorsqu'une cellule est sélectionnée, des indicateurs de groupe montrent les groupes actifs les plus profonds auxquels la cellule appartient. Pour plus d'informations, consultez Utilisation de régions de données de tableau matriciel.

      Pour une zone de texte sur l'aire de conception, il n'y a aucune étendue par défaut. Vous devez spécifier le nom du dataset à utiliser, par exemple =First(Fields!Sales.Value,"Dataset1").

      Lorsque vous appelez une fonction intégrée et que vous spécifiez une étendue nommée, vérifiez la référence de fonction pour déterminer quelles étendues sont valides. Par exemple, pour Sum, vous pouvez spécifier l'étendue par défaut ou une étendue contenante.

Présentation des étendues contenantes

Les étendues suivantes répertorient l'ordre de contenance du plus à l'extérieur (le plus haut) au plus profond (le plus bas), et décrivent les données qu'elles représentent :

  • Dataset du rapport   Spécifie le dataset de rapport lié à la région de données ou à un élément de rapport dans le corps du rapport. Les données utilisées pour l'agrégation proviennent du dataset du rapport après l'application des expressions de filtre du dataset.

  • Région de données   Spécifie les données provenant de la région de données après l'application des expressions de filtre et de tri de la région de données. Les filtres de groupe ne sont pas utilisés lors du calcul d'agrégats pour les régions de données.

  • Groupes de lignes et de colonnes   Spécifie les données après l'application des expressions de groupe et des filtres de groupe pour le groupe parent et les groupes enfants. Dans le cadre de l'identification de la relation contenant-contenu de l'étendue, chaque groupe parent contient ses groupes enfants.

  • Régions de données imbriquées   Spécifie les données de la région de données imbriquée dans le contexte de la cellule à laquelle elles ont été ajoutées, et après l'application des expressions de filtre et de tri de la région des données imbriquée.

  • Groupes de lignes et de colonnes pour les régions de données imbriquées   Spécifie les données après l'application des expressions de groupe et des filtres de groupe de la région des données imbriquée.

Lorsqu'une fonction intégrée déclare que vous devez spécifier l'étendue actuelle ou une étendue contenante, vous ne pouvez pas spécifier une étendue qui est inférieure ou de même niveau dans l'ordre de la relation contenant-contenu que l'étendue actuelle. Par exemple, à partir d'une ligne appartenant à un groupe de lignes qui a un groupe enfant, vous ne pouvez pas spécifier le nom du groupe enfant comme étendue, ni spécifier un groupe de lignes frère. Vous devez utiliser l'étendue par défaut ou spécifier une étendue supérieure dans l'ordre de la relation contenant-contenu.

[!REMARQUE]

Vous ne pouvez pas agréger, dans une expression unique, des valeurs à la fois dans un groupe de lignes et dans un groupe de colonnes. L'écriture d'une expression qui inclut un agrégat avec une étendue de groupe de lignes et un autre agrégat avec une étendue de groupe de colonnes n'est pas prise en charge.

Expressions de filtre

Les expressions de filtre de dataset et de région de données ne peuvent pas contenir des fonctions d'agrégation. Les filtres de groupe sont ignorés lors du calcul d'agrégats pour les régions de données.

Calcul d'agrégats

Les fonctions intégrées suivantes calculent des valeurs résumées pour un jeu de données numériques non Null dans l'étendue par défaut ou l'étendue nommée. Toutes les données utilisées pour un calcul d'agrégat doivent être du même type. Pour convertir des données qui ont plusieurs types de données numériques en un même type de données, utilisez des fonctions de conversion telles que CInt, CDbl ou CDec. Pour plus d'informations, consultez Fonctions de conversion de types de données.

Pour calculer des résumés pour un groupe de hiérarchies récursives à l'aide de ces fonctions, vous devez spécifier le paramètre Recursive.

Fonction

Description

Avg

Retourne la moyenne de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans l'étendue donnée.

Count

Retourne le nombre de valeurs non Null spécifiées par l'expression, évaluée dans le contexte de l'étendue donnée.

CountDistinct

Retourne le nombre de toutes les valeurs non Null distinctes spécifiées par l'expression, évaluée dans le contexte de l'étendue donnée.

Max

Retourne la valeur maximale de toutes les valeurs numériques non Null spécifiées par l'expression, dans le contexte de l'étendue donnée. Vous pouvez utiliser cette fonction pour spécifier une valeur maximale d'axe de graphique afin de contrôler l'échelle.

Min

Retourne la valeur minimale de toutes les valeurs numériques non Null spécifiées par l'expression, dans le contexte de l'étendue donnée. Vous pouvez utiliser cette fonction pour spécifier une valeur minimale d'axe de graphique afin de contrôler l'échelle.

StDev

Retourne l'écart type de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans l'étendue donnée.

StDevP

Retourne l'écart type de remplissage de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans le contexte de l'étendue donnée.

Sum

Retourne la somme de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans l'étendue donnée.

Var

Retourne la variance de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans l'étendue donnée.

VarP

Retourne la variance de remplissage de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée dans le contexte de l'étendue donnée.

Calcul de valeurs d'exécution

Les fonctions intégrées suivantes calculent des valeurs d'exécution pour un jeu de données. RowNumber est semblable à RunningValue en ce sens qu'il retourne la valeur d'exécution d'un compte qui s'incrémente pour chaque ligne de l'étendue contenante. Le paramètre d'étendue de ces fonctions doit spécifier une étendue contenante, laquelle contrôle le moment où le compte redémarre.

Fonction

Description

RowNumber

Retourne un compte évolutif du nombre de lignes pour l'étendue spécifiée. La fonction RowNumber redémarre le comptage à 1, et non à 0.

RunningValue

Retourne un agrégat cumulé de toutes les valeurs numériques non Null spécifiées par l'expression, évaluée pour l'étendue donnée.

Récupération de nombres de lignes

La fonction intégrée suivante calcule le nombre de lignes d'une étendue donnée. Utilisez-la pour compter toutes les lignes, y compris celles contenant des valeurs Null.

Fonction

Description

CountRows

Retourne le nombre de lignes dans l'étendue spécifiée, y compris celles contenant des valeurs Null.

Extraction de valeurs dépendantes du tri

Les fonctions intégrées suivantes retournent la première valeur, la dernière valeur ou la valeur précédente dans une étendue donnée. Ces fonctions dépendent de l'ordre de tri des valeurs de données. Utilisez ces fonctions pour, par exemple, rechercher les première et dernière valeurs d'une page afin de créer un en-tête de page de type dictionnaire. Utilisez Previous pour comparer une valeur d'une ligne avec la valeur de la ligne précédente dans une étendue spécifique pour, par exemple, rechercher des valeurs d'une année sur l'autre en pourcentage dans une table.

Fonction

Description

First

Retourne la première valeur dans l'étendue donnée de l'expression spécifiée.

Last

Retourne la dernière valeur dans l'étendue donnée de l'expression spécifiée.

Previous

Retourne la valeur ou la valeur d'agrégation spécifiée pour l'instance précédente d'un élément dans l'étendue spécifiée.

Extraction d'agrégats de serveurs

La fonction intégrée suivante extrait des agrégats personnalisés du fournisseur de données. Par exemple, un type de la source de données Analysis Services vous permet d'extraire des agrégats calculés sur le serveur de source de données pour une utilisation dans un en-tête de groupe.

Fonction

Description

Aggregate

Retourne une agrégation personnalisée de l'expression spécifiée, telle que définie par le fournisseur de données.

Test de l'étendue

La fonction intégrée suivante teste le contexte actuel d'un élément de rapport pour voir s'il est membre d'une étendue spécifique.

Fonction

Description

InScope

Indique si l'instance en cours d'un élément se trouve dans l'étendue spécifiée.

Extraction du niveau récursif

La fonction intégrée suivante extrait le niveau actuel lorsqu'une hiérarchie récursive est traitée. Utilisez le résultat de cette fonction avec la propriété Padding dans une zone de texte pour contrôler le niveau de retrait d'une hiérarchie visuelle pour un groupe récursif. Pour plus d'informations, consultez Création de groupes de hiérarchies récursives (Reporting Services).

Fonction

Description

Level

Retourne le niveau de profondeur actuel d'une hiérarchie récursive.