Forum Discussion
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:
7 Replies
- Syndicate_Admin
Administrator
@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
Administrator
Gracias @parry2k. Una vez que introduje una tabla sin repetir identificadores y creé una cardinalidad de uno a muchos, esta solución funcionó.
- Syndicate_Admin
Administrator
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?
- Syndicate_Admin
Administrator
@MuppetyMe sí, la práctica recomendada debería ser una tabla de dimensiones con valores únicos y, por lo tanto, debería funcionar.
- Syndicate_Admin
Administrator
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ónRecent_TeamMate = CALCULATE ( MAX ( Tbl_[Name] ), FILTER ( RELATEDTABLE ( Tbl_ ), Tbl_[Rnk] = 1 ) ) - Syndicate_Admin
Administrator
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 XuSi esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
- Syndicate_Admin
Administrator
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])
)
)