Publicada septiembre 11, 2013

Funciones X: Parte 1 – SUMX() ES ALGO COMO SUMAPRODUCTO()

Power Pivot

Las funciones X como SUMX, MAXX, MINXX, AVERAGEX y sus herman@s son funciones que trabajan bajo iteraciones a nivel de filas.

Vamos a conocer una de las funciones X más utilizadas y como se parece a una de las funciones más utilizadas en el Excel tradicional

Ejemplo de SUMAPRODUCTO() – SUMPRODUCT()

image

SUMAPRODUCTO() o SUMPRODUCT() trabaja sumando el producto de 2 o mas rangos y de tener simplemente 1 rango solamente hace la suma de dicho rango.

Vamos a crear un ejemplo con la tabla que se muestra a mano derecha (2 columnas, precio por unidad y cantidad vendida) y vamos a multiplicar ambas columnasimage para obtener el total vendido y notamos que ambas columnas vienen con nomenclatura de tabla Tabla[Columna]. El resultado de dicha función nos da:

Resultado = 175.41

ahora vamos a ver como podríamos replicar/simular este comportamiento en Power Pivot

Podría hacer el producto de dos columnas y luego sumar dicha nueva columna (no recomendable)

image

como se muestra en la imagen de arriba, podría multiplicar las columnas de [Precio por Unidad] y [Cantidad] para obtener una nueva columna y luego simplemente sumar esa columna para obtener el resultado de 175.41. Pero esto no es recomendable, debido a que estamos creando una nueva columna calculada y por lo tanto estamos ocupando espacio en memoria RAM y, si esta fuese una tabla de 2 millones de filas, estaríamos agregando una cantidad significante de espacio a nuestro archivo de Power Pivot lo cual nunca es recomendable.

La mejor manera de hacerlo: creando una medida SUMX()

Es el mejor enfoque que se puede tener en cuanto a situaciones como esta debido a que:

  • No gastamos espacio en memoria
  • Todo se calcula en el tiempo de consulta

Lo cual se traduce en que se utiliza el CPU y no la memoria RAM. En términos de rendimiento este enfoque es el recomendado.

Para crear la medida utilizamos la ventana de configuración de medida:

image

creamos la medida siguiendo algunos parámetros muy sencillos. Veamos y analicemos la fórmula escrita arriba:

=SUMX( Tabla1, Tabla1[Cantidad] * Tabla1[Precio por Unidad] )

Tabla1: es la tabla donde se encuentran las filas a tomar en cuenta para la calculación

Tabla1[Cantidad] y Tabla1[Precio por Unidad]: son las columnas de la Tabla1 que se están multiplicando o creando un producto para una nueva columna que es la que se va a tomar en cuenta para la SUMA que se hace dentro de las iteraciones de SUMX.

En otras palabras, la columna creada en memoria que es el producto de las columnas [Cantidad] y [Precio por Unidad] es la columna que se va a sumar.

En paso por paso, lo que hace SUMX es multiplicar fila por fila dichas columnas y luego al final hace la agregación del resultado de dicho nuevo producto/columna. Algo parecido al SUMAPRODUCTO(), no?.

Y luego vemos lo siguiente:

image

Durante las próximas semanas voy a seguir explicando y enfocándome en las X pues son algunas de las funciones mas interesantes dentro de Power Pivot.

Recuerda conocer más sobre la escuela online de Power Pivot que comienza a finales de Octubre:

Power Pivot
Subscribe
Notify of
guest
3 Comentario
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
edy s. martinez

tengo un problema ya que quiero cambiar el total general de una tabla dinámica con powerpivot, el problema radica que yo cree el campo calculado y me funciona de maravilla pero cuando veo el total general me aplica la misma formula del campo calculado pero yo no quiero que aplique la misma formula al total general yo quiero que me sume cada fila de la columna de esa tabla.
tiene alguna idea de como hacerlo?????
te lo agradecería mucho.

Miguel Escobar

Hola Edy,

Realmente con los datos que me has brindado se me hace un poco difícil poder ayudarte.

Lo que sucede con DAX es que cada celda que ves en la tabla dinámica se calcula de manera individual, por lo que la suma de las celdas anteriores no es algo que realmente entienda DAX. Es necesario crear el contexto de filtro correcto para ello y esto requiero un poco más de análisis de cómo luce tu tabla dinámica y tu modelo de datos.

Fernando

Estupenda guía!!
Estoy intentando multiplicar dos columnas en powerpivot sumx(Tabla1 [cantidad]*Tabla2 [unidaddemedida]) como se nota la estructura de mi datos NO se encuentra en la misma tabla cada columna estan en tablas distintas y no estoy dando con la solución realice la relación entre sus respectivos id pero posiblemente estee aplicando mal el concepto alguna sugerencia o idea??