Usar las funciones de informe y de agregado integradas en expresiones (Reporting Services)

Reporting Services proporciona funciones integradas para su uso en expresiones que permiten calcular datos agregados en conjuntos de datos, regiones de datos y grupos, y recuperar otros valores de los datos, como el primer o el último valor de una página de informe. La función de agregado predeterminada para los campos numéricos es SUM. En el cuadro de diálogo Expresión, seleccione la categoría Agregado en Funciones comunes para elegir otra función.

Como los datos del informe y el diseño del informe se combinan en tiempo de ejecución, el procesador de informes determina el ámbito predeterminado para cada referencia a función de una expresión. El ámbito predeterminado puede ser un conjunto de datos, una región de datos, un grupo de Tablix (primario, secundario, adyacente o recursivo), la intersección de una fila de Tablix y un grupo de columnas, o un grupo de gráfico (serie, categoría, valor). Para la mayoría de las funciones, también puede especificar un ámbito distinto del predeterminado en la llamada a la función. Para determinar los ámbitos válidos para una función, vea el tema de referencia de la función en cuestión. Para obtener ejemplos, vea Calcular totales y otros agregados (Reporting Services).

La tabla siguiente presenta una lista de las categorías de funciones integradas admitidas por Reporting Services:

  • Calcular agregados

  • Calcular valores actuales

  • Recuperar recuentos de filas

  • Recuperar valores dependientes de la ordenación

  • Recuperar agregados de servidor

  • Recuperar nivel recursivo

  • Comprobar el ámbito

Descripción del ámbito

En Reporting Services, el término ámbito puede especificar conceptos diferentes dependiendo del contexto. La lista siguiente describe los distintos conceptos:

  • Ámbito para los elementos de informe en el procesamiento de informes. Cuando los datos del informe y el diseño del informe se combinan en tiempo de ejecución, se procesa cada elemento de informe. Una región de datos Tablix se procesa desde el exterior en conjuntos de datos cada vez más restrictivos a medida que se procesan los grupos de filas y de columnas de Tablix. En este sentido, una región de datos contiene un grupo. Un grupo primario contiene un grupo secundario y los demás grupos del mismo nivel. Por ejemplo, un elemento de alternancia para un grupo debe ser un cuadro de texto en el mismo ámbito de grupo o en cualquier ámbito de grupo contenedor. Para obtener más información, vea Descripción de los ámbitos contenedores más adelante en este tema.

  • Ámbito para las funciones de agregado. El procesador de informes evalúa cada expresión de agregado en un ámbito con nombre o en el ámbito predeterminado, tal y como se describe en la lista siguiente.

    • Un ámbito con nombre puede ser el nombre de un conjunto de datos, una región de datos o un grupo.

    • El ámbito predeterminado depende de la propiedad de elemento de informe que está evaluando el procesador de informes. Por ejemplo, el ámbito predeterminado para una celda de Tablix de una región de datos con grupos de filas y de columnas es el grupo de filas y el grupo de columnas más interior a los que pertenece la celda. El ámbito predeterminado para una celda de una tabla sin grupos es el grupo de detalles. En la superficie de diseño, una región de datos de Tablix proporciona elementos visuales que pueden usarse para determinar los ámbitos disponibles de una celda. Por encima y al lado de la región de datos Tablix aparecen barras de grupo para mostrar qué filas o columnas pertenecen a un grupo. Cuando se selecciona una celda, los indicadores de grupo muestran los grupos activos más internos a los que pertenece la celda. Para obtener más información, vea Trabajar con regiones de datos Tablix.

      Para un cuadro de texto en la superficie de diseño, no hay ningún ámbito predeterminado. Debe especificar el nombre del conjunto de datos que debe usarse; por ejemplo, =First(Fields!Sales.Value,"Dataset1").

      Cuando llame a una función integrada y especifique un ámbito con nombre, compruebe la referencia de la función para determinar qué ámbitos son válidos. Por ejemplo, para Sum, puede especificar el ámbito predeterminado o un ámbito contenedor.

Descripción de los ámbitos contenedores

Los ámbitos siguientes enumeran el orden contenedor, desde el más externo (el más alto) a más interno (el más bajo) y describen los datos que representan:

  • Conjunto de datos de informe: especifica el conjunto de datos de informe vinculado a la región de datos o a un elemento de informe del cuerpo del informe. Los datos utilizados para la agregación proceden del conjunto de datos de informe después de aplicar las expresiones de filtro al conjunto de datos.

  • Región de datos: especifica los datos de la región de datos después de aplicar las expresiones de filtro y de ordenación a la región de datos. Los filtros de grupo no se utilizan al calcular agregados para las regiones de datos.

  • Grupos de fila y de columna: especifican los datos una vez aplicados los filtros de grupo y las expresiones de grupo al grupo primario y a los grupos secundarios. A efectos de identificar la inclusión en el ámbito, cada grupo primario contiene sus grupos secundarios.

  • Regiones de datos anidadas: especifica los datos para la región de datos anidada en el contexto de la celda a la que se han agregado, después de aplicar las expresiones de filtro y de ordenación a la región de datos anidada.

  • Grupos de filas y de columnas para las regiones de datos anidadas: especifican los datos una vez aplicadas las expresiones de grupo y los filtros de grupo a la región de datos anidada.

Cuando una función integrada indica que debe especificar el ámbito actual o ámbito contenedor, no puede especificar ningún ámbito inferior ni del mismo nivel que el ámbito actual en el orden de inclusión. Por ejemplo, desde una fila de un grupo de filas que tenga un grupo secundario, no puede especificar el nombre del grupo secundario como ámbito; tampoco puede especificar un grupo de filas del mismo nivel. Debe usar el ámbito predeterminado o especificar un ámbito superior en el orden de inclusión.

[!NOTA]

No puede agregar valores de un grupo de filas y un grupo de columnas en una misma expresión. No se permite escribir una expresión que incluya un agregado con un ámbito de grupo de filas y otro agregado con un ámbito de grupo de columnas.

Expresiones de filtro

Las expresiones de filtro de los conjuntos de datos y las regiones de datos no pueden contener funciones de agregado. Los filtros de grupo se omiten al calcular agregados para las regiones de datos.

Calcular agregados

Las funciones integradas siguientes calculan valores de resumen para un conjunto de datos numéricos no NULL del ámbito predeterminado o el ámbito con nombre. Todos los datos utilizados para un cálculo agregado deben ser del mismo tipo de datos. Si desea convertir datos de varios tipos de datos numéricos al mismo tipo de datos, use funciones de conversión como CInt, CDbl o CDec. Para obtener más información, vea Funciones de conversión de tipos.

Si desea usar estas funciones para calcular resúmenes para un grupo de jerarquía recursiva, debe especificar el parámetro Recursive.

Función

Descripción

Avg

Devuelve el promedio de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Count

Devuelve un recuento de los valores no NULL especificados por la expresión, que se evalúa en el contexto del ámbito indicado.

CountDistinct

Devuelve un recuento de todos los valores no NULL distintos especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Max

Devuelve el valor máximo de todos los valores numéricos no NULL especificados por la expresión, en el contexto del ámbito especificado. Puede usarla para especificar un valor máximo para el eje del gráfico para controlar la escala.

Min

Devuelve el valor mínimo de todos los valores numéricos no NULL especificados por la expresión, en el contexto del ámbito especificado. Puede usarla para especificar un valor mínimo para el eje del gráfico para controlar la escala.

StDev

Devuelve la desviación estándar de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

StDevP

Devuelve la desviación estándar de población de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Sum

Devuelve la suma de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Var

Devuelve la varianza de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

VarP

Devuelve la varianza de población de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Calcular valores actuales

Las funciones integradas siguientes calculan valores actuales para un conjunto de datos. RowNumber coincide con RunningValue en que devuelve el valor actual de un recuento que se incrementa para cada fila dentro del ámbito contenedor. El parámetro de ámbito para estas funciones debe especificar un ámbito contenedor, que controla cuándo se reinicia el recuento.

Función

Descripción

RowNumber

Devuelve un recuento actualizado del número de filas para el ámbito especificado. La función RowNumber reinicia el recuento en 1, no en 0.

RunningValue

Devuelve un agregado actualizado de todos los valores numéricos no NULL especificados por la expresión, que se evalúa en el contexto del ámbito especificado.

Recuperar recuentos de filas

La función integrada siguiente calcula el número de filas existentes en el ámbito especificado. Use esta función para contar todas las filas, incluso las filas con valores NULL.

Función

Descripción

CountRows

Devuelve el número de filas del ámbito especificado, incluyendo las filas con valores NULL.

Recuperar valores dependientes de la ordenación

Las funciones integradas siguientes devuelven el primer valor, el último valor o el valor anterior dentro de un ámbito determinado. Estas funciones dependen del criterio de ordenación de los valores de datos. Por ejemplo, use estas funciones para encontrar el primer y el último valor de una página para crear un encabezado de página de estilo diccionario. Use Previous para comparar un valor de una fila con el valor de la fila anterior dentro de un ámbito específico, como por ejemplo, para encontrar los valores de los porcentajes de año a año en una tabla.

Función

Descripción

First

Devuelve el primer valor de la expresión especificada en el ámbito especificado.

Last

Devuelve el último valor de la expresión especificada en el ámbito especificado.

Previous

Devuelve el valor o el valor agregado especificado para la instancia anterior de un elemento dentro del ámbito especificado.

Recuperar agregados de servidor

La función integrada siguiente recupera agregados personalizados del proveedor de datos. Por ejemplo, usando un tipo de origen de datos de Analysis Services, puede recuperar agregados calculados en el servidor del origen de datos para su uso en un encabezado de grupo.

Función

Descripción

Aggregate

Devuelve un agregado personalizado de la expresión especificada, según esté definido en el proveedor de datos.

Comprobar el ámbito

La función integrada siguiente comprueba el contexto actual de un elemento de informe para ver si es un miembro de un ámbito determinado.

Función

Descripción

InScope

Indica si la instancia actual de un elemento se halla en el ámbito especificado.

Recuperar nivel recursivo

La función integrada siguiente recupera el nivel actual cuando se procesa una jerarquía recursiva. Use el resultado de esta función con la propiedad Padding de un cuadro de texto para controlar el nivel de sangría de una jerarquía visual para un grupo recursivo. Para obtener más información, vea Crear grupos de jerarquía recursiva (Reporting Services).

Función

Descripción

Level

Devuelve el nivel actual de profundidad de una jerarquía recursiva.