Forum Discussion
MINX con múltiples condiciones
hola
Tengo una tabla en la que estoy tratando de obtener la fecha de la fila anterior. Para que funcione correctamente, creé una columna de índice. Esta columna de índice se encarga de clasificar la información, en función del id, evento y fecha1.
He aquí un ejemplo:
| IDENTIFICACIÓN | EVENTO | FECHA1 | ÍNDICE | FECHADESDEANTERIOR |
| 123456 | 1 | 31/12/2023 | 1 | - |
| 123456 | 1 | 02/05/2024 | 2 | 31/12/2023 |
| 123456 | 2 | 23/08/2023 | 1 | - |
| 123456 | 2 | 12/03/2024 | 2 | 23/08/2023 |
Así es como debería funcionar, pero datefromprevious devuelve la misma fecha para ambas filas.
Así:
| IDENTIFICACIÓN | EVENTO | FECHA1 | ÍNDICE | FECHADESDEANTERIOR |
| 123456 | 1 | 31/12/2023 | 1 | - |
| 123456 | 1 | 02/05/2024 | 2 | 23/08/2023 |
| 123456 | 2 | 23/08/2023 | 1 | - |
| 123456 | 2 | 12/03/2024 | 2 | 23/08/2023 |
Estoy tratando de agregar una condición más en este código, pero la función "Filtro" solo me permite trabajar con 2 condiciones.
Intenté usar la función Calcular, pero parece tener algún tipo de incompatibilidad con la función MINX y tampoco puedo filtrar.
Este es el código:
6 Replies
- Syndicate_Admin
Administrator
Hola
Verifique la imagen a continuación y el archivo pbix adjunto.Función OFFSET (DAX) - DAX | Microsoft Learn
Expected result CC = MAXX ( OFFSET ( -1, 'Table', ORDERBY ( 'Table'[INDEX], ASC ), , PARTITIONBY ( 'Table'[EVENT] ), MATCHBY ( 'Table'[DATE1], 'Table'[EVENT], 'Table'[ID], 'Table'[INDEX] ) ), 'Table'[DATE1] )- Syndicate_Admin
Administrator
¡Gracias por tu ayuda!
Estoy tratando de aplicar esta solución en el caso real, pero parece no funcionar porque el parámetro de "relación" de offset tiene líneas duplicadas. ¿Cómo puedo devolverles el archivo con una tabla que se parezca más al caso real?
- Syndicate_Admin
Administrator
Hola
Gracias por tu mensaje, y puedes compartir el enlace del archivo (Onedrive, Dropbox, Googledrive, otros...).
Gracias.
- Syndicate_Admin
Administrator
Hola @dss25 ,
Pruebe esta columna calculada:
DATEFORMPREVIOUS = VAR __cur_id = 'Table'[ID] VAR __cur_event = 'Table'[EVENT] VAR __cur_index = 'Table'[INDEX] VAR __result = CALCULATE ( MIN ( 'Table'[DATE1] ), FILTER ( ALL ( 'Table' ), 'Table'[ID] = __cur_id && 'Table'[EVENT] = __cur_event && 'Table'[INDEX] = __cur_index - 1 ) ) RETURN __resultSaludos
Gao
Equipo de apoyo a la comunidadSi hay alguna publicación que ayude, considere Acéptala como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o todavía tiene problemas con él, no dude en hacérnoslo saber. ¡Muchas gracias!Cómo obtener respuestas rápidas a sus preguntas : cómo proporcionar datos de ejemplo en el foro de Power BI
- Syndicate_Admin
Administrator
¡Muchas gracias! ¡Esto resolvió mi problema!
- Syndicate_Admin
Administrator
Hola
Si para una combinación de ID y evento, nunca puede haber una entrada duplicada en la columna Date1, la columna Index no es necesaria. Pruebe esta fórmula de columna calculada
Fecha anterior = calcular(max(Datos[Fecha1]),filtro(Datos,Datos[id]=anterior(Datos[id])&&datos[evento]=anterior(datos[evento])&&datos[fecha1]<anterior(datos[fecha1])))
Espero que esto ayude.