Skip to main content
Announcements
NEW Customer Portal: Initial launch will improve how you submit Support Cases. FIND OUT MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
maricarmen_acc
Partner - Contributor II
Partner - Contributor II

Acumular tabla simple por varios valores de dimensión

Hola,

Necesito hacer una tabla que acumule por añomes para cada valor de un producto, y que en la tabla sólo se muestre los valores del año actual desde enero hasta el mes anterior al actual pero que la acumulación la haga de todas las fechas que tengo, es decir, si yo tengo datos desde el añomes 201601, y tengo los productos A y B, necesito una tabla simple que sea:

añomes    Producto     acumulado

201701        A                valor que calculo para A y desde enero 2016 hasta enero 2017

201702        A                valor que calculo para A y desde enero 2016 hasta febrero 2017

201701        B                valor que calculo para B y desde enero 2016 hasta enero 2017

201702        B                valor que calculo para B y desde enero 2016 hasta febrero 2017

Estoy probando varias opciones con rangesum(above( y solo he conseguido que me salga sin el producto, en cuanto añado el producto a la tabla ya no va.

Alguna idea?

Graciass.

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Te adjunto un ejemplo...

View solution in original post

3 Replies
hector_munoz
Specialist
Specialist

Hola Mari Carmen,

Un truco que usamos a veces cuando tenemos que hacer cosas similares es hacer los precálculos en script:

Este es un ejemplo:

Tabla:

LOAD *,

  If(Producto = Previous(Producto),

     Ventas + Peek([Ventas Acumuladas], -1, 'Tabla'),

     Ventas)                                          AS [Ventas Acumuladas];

LOAD * INLINE [

Mes, Producto, Ventas

201611, A, 100

201612, A, 200

201701, A, 300

201702, A, 400

201611, B, 500

201612, B, 600

201701, B, 700

201702, B, 800

;

Pasos:

  1. En el script tenemos una tabla con toda la información necesaria para crear la tabla simple o pivotante en diseño; esto es fundamental.
  2. Esta tabla está ordenada por, en este caso, primero el producto y luego el mes en orden ascendente. Esto es fácil de hacer, con un paso previo, si no está de origen ordenada de esta forma.
  3. Hacemos un LOAD anidado para calcular la Venta Acumulada. Para acumular primero comprobamos que el registro que vamos a cargar es del mismo producto que el inmediatamente cargado. Si es así cogemos con el Peek() su valor de venta acumulada calculado y se lo sumamos a las ventas que tiene. Si no es así, y es de otro producto, las ventas acumuladas son iguales a las ventas ya que se trata del primer mes y no hay ventas previas.

En diseño basta con que te crees una dimensión calculada como la siguiente:

=If(Left(Mes, 4) = $(=Left(Max({1} Mes), 4)), Mes, Null())

, y que la expresión sea:

Sum([Ventas Acumuladas])

Espero que te haya servido!

Saludos,

H

hector_munoz
Specialist
Specialist

Te adjunto un ejemplo...

maricarmen_acc
Partner - Contributor II
Partner - Contributor II
Author

Muchísimas gracias Héctor, perfecto!!