Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Syndicate_Admin
Administrator
Administrator

Información cruzada entre 3 tablas

En Power BI Desktop estoy deseando tener una tabla "Matriz de entrenamiento" con el estado de certificación Puede ejecutar / No se puede ejecutar, como se muestra a continuación:

Nombre de usuarioOperaciónEstado de la certificación
User_A[01] Limpieza
User_A[02] Pintura
User_A[03] Mudanza
User_A[04] Cierre
User_B[01] Limpieza
User_B[02] Pintura
User_B[03] Mudanza
User_B[04] Cierre
User_C[01] Limpieza
User_C[02] Pintura
User_C[03] Mudanza
User_C[04] Cierre

Que tengo otras 2 tablas con información relacionada: Una tabla con las certificaciones requeridas para cada operación (OperationCertRequirement) y una tabla con registros de certificación (UserCertification)

OperationCertRequirement

identificaciónOperaciónCertificate_Needed
1[01] LimpiezaLimpiar con X
2[01] LimpiezaLimpiar con Y
3[01] LimpiezaCómo inspeccionar
4[02] PinturaPintar con pintura
5[02] PinturaPintar con tinta
6[03] MudanzaMoverse verticalmente
7[03] MudanzaMoverse horizontalmente
8[04] CierreCómo cerrar

UserCertification

id_certCertificadoUsuarioEstado
1Limpiar con XUser_AActivo
2Limpiar con YUser_AActivo
3Cómo inspeccionarUser_AActivo
4Moverse verticalmenteUser_AActivo
5Cómo cerrarUser_AActivo
6Limpiar con YUser_ACaducado
7Pintar con pinturaUser_BActivo
8Pintar con tintaUser_BActivo
9Moverse verticalmenteUser_BActivo
10Pintar con pinturaUser_BActivo
11Cómo cerrarUser_CActivo
12Limpiar con XUser_CCaducado
13Limpiar con YUser_CCaducado
14Cómo inspeccionarUser_CCaducado

Para llenar la columna vacía, necesito ver si el operador tiene los certificados necesarios activos para la operación relacionada.

Debido a que algunas operaciones pueden requerir más de una certificación, estoy luchando por encontrar una solución para llenar el estado de certificación, que debería ser el siguiente:

Nombre de usuarioOperaciónEstado de la certificación
User_A[01] LimpiezaPuede ejecutar
User_A[02] PinturaNo se puede ejecutar
User_A[03] MudanzaNo se puede ejecutar
User_A[04] CierrePuede ejecutar
User_B[01] LimpiezaNo se puede ejecutar
User_B[02] PinturaPuede ejecutar
User_B[03] MudanzaNo se puede ejecutar
User_B[04] CierreNo se puede ejecutar
User_C[01] LimpiezaNo se puede ejecutar
User_C[02] PinturaNo se puede ejecutar
User_C[03] MudanzaNo se puede ejecutar
User_C[04] CierrePuede ejecutar

¡Muchas gracias de antemano por cualquier ayuda!

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hola Alexander,

¡Encontré un error en el nombre de un campo y, por lo tanto, su 1ª solución funcionó perfectamente!

Muchas gracias de nuevo.

Syndicate_Admin
Administrator
Administrator

Puedo suponer que si usa ALL (OperationCertRequirement) y ALL (UserCertification) en lugar de solo OperationCertRequirement y UserCertification en las líneas 4 y 5, puede funcionar correctamente incluso con las relaciones, pero es solo una suposición.

También puede proporcionarme un archivo simulado con el modelo como el que usa en el entorno de producción para que pueda ajustar esta solución para su modelo.

Saludos

Alexander

Mi vlog de YouTube en inglés

Mi vlog de YouTube en ruso

Syndicate_Admin
Administrator
Administrator

En ella barritown,

Muchas gracias por su repetición, esa es una forma inteligente de hacerlo.

Sin embargo, no está funcionando completamente ya que tengo relaciones activas. ¿Hay alguna forma de desactivarlos para esta columna calculada? Si no se puede usar el filtro cruzado, ¿dónde debería colocarse?

Gracias

Syndicate_Admin
Administrator
Administrator

@smccres,

Suponiendo que las tres tablas no estén relacionadas, podría proponer una columna calculada:

barritown_0-1696324234618.png

Y en texto plano:

Certification Status = 
VAR _curtUser = [UserName]
VAR _curOperation = [Operation]
VAR _tbl1 = SELECTCOLUMNS ( FILTER ( OperationCertRequirement, [Operation] = _curOperation ), "Value1", [Certificate_Needed] )
VAR _tbl2 = SELECTCOLUMNS ( FILTER ( UserCertification, [User] = _curtUser && [Status] = "Active" ), "Value2", [Certificate] )
VAR _res = ADDCOLUMNS ( _tbl1, "Flag", INT ( NOT [Value1] IN _tbl2 ) )
RETURN IF ( SUMX ( _res, [Flag] ) > 0, "Cannot Execute", "Can Execute" )

Saludos

Alexander

Mi vlog de YouTube en inglés

Mi vlog de YouTube en ruso

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors
Top Kudoed Authors