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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
BastiaanBrak
Helper IV
Helper IV

Consulta DAX: LOOKUPVALUE con segmentaciones

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:
VLOOKUP1.PNG

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).

VLOOKUP2.PNG


¿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

1 ACCEPTED SOLUTION
Ramesh-iTalent
Administrator
Administrator

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,

DAX1.jpg

DAX2.jpg

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.

View solution in original post

5 REPLIES 5
Ashish_Mathur
Super User
Super User

Hola

Comparte el enlace desde donde puedo descargar tu archivo PBI.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

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

Ramesh-iTalent
Administrator
Administrator

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,

DAX1.jpg

DAX2.jpg

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.

Ubicación del valor máximo ( Max Value location)

var max_value - CALCULATE([Valor máximo],ALLSELECTED())
var first_location - CALCULATE(MIN('Table'[Location]),FILTER('Table','Table'[Data_Value]-max_value))
var last_location - CALCULATE(MAX('Table'[Location]),FILTER('Table','Table'[Data_Value]-max_value))

devolución

IF(first_location á last_location,CALCULATE(MAX('Table'[Location]),FILTER('Table','Table'[Data_Value]-max_value)),"Multiple locations")





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.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors