convertir la fórmula de Excel a dax (averageifs)

Un usuario Pregunto ✅

natabird3

Hola,

Estoy tratando de convertir la siguiente secuencia de cálculo de un archivo de Excel a power bi, pero no puedo hacerlo con la última fórmula avergeifs ya que no existe en power bi por alguna razón. Entonces tengo una columna que necesito clasificar (los valores variarán según el ID). Hago eso usando la nueva columna calculada:

Valor de rango = RANK.EQ (Datos[Value],Datos[Value], DESC)
Luego, necesito redondear el recuento de los números, ya que varía según el ID (necesito obtener los valores del 2% superior, el 5% superior, el 10% superior, el 20% superior, el 25% superior y el 50% superior solo para cada ID ). Creo que puedo hacerlo así para el 2% superior:

2% superior = REDONDEAR (RECUENTO (Datos[Rank Value]) * 0.02,0)
Y finalmente para obtener el resultado deseado:3.JPG1.JPG2.JPGNecesito hacer los promedios, pero no estoy seguro de cómo hacerlo en power bi. Espero que alguien pueda ayudar. Gracias por adelantado.

Hola @ natabird3,

Primero creo una columna de cálculo para clasificar el valor, también puede otra función de clasificación,

Rank = RANKX('Table2','Table2'[Value],,DESC)

convertir-excel-formula-a-dax-averageifs-1.png

Luego, en otra tabla, crea una columna numérica

Number = ROUND(COUNTROWS(Table2) * [TOP N],0)

convertir-fórmula-de-excel-a-dax-averageifs-2.png

Entonces podemos crear una medida para calcular el resultado.

Result =
FORMAT (
    AVERAGEX (
        FILTER ( ALL ( Table2 ), [Rank] <= SELECTEDVALUE ( 'Calculate'[Number] ) ),
        [Value]
    ),
    "Percent"
)

convertir-excel-formula-a-dax-averageifs-3.png

O simplemente podemos usar una columna de cálculo para obtener el mismo resultado

ResultColumn =
FORMAT (
    AVERAGEX ( FILTER ( Table2, [Rank] <= [Number] ), [Value] ),
    "Percent"
)

convertir-excel-formula-a-dax-averageifs-4.png

Por cierto, pbix adjunto.

Atentamente,

Equipo de soporte de la comunidad _ DongLi
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más

En respuesta a natabird3

Hola @ natabird3,

La medida es dinámica, pero las columnas calculadas se calculan durante el procesamiento de la base de datos y luego se almacenan en el modelo. Entonces, en su escenario, solo podemos crear una medida utilizando el siguiente DAX para cumplir con sus requisitos:

Result = 
VAR n =
    ROUND ( COUNTROWS ( 'Table' ) * SUM ( 'Calculate'[TOP N] ), 0 )
VAR t =
   ADDCOLUMNS ( 'Table', "rank", RANKX ( 'Table', [Value],, DESC ) )
RETURN
    FORMAT ( AVERAGEX ( FILTER ( t, [rank] <= n ), [Value] ), "Percent" )

convertir-excel-formula-a-dax-averageifs-1.pngconvertir-fórmula-de-excel-a-dax-averageifs-2.pngconvertir-excel-formula-a-dax-averageifs-3.png

Por cierto, pbix adjunto.

Atentamente,

Equipo de soporte de la comunidad _ DongLi

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más

Hola @ natabird3,

Primero creo una columna de cálculo para clasificar el valor, también puede otra función de clasificación,

Rank = RANKX('Table2','Table2'[Value],,DESC)

convertir-excel-formula-a-dax-averageifs-1.png

Luego, en otra tabla, crea una columna numérica

Number = ROUND(COUNTROWS(Table2) * [TOP N],0)

convertir-fórmula-de-excel-a-dax-averageifs-2.png

Luego podemos crear una medida para calcular el resultado.

Result =
FORMAT (
    AVERAGEX (
        FILTER ( ALL ( Table2 ), [Rank] <= SELECTEDVALUE ( 'Calculate'[Number] ) ),
        [Value]
    ),
    "Percent"
)

convertir-excel-formula-a-dax-averageifs-3.png

O simplemente podemos usar una columna de cálculo para obtener el mismo resultado

ResultColumn =
FORMAT (
    AVERAGEX ( FILTER ( Table2, [Rank] <= [Number] ), [Value] ),
    "Percent"
)

convertir-excel-formula-a-dax-averageifs-4.png

Por cierto, pbix adjunto.

Atentamente,

Equipo de soporte de la comunidad _ DongLi
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más

natabird3

En respuesta a v-lid-msft

Hola @ v-lid-msft ,

Gracias por la solución propuesta, pensé que funcionaba cuando intenté implementarla, pero ahora, cuando filtro, no puedo obtener el resultado deseado. Creo que debido a cómo configuramos la fórmula numérica, cuenta las filas asumiendo que cada fila es una ID diferente, sin embargo, tenemos algunas ID con múltiples entradas, por lo que si filtro por ID, no obtengo el resultado deseado ya que nada cambia. Por ejemplo, podemos tener la siguiente situación, en este caso obtengo el total de ambas identificaciones, de todos modos, ¿solo obtengo por identificación? Házmelo saber, gracias de nuevo por tu ayuda.

s.JPG

En respuesta a natabird3

Hola @ natabird3,

La medida es dinámica, pero las columnas calculadas se calculan durante el procesamiento de la base de datos y luego se almacenan en el modelo. Entonces, en su escenario, solo podemos crear una medida utilizando el siguiente DAX para cumplir con sus requisitos:

Result = 
VAR n =
    ROUND ( COUNTROWS ( 'Table' ) * SUM ( 'Calculate'[TOP N] ), 0 )
VAR t =
   ADDCOLUMNS ( 'Table', "rank", RANKX ( 'Table', [Value],, DESC ) )
RETURN
    FORMAT ( AVERAGEX ( FILTER ( t, [rank] <= n ), [Value] ), "Percent" )

convertir-excel-formula-a-dax-averageifs-1.pngconvertir-fórmula-de-excel-a-dax-averageifs-2.pngconvertir-excel-formula-a-dax-averageifs-3.png

Por cierto, pbix adjunto.

Atentamente,

Equipo de soporte de la comunidad _ DongLi

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más

natabird3

En respuesta a v-lid-msft

Funciona perfecto, gracias por la ayuda.

Deja un comentario

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