Totales en Jpivot

JPivot cuando muestra el total, por defecto, lo hace teniendo en cuenta todos los valores existentes. Si uno filtra algunos registros en particular, el total no se condice con lo que se filtra ya que muestra todo. Para poder lograr tener el total de lo que se está filtrando hay que definir un fórmula en el MDX de la vista en cuestión. A continuación se muestra un ejemplo realizado sobre el cubo de Alumnos de la solución de Pentaho (SIU-DW-Pentaho-v1.0.0beta-20110531) que se entregó con la máquina virtual en las Jornadas de trabajo en Pentaho del 02/06/2011.
Los pasos a seguir son abrir una nueva vista de análisis del Esquema:“SIU-Guarani”, cubo: “Alumnos” y modificar el código MDX por lo siguiente:

======================================================================================
WITH

SET [MisCarreras] as ‘{[Carrera].[CONTADOR PUBLICO NACIONAL], [Carrera].[PERIODISMO], [Carrera].[PROFESORADO EN HISTORIA], [Carrera].[VOCACIONAL]}’

MEMBER [Carrera].[Total Carreras] AS
‘SUM({[MisCarreras]})’

SELECT NON EMPTY {[Measures].[Nuevos Inscriptos], [Measures].[Reinscriptos], [Measures].[Egresados], [Measures].[Alumnos (NI+RI)]} ON COLUMNS,
NON EMPTY Union({[MisCarreras]},[Carrera].[Total Carreras]) ON ROWS
FROM [Alumnos]

Lo que hace este código es generar un set (WITH SET) de carreras, con las que quiero filtrar, y luego genera un miembro (WITH MEMBER) en la jerarquía de carreras que en este caso se llama “Total Carreras” y que hace la suma de las mismas. Acá se puede utilizar cualquier otra fórmula permitida en MDX. Finalmente se hace la consulta y para que este nuevo total aparezca en la grilla, hay que incluirlo dentro del UNION. Si se quiere que aparezca el total arriba de todas las filas hay que cambiar el orden del UNION por Union([Carrera].[Total Carreras],{[MisCarreras]}).
Para agregar o quitar carreras solamente hay que incluirlas o borrarlas de la definición del SET.

En la imagen adjunta está el resultado que arroja el MDX.