Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

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ÓNEVENTOFECHA1ÍNDICEFECHADESDEANTERIOR
123456131/12/20231-
123456102/05/2024231/12/2023
123456223/08/20231-
123456212/03/2024223/08/2023

Así es como debería funcionar, pero datefromprevious devuelve la misma fecha para ambas filas.

Así:

IDENTIFICACIÓNEVENTOFECHA1ÍNDICEFECHADESDEANTERIOR
123456131/12/20231-
123456102/05/2024223/08/2023
123456223/08/20231-
123456212/03/2024223/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:

NuevaColumna = BRIBONA(FILTRO(Tabla[ID] = ANTERIOR(Tabla[ID]) && [Índice] = ANTERIOR([Índice])-1), [Fecha 1])
¿Cómo puedo usar varios filtros en este caso?

6 Replies

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      ¡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's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Hola

        Gracias por tu mensaje, y puedes compartir el enlace del archivo (Onedrive, Dropbox, Googledrive, otros...).

        Gracias.

  • 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
        __result

    Saludos
    Gao

    Equipo de apoyo a la comunidad

    Si 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

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