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.
Hola
Tengo una base de datos como esta:
Objeto | Hora | Ventas |
Sillas | 201606 | 14 |
Sillas | 201706 | 12 |
Sillas | 201806 | 18 |
Mesa | 201606 | 19 |
Mesa | 201706 | 24 |
Mesa
| 201806 | 23 |
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
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" )
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
@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.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |