Múltiples copias de la misma tabla

Un usuario Pregunto ✅

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:

Usuarios.JPG

Luego usamos esta tabla en varias entradas en otras partes del conjunto de datos, por ejemplo, un registro de transacciones simple:

Transacciones.JPG

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)

Jimmy801_0-1613555905628.png

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

Jimmy801_1-1613555995199.png

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)

Jimmy801_0-1613555905628.png

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

Jimmy801_1-1613555995199.png

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *