Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Giada_Togliatti
Post Patron
Post Patron

La función Max no funciona

Hola

Tengo una base de datos como esta:

ObjetoHoraVentas
Sillas20160614
Sillas20170612
Sillas20180618
Mesa20160619
Mesa20170624

Mesa

20180623

El objeto es un campo de texto, el tiempo es un campo TEXTO, las ventas son un campo numérico.

Debería hacer una fórmula como esta:

CALCULATE (MAX(Ventas), time-max(time))

pero me da un error: una función max se ha utilizado en una expresión true/false que se utiliza como una expresión de filtro de tabla, esto no está permitido

¿cómo puedo hacerlo?

Gracias

6 REPLIES 6
AntrikshSharma
Community Champion
Community Champion

no se permite la agregación con la operación booleana, almacene la agregación en una variable.

Measure =
VAR MaxTime =
    MAX ( time )
RETURN
    CALCULATE ( MAX ( Sales ), Table[time] = MaxTime )

@AntrikshSharma Gracias por su respuesta,

la fórmula funciona, pero ahora tengo otro problema:

si dentro de calcular agredo otra condición tengo otro error:
la expresión contiene varias columnas, pero solo se puede utilizar una sola columna en una expresión true/false que se utiliza como expresión de filtro de tabla,
¿cómo puedo añadir esta segunda condición en el campo 4(texto)?

Measure =
VAR MaxTime =
    MAX ( time )
RETURN
    CALCULATE ( MAX ( Sales ), Table[time] = MaxTime  && field4= "F" )

, @amitchandak

En ese caso, utilice esta construcción.

Measure =
VAR MaxTime =
    MAX ( time )
RETURN
    CALCULATE ( MAX ( Sales ), Table[time] = MaxTime, field4 = "F" )

Puede utilizar varias operaciones booleanas en el mismo argumento de filtro de CALCUALTE cuando la operación está sobre la misma columna, por ejemplo, la siguiente funciona bien

Measure =
VAR MaxTime =
    MAX ( time )
RETURN
    CALCULATE ( MAX ( Sales ), Table[time] = MaxTime && Table[time] = "F" )

porque internamente Table[time] - MaxTime && Table[time - "F" se expande y se convierte en:

FILTER ( ALL ( Table[time] ), Table[time] = MaxTime && Table[time] = "F" )

Pero en el caso de varias columnas motor DAX no puede averiguar la manera de crear una combinación exisiting de tiempo y la otra columna, por lo que en ese caso se puede utilizar esto:

Measure =
VAR MaxTime =
    MAX ( time )
RETURN
    CALCULATE (
        MAX ( Sales ),
        FILTER (
            ALL ( Table[time], Table[field4] ),
            Table[time] = MaxTime
                && Table[field4] = "F"
        )
    )

pero estoy asumiendo field4 y el tiempo son las columnas de la misma tabla, otros sabios las separan en 2 filtros de CALCULATE como se muestra en el primer ejemplo

amitchandak
Super User
Super User

@Giada_Togliatti , Es necesario utilizar la cláusula de filtro

CALCULATE (MAX(Tabla[Ventas]),filter(Tabla, Tabla[tiempo]-max(Tabla[tiempo])))
CALCULATE (MAX(Tabla[Ventas]),filter(all(Table), Table[time]-max(Table[time])))

Usted puede tratar todos los elegidos en lugar de todos los

@amitchandak, he probado la fórmula con todos y todos los elegidos, pero ahora tengo otro error:

La operación de comparación dax no admite la comparación de valores de texto de tipo con valores de tipo number, considere la posibilidad de utilizar la función value o format para convertir uno de estos valores

¿Cómo puedo cambiar la fórmula para eliminar este error?

Creo que el problema es que el tiempo de campo está en formato de texto

gracias por su ayuda

@Giada_Togliatti , comparta su fórmula y error.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.