damonkerr
Hola a todos,
Pregunta simple de un usuario simple. Tenemos una tabla en nuestra base de datos a la que llamaré Usuarios, que tiene el ID de usuario y su nombre:
Luego usamos esta tabla en varias entradas en otras partes del conjunto de datos, por ejemplo, un registro de transacciones simple:
Deseo mostrar un informe que muestre el nombre del Usuario en lugar de su ID. Simplemente cree un enlace de una tabla a otra en el campo apropiado.
Mi pregunta es: ¿Tengo que crear varias copias de la tabla Usuario y luego vincular la ID a los campos de ID en la segunda tabla (es decir, Ingresado por, Autorizado por y Pagado por)? No creo que pueda vincularlo a la misma tabla dos veces, ni creo que pueda vincularlo a otras tablas (Cuenta creada por, etc.).
Desde una perspectiva de carga de datos, ¿es esta la solución óptima? Pregunto porque en realidad los 380 Usuarios de nuestra organización residen dentro de una tabla de Personas (Solicitantes, Contactos, Usuarios, etc.), que tiene alrededor de 150.000 filas que luego filtramos para seleccionar solo las entradas con el rol de Usuario (que también se almacena en una tabla diferente, por lo que traeremos 300,000 filas para seleccionar 380). Crear 5-6 versiones de la misma tabla parece excesivo y una pérdida de recursos.
jimmy801
Hola @DamonKerr
no, no es posible crear 2 relaciones entre dos tablas. O normaliza su tabla TA y luego crea la relación o puede crear una nueva columna en su tabla TA con la función LOOKUPVALUE
SoldByName = LOOKUPVALUE(User[Name],User[ID],TA[Sold by])
Otra solución es conectarlos 2 o 3 veces (una vez activa y otra inactiva)
y luego crea una medida para cada nombre como
CanceledBYName = if (Calculate(COUNTROWS(User),USERELATIONSHIP(User[ID],TA[Canceled by]))>1, blank(),calculate(values(User[Name]),USERELATIONSHIP(User[ID],TA[Canceled by])))
ahora usa las medidas personalizadas en tu visual
Si esta publicación ayuda o resuelve su problema, márquelo como solución (para ayudar a otros usuarios a encontrar contenido útil y reconocer el trabajo de los usuarios que lo ayudaron)
Los saludos también son buenos
Divertirse
Palanqueta
PC2790
Hola @DamonKerr,
Puede haber varias formas de hacerlo, sin embargo, el primer enfoque que me viene a la mente es usar DAX-LOOKUPVALUE
Si no existe un requisito específico de hacerlo en Power Query, puede optar por DAX, ya que en este caso no se requerirá ninguna relación ni tablas duplicadas.
Puede agregar dos columnas nuevas y escribir la fórmula de tal manera que obtenga los detalles Ingresado por, Autorizado por y Pagado por de la tabla anterior.
Cree columnas calculadas utilizando el DAX que se proporciona a continuación:
Paid by(Name) = LOOKUPVALUE(UserTable[Name],UserTable[UserID],TransactionTable[Paid By])
Entedred by(Name) = LOOKUPVALUE(UserTable[Name],UserTable[UserID],TransactionTable[Entered BY])
Authorised by(Name) = LOOKUPVALUE(UserTable[Name],UserTable[UserID],TransactionTable[Authorised by])
Gracias
jimmy801
Hola @DamonKerr
no, no es posible crear 2 relaciones entre dos tablas. O normaliza su tabla TA y luego crea la relación o puede crear una nueva columna en su tabla TA con la función LOOKUPVALUE
SoldByName = LOOKUPVALUE(User[Name],User[ID],TA[Sold by])
Otra solución es conectarlos 2 o 3 veces (una vez activa y otra inactiva)
y luego crea una medida para cada nombre como
CanceledBYName = if (Calculate(COUNTROWS(User),USERELATIONSHIP(User[ID],TA[Canceled by]))>1, blank(),calculate(values(User[Name]),USERELATIONSHIP(User[ID],TA[Canceled by])))
ahora usa las medidas personalizadas en tu visual
Si esta publicación ayuda o resuelve su problema, márquelo como solución (para ayudar a otros usuarios a encontrar contenido útil y reconocer el trabajo de los usuarios que lo ayudaron)
Los saludos también son buenos
Divertirse
Palanqueta
Vera_33
Hola @DamonKerr
¿Qué tal transformar tu tabla a esto? Luego crea una relación:
Transaction ID Date Action User
1 01/01/2021 Entered 3001
2 02/01/2021 Entered 3002
3 03/01/2021 Entered 3003
1 01/01/2021 Authorised 3006
2 02/01/2021 Authorised 3006
3 03/01/2021 Authorised 3006
1 01/01/2021 Paid 3004
2 02/01/2021 Paid 3004
3 03/01/2021 Paid 3005