Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

Problemas de LOOKUPVALUE

Tengo dos tablas: Table1 tiene varias líneas que hacen referencia al mismo ID con nombres de compañeros de equipo en diferentes fechas.
En la Tabla2, quiero traer el nombre del compañero de equipo de la fecha más reciente. Al crear una nueva columna en Table2 con LOOKUPVALUE, se produce un error porque hay varias entradas para el mismo ID.
Creó una medida:

COMPAÑERO DE EQUIPO MÁS RECIENTE = CALCULAR(FIRSTNONBLANK(Tabla 1[Compañero de equipo],1), FILTRO(Tabla 1, Tabla 1[Fecha] = MÁXIMO(Tabla1[Fecha]))), lo que produce resultados, pero no estoy seguro de cómo trasladarlos a la Tabla2.

7 Replies

  • @MuppetyMe puede usar la siguiente expresión para agregar una nueva columna en la tabla 2, suponiendo que la tabla 1 y la tabla 2 tienen una relación en el ID: uno a varios

    Most Recent Teammate = 
    CALCULATE ( 
        MAX ( Table1[Teammate] ),
        TOPN ( 
              1,
              RELATEDTABLE ( Table1 ),
              Table1[Date] 
        )
    )

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias @parry2k. Una vez que introduje una tabla sin repetir identificadores y creé una cardinalidad de uno a muchos, esta solución funcionó.

  • Hola @parry2k, desafortunadamente, es una relación de muchos a muchos entre las 2 mesas 😞 ¿Podría ser mejor crear una tabla completamente diferente con ID únicos y luego traer al compañero de equipo MAX, TOPN?

  • @MuppetyMe sí, la práctica recomendada debería ser una tabla de dimensiones con valores únicos y, por lo tanto, debería funcionar.

  • Cree una columna calculada en la primera tabla que clasifique el registro a través de los ID

    Rnk = RANKX (
        FILTER (
            'Tbl_',
     
           'Tbl_'[Id]= EARLIER (Tbl_[ID])
        ),
        'Tbl_'[Date],
        , 
        DESC,Dense
    )


    En la segunda tabla, cree una medida que recupere la mayoría de los nombres principales de cada ID en función de la clasificación

    Recent_TeamMate =
    CALCULATE (
        MAX ( Tbl_[Name] ),
        FILTER ( RELATEDTABLE ( Tbl_ ), Tbl_[Rnk] = 1 )
    )

  • Hola @MuppetyMe

    Gracias por la respuesta de parry2k y SachinNandanwar, permítanme proporcionar otra idea:

    La siguiente medida es para su referencia.

    Measure = 
    VAR _MAXDate = CALCULATE(MAX('Table1'[Date]), 'Table1'[ID] = MAX('Table2'[ID]))
    RETURN
    CALCULATE(MAX('Table1'[Teammate]), FILTER('Table1', [Date] = _MAXDate))

    Salida:

    Saludos
    Yulia Xu

    Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

  • @MuppetyMe ,

    En Tabla2, cree una nueva columna calculada

    Recent Teammate = 
    CALCULATE(
    FIRSTNONBLANK(Table1[Teammate], 1),
    FILTER(
    Table1,
    Table1[ID] = Table2[ID] &&
    Table1[Date] = CALCULATE(MAX(Table1[Date]), Table1[ID] = Table2[ID])
    )
    )