Cálculo del mayor número de unidades vendidas conjuntamente para cada producto

En este escenario partimos de un listado de productos:

Listado de productos

...y de un listado de ventas de estos productos, incluyendo el número de unidades de cada uno involucrados en las ventas:

Listado de ventas

Como puede apreciarse, esta información está, en este caso, almacenada en ficheros Excel. Una vez importadas ambas tablas con los nombres de "Productos" y "Ventas" respectivamente, y una vez confirmado que se crea la relación entre ambas tomando el campo "Id Producto" como clave, querríamos añadir a la tabla de productos, una columna calculada con el valor máximo de unidades involucradas en las ventas de cada producto. Así, por ejemplo, en la imagen anterior vemos que el producto 3 ha sido vendido dos veces, la primera involucrando 6 unidades, y la segunda involucrando 11, por lo que querríamos obtener el número 11 como valor máximo encontrado.

Para esto vamos a recorrer la tabla de productos buscando, para cada uno de ellos, el valor máximo en cuestión. En pseudo-código sería lo siguiente:

Para cada uno de los productos:

   = Obtén la lista de ventas de dicho producto y quédate con el valor máximo del campo "Unidades"

Si conseguimos obtener la lista de ventas de cada producto, la función que nos permitiría recorrer dicha lista y extraer un valor máximo es MAXX. Esta función permite especificar una tabla (la de ventas de cada producto en nuestro caso) y una expresión que se evaluará para todas las filas de la misma (simplemente el número de unidades involucradas en nuestro ejemplo), devolviéndose el valor máximo encontrado. Ahora, para cada fila recorrida el pseudo-código sería el siguiente:

= MAXX(
   Lista de ventas del producto considerado en la fila; // Obtiene el valor máximo de esta tabla...
   Unidades // Según este criterio
)

La obtención de la lista de ventas asociada a cada producto también es sencilla: estamos recorriendo la tabla de productos, por lo que, para cada uno de ellos, el campo "Id Producto" nos permitiría filtrar la tabla de ventas adecuadamente usando la función FILTER. En nuestro caso, la expresión a usar sería la siguiente:

FILTER(Ventas; Ventas[Id Producto] = Productos[Id Producto])

Estaríamos filtrando la tabla "Ventas" para incluir solo las ventas asociadas al producto "Id Producto".

El código final sería el siguiente:

Max Unidades Vendidas = 
    MAXX(
        FILTER(Ventas; Ventas[Id Producto] = Productos[Id Producto]);
        Ventas[Unidades]
    )

Y el resultado:

Valores máximos obtenidos

 

DAX functions involved
Submitted by admin on Tue, 06/25/2019 - 20:09