Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola a todos
Estoy atascado en un problema de DAX en particular y con la esperanza de obtener algún consejo aquí.
Tengo una tabla de datos con los siguientes campos: Región, Ubicación, Fecha, Categoría, Valor y me gustaría encontrar la ubicación de un valor máximo (o mínimo) determinado en función de las segmentaciones de datos presentes en un informe que se puede aplicar a Región, Fecha y Categoría. He elaborado una medida para encontrar el valor máximo ('Valor máximo') así que ahora el desafío es usar LOOKUPVALUE para encontrar la ubicación correspondiente para ese valor.
Actualmente estoy usando lo siguiente:
Ubicación del valor máximo ?
LOOKUPVALUE(
'Tabla'[Ubicación],
'Tabla'[Valor],
'Tabla'[Valor máximo],
"Múltiples ubicaciones"
)
Según la captura de pantalla siguiente, parece hacer el trabajo, encontrando correctamente que la ubicación del valor máximo es Londres:
Sin embargo, el código busca varias ubicaciones cuando solo se selecciona la categoría B; la ubicación debe ser Londres (de nuevo), pero la fórmula DAX actual está mirando TODOS los datos (es decir, no está teniendo en cuenta la segmentación activa en la categoría) y, por lo tanto, encuentra varias ubicaciones porque Birmingham también tiene un valor de 33 (aunque en una categoría diferente).
¿Cómo debo adaptar la 2a expresión en mi medida DAX a continuación?
Ubicación del valor máximo ?
LOOKUPVALUE(
'Tabla'[Ubicación],
'Tabla'[Valor],
'Tabla'[Valor máximo],
"Múltiples ubicaciones"
)
Muchas gracias, Bastiaan
Solved! Go to Solution.
Hola @BastiaanBrak ,
La función lookupvalue se filtra a valor cero o a un error cuando hay más de un valor distinto.
Puede consultar este artículo.
Y podemos usar las siguientes medidas para satisfacer sus necesidades.
1. Cree una medida de valor máximo.
Max_value = MAX('Table'[value])
2. A continuación, cree una medida Ubicación del valor máximo.
Location of Max Value =
var max_value = CALCULATE([Max_value],ALLSELECTED())
return
CALCULATE(MAX('Table'[Location]),FILTER('Table','Table'[value]=max_value))
El resultado como este,
Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto basado en la tabla que ha compartido?
BTW, pbix como adjunto.
Saludos
Equipo de apoyo a la comunidad _ zhenbw
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola
Comparte el enlace desde donde puedo descargar tu archivo PBI.
Hola @Ashish_Mathur, gracias por su respuesta, la solución ofrecida por @v-zhenbw-msft funcionó bien para mí, pero si todavía está interesado puedo subir el libro de trabajo de prueba. Sólo avísame.
Mis mejores deseos, Bastiaan
Hola @BastiaanBrak ,
La función lookupvalue se filtra a valor cero o a un error cuando hay más de un valor distinto.
Puede consultar este artículo.
Y podemos usar las siguientes medidas para satisfacer sus necesidades.
1. Cree una medida de valor máximo.
Max_value = MAX('Table'[value])
2. A continuación, cree una medida Ubicación del valor máximo.
Location of Max Value =
var max_value = CALCULATE([Max_value],ALLSELECTED())
return
CALCULATE(MAX('Table'[Location]),FILTER('Table','Table'[value]=max_value))
El resultado como este,
Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto basado en la tabla que ha compartido?
BTW, pbix como adjunto.
Saludos
Equipo de apoyo a la comunidad _ zhenbw
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Muchas gracias @v-zhenbw-msft, modifiqué su solución un poco para habilitar la indicación de si hay varias ubicaciones para un valor máximo dado, ya que su solución usando MAX('Table'[Location]) está devolviendo la última (en orden alfabético) si hay más de una.
Hola @BastiaanBrak ,
Muy contento de que nuestra respuesta es útil para usted. 😊
Saludos
Equipo de apoyo a la comunidad _ zhenbw
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.