Obtención del valor de un campo correspondiente a valores de otros campos

En este escenario partimos de un modelo de datos que vamos a representar con una única tabla que contiene información de ventas de ciertos artículos en varias tiendas:

Tabla de datos

El objetivo es extraer el valor de una columna -por ejemplo el artículo o la tienda- correspondiente al valor máximo (o mínimo, etc.) de otra -por ejemplo de las ventas-.

Leemos, por lo tanto, la tabla desde Power BI y concretamos el valor a extraer. Supongamos que deseamos extraer el artículo para el que el campo Ventas toma el valor máximo.

Este valor máximo es fácilmente extraíble con la función MAX:

Valor máximo = MAX(data[Ventas])
Valor máximo

La obtención del producto correspondiente podemos lograrla con la función LOOKUPVALUE (con los matices apropiados en el caso de que no haya ninguna coincidencia o haya más de una):

Producto ventas máximas = 
    VAR
        ValorMaximo = MAX(data[Ventas])
    RETURN
        LOOKUPVALUE(
            data[Artículo];
            data[Ventas]; ValorMaximo
        )

Producto correspondiente a las ventas máximas

En el caso de que pueda existir más de una solución, deberemos agregar el parámetro adecuado a la función LOOKUPVALUE. Por ejemplo, en nuestra tabla de datos tenemos dos valores mínimos:

Producto ventas mínimas = 
    VAR
        ValorMinimo = MIN(data[Ventas])
    RETURN
        LOOKUPVALUE(
            data[Artículo];
            data[Ventas]; ValorMinimo;
            "Múltiples soluciones"
        )

Producto correspondiente a las ventas mínimas

Si se desease encontrar el valor que cumpla más de una condición, deberemos tener cuidado en asegurar que existe una solución (y solo una) -en cualquier otro caso la función devolverá el valor alternativo o un error si éste no existe. Por ejemplo, podríamos pensar que con el siguiente código estamos extrayendo el producto con las menores ventas para la tienda C:

Producto ventas mínimas Tienda C = 
    VAR
        ValorMinimo = MIN(data[Ventas])
    RETURN
        LOOKUPVALUE(
            data[Artículo];
            data[Tienda]; "C";
            data[Ventas]; ValorMinimo;
            "No hay una única solución"
        )

Sin embargo, la variable ValorMinimo va a tomar el valor 6 (pues se calcula como el valor mínimo para la columna Ventas) y no hay ningún artículo que cumpla que la tienda es C y las ventas sean 6 -de ahí que la función devuelva el valor alternativo-. En un caso así, si no es posible asegurar que va a existir un valor, podemos filtrar la tabla antes de realizar la búsqueda.

Producto de ventas mínimas para la tienda C
Submitted by admin on Wed, 02/12/2020 - 15:58