DAX: fórmula para obtener el valor mínimo de la medida

Un usuario Pregunto ✅

roex

¡Hola equipo!

Me gustaría solicitar su ayuda con la fórmula para obtener el valor mínimo de la medida.

Como resultado final, me gustaría calcular la diferencia del precio mínimo de orden de compra de todas las empresas.

En Excel es fácil y se parece a:

Enlace de pantalla de Excel

Capturar.JPG

Sin embargo, en PowerBI me limité a obtener ese valor mínimo de 0,8333 para todas las empresas.

Mis resultados por error y ensayo son los siguientes y nada de ellos es correcto.

La visualización tiene 3 Slices, que se deben tener en cuenta: Período, Bandera de reutilización y SKU genérico

Enlace de pantalla de PowerBI

Captura2.JPG

Precio de orden de compra =

DIVIDIR(

SUMA(‘Datos_17_21_tabla'[PO Amount]),

SUMA(‘Datos_17_21_tabla'[PO Qty])

)

Mis ensayos con valor mínimo:

mín1 =

minx(VALORES(Data_17_21_table),[PO Price])

mín2 =

MARTA(

‘Datos_17_21_tabla’,

CALCULAR([PO Price])

)

min3 =

MARTA(

KEEPFILTERS(VALUES(‘Data_17_21_table'[FinYear])),

CALCULAR([PO Price])

)

Mín4 =

MARTA(

KEEPFILTERS(VALUES(‘Data_17_21_table'[BU])),

CALCULAR([PO Price])

)

Min5 = minX(Data_17_21_table, DIVIDE(

SUMA(‘Datos_17_21_tabla'[PO Amount]),

SUMA(‘Datos_17_21_tabla'[PO Qty])

))

Min6 = CALCULAR(minx(VALORES(Data_17_21_table),[PO Price]), ALLEXCEPT(Data_17_21_table, Data_17_21_table[Reuse Flag], Datos_17_21_tabla[Period], Datos_17_21_tabla[Generic Sku]))

Min7 = CALCULAR(minx(VALORES(Data_17_21_table),[PO Price]), TODOS (Data_17_21_table))

Min8 = CALCULAR(minx(VALORES(Data_17_21_table),[PO Price]), TODOS LOS FILTROS CRUZADOS (Data_17_21_table))

Min9 =

CALCULAR(MINX(VALORES(Data_17_21_table),[PO Price]), ALLEXCEPT (Data_17_21_table, Data_17_21_table[Generic Sku], Datos_17_21_tabla[Period], Datos_17_21_tabla[Reuse Flag]))

¿Podría sugerir otro enfoque?

¡Gracias de antemano!

roex

daxer-todopoderoso

En respuesta a roex

[Diff from MIN] =
// ISINSCOPE guarantees that the visual
// you use the measure in uses T[Company]
// for grouping. Please DO NOT use this
// measure in other measures, especially
// those that include any explicit iterator.
// THIS IS A TOP-LEVEL MEASURE.
IF( ISINSCOPE( T[Company] ),
    var vMinPOPrice = 
        MINX(
            ALLSELECTED( T[Company] ),
            [PO Price]
        )
    var vResult =
        // This first DIVIDE makes sure BLANK
        // is returned when vMinPOPrice is 0.
        DIVIDE( vMinPOPrice, vMinPOPrice )
        * ( DIVIDE( [PO Price], vMinPOPrice ) - 1 )
    RETURN
        vResult
)

Anónimo

Hola @rhoex,

Creo que ha definido «M_Final_1 = DIVIDE ([PO Price],CALCULAR(MIN(Data_17_21_table[PO Price]),TODOS(Tabla_17_21_datos)),0)-1″
[PO Price]
como medida ¿Puede confirmar que ha utilizado el siguiente patrón?

M_Final_1 {Nombre de la medida requerida}= DIVIDE({Medida de la suma del precio de la orden de compra (o cualquier otra agregación que se ajuste a sus requisitos},CALCULATE(MIN({Especifique la columna de precio de la orden de compra aquí}),ALL(Data_17_21_table)),0)-1

roex

Me olvidé de mencionar y tal vez esto es importante. La pantalla de PowerBI ya muestra visualización en Matrix. Esta no es una tabla de Data. En Data_17_21_table tengo muchas más transacciones y en Matrix estoy resumiendo esto por empresa

daxer-todopoderoso

En respuesta a roex

[Diff from MIN] =
// ISINSCOPE guarantees that the visual
// you use the measure in uses T[Company]
// for grouping. Please DO NOT use this
// measure in other measures, especially
// those that include any explicit iterator.
// THIS IS A TOP-LEVEL MEASURE.
IF( ISINSCOPE( T[Company] ),
    var vMinPOPrice = 
        MINX(
            ALLSELECTED( T[Company] ),
            [PO Price]
        )
    var vResult =
        // This first DIVIDE makes sure BLANK
        // is returned when vMinPOPrice is 0.
        DIVIDE( vMinPOPrice, vMinPOPrice )
        * ( DIVIDE( [PO Price], vMinPOPrice ) - 1 )
    RETURN
        vResult
)

roex

En respuesta a daxer-todopoderoso

¡Gracias @daxer-almighty!

Está funcionando según lo previsto. 👍

roex

Anónimo

Hola ,

Reemplace la columna con medidas. También use allexcept para eliminar el efecto de todos los filtros excepto los que desea aplicar (debe escribir las tres columnas de filtro en todos excepto).

M_Final = DIVIDIR([M_SumProfit],CALCULAR(MIN(Hoja1[Profit]),TODO(Hoja1)),0)-1

roex

En respuesta a Anónimo

Gracias @Anonimo

¿Quiso decir algo como esto?

M_Final_1 = DIVIDIR([PO Price],CALCULAR(MIN(Data_17_21_table[PO Price]),TODOS(Tabla_17_21_datos)),0)-1

Tengo información: la columna ‘Precio de la orden de compra’ en la tabla ‘Data_17_21_table’ no se puede encontrar o no se puede usar en esta expresión.

y con allexcept, el mismo error

M_Final_2 = DIVIDIR([PO Price],CALCULAR(MIN(Data_17_21_table[PO Price])ALLEXCEPT(Data_17_21_table, Data_17_21_table[Generic Sku], Datos_17_21_tabla[Period], Datos_17_21_tabla[Reuse Flag])),0)-1

Así que entiendo por medida que debo usar la función MINX, y:

M_Final_3 = DIVIDIR([PO Price],CALCULAR(MINX(VALORES(Data_17_21_table),[PO Price]), ALLEXCEPT (Data_17_21_table, Data_17_21_table[Generic Sku], Datos_17_21_tabla[Period], Datos_17_21_tabla[Reuse Flag])),0)-1

Pero esto devuelve valores no como yo esperaría. En realidad, es un enfoque similar al de Min9 anterior, por lo que no se toma un valor mínimo adecuado 😞

Captura3.JPG

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *