Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreThe FabCon + SQLCon recap series starts April 14th at 8am Pacific. If you’re tracking where AI is going inside Fabric, this first session is a can't miss. Register now
Hola a todos
Tengo dos tablas, la tabla base y la tabla de transacciones. La tabla base tiene una seguridad de nivel de fila basada en el nombre de usuario.
Tengo que crear tres nuevas tablas basadas en estas tablas usando DAX:
Mesa base :
| Nombre de usuario | DC | Org |
| UAA001 | 1120 | 5100 |
| UAA001 | 1121 | 5100 |
| UAA001 | 1122 | 51001 |
| UAA001 | 1123 | 51001 |
| UAA001 | 1124 | 51001 |
| UAA001 | 1125 | 51001 |
| UAA002 | 1120 | 6100 |
| UAA002 | 1121 | 6100 |
| UAA002 | 1128 | 51002 |
| UAA002 | 1129 | 51002 |
| UAA002 | 1130 | 51003 |
| UAA002 | 1131 | 61003 |
| UAA003 | 1141 | 5100 |
| UAA003 | 1142 | 51001 |
| UAA003 | 1143 | 51001 |
Tabla de transacciones:
| Nombre de usuario | DC | Org | Importe |
| UAA001 | 1120 | 5100 | 100 |
| UAA001 | 1121 | 5100 | 101 |
| UAA001 | 1122 | 51001 | 102 |
| UAA001 | 1123 | 51001 | 103 |
| UAA001 | 1124 | 51001 | 104 |
| UAA001 | 1125 | 51001 | 105 |
| UAA002 | 1120 | 6100 | 106 |
| UAA002 | 1121 | 6100 | 107 |
| UAA002 | 1128 | 51002 | 108 |
| UAA002 | 1129 | 51002 | 109 |
| UAA002 | 1130 | 51003 | 110 |
| UAA002 | 1131 | 61003 | 111 |
| UAA003 | 1141 | 5100 | 112 |
| UAA003 | 1142 | 51001 | 113 |
| UAA003 | 1143 | 51001 | 114 |
| UAA004 | 1120 | 4100 | 115 |
| UAA005 | 1140 | 5100 | 116 |
| UAA006 | 1140 | 5100 | 117 |
Nueva tabla : Tabla 1
1. En función del usuario, cree una tabla basada en los datos a los que tiene acceso desde la tabla base. Por ejemplo: para UAA001, la Tabla 1 será
| Nombre de usuario | DC | Org | Importe |
| UAA001 | 1120 | 5100 | 100 |
| UAA001 | 1121 | 5100 | 101 |
| UAA001 | 1122 | 51001 | 102 |
| UAA001 | 1123 | 51001 | 103 |
| UAA001 | 1124 | 51001 | 104 |
| UAA001 | 1125 | 51001 | 105 |
Nueva tabla : Tabla 2
2. En función del DC de la Tabla 1, busque cualquier "Org" adicional en la tabla de transcación que no esté en la Tabla 1. Aquí, no debemos restringirnos solo al usuario que ha iniciado sesión, tendremos que mirar toda la tabla independientemente del usuario.
Por ejemplo: Aquí, 1120,1121,1122,1123,1124,1125 son el "DC" de la Tabla 1, buscamos el mismo "DC" en la tabla de transacciones para todos los usuarios e identificamos cualquier "org" adicional que no esté en la Tabla 1. Org=6100,61003,4100 no están en la Tabla 1.Deberían estar en la Tabla 2.
A continuación se muestran las "Org" adicionales que no están en la Tabla 1.
| Nombre de usuario | DC | Org | Importe |
| UAA002 | 1120 | 6100 | 106 |
| UAA002 | 1121 | 6100 | 107 |
| UAA004 | 1120 | 4100 | 115 |
Tabla 2:
| Nombre de usuario | DC | Org | Importe |
| UAA001 | 1120 | 6100 | 213 |
| UAA001 | 1120 | 4100 | 115 |
Nueva tabla : Tabla 3
3. Con base en la "Org" de la Tabla 1, busque cualquier "DC" adicional en la tabla de transcación que no esté en la Tabla 1. Aquí, no debemos restringirnos solo al usuario que ha iniciado sesión, tendremos que mirar toda la tabla independientemente del usuario.
Por ejemplo: Aquí, 5100, 51001 son los "Org" de la Tabla 1, buscamos el mismo "Org" en la tabla de transacciones para todos los usuarios
e identifique cualquier "dc" adicional que no esté en la Tabla 1 . DC=1141,1142,1143,1140 no están en la Tabla 1.Deberían venir en la Tabla 3.
A continuación se muestran las "Org" adicionales que no están en la Tabla 3.
| Nombre de usuario | DC | Org | |
| UAA001 | 1141 | 5100 | 112 |
| UAA001 | 1142 | 51001 | 113 |
| UAA001 | 1143 | 51001 | 114 |
| UAA001 | 1140 | 5100 | 116 |
| UAA001 | 1140 | 5100 | 117 |
entonces, la Tabla 3 es :
| Nombre de usuario | DC | Org | |
| UAA001 | 1141 | 5100 | 112 |
| UAA001 | 1142 | 51001 | 113 |
| UAA001 | 1143 | 51001 | 114 |
| UAA001 | 1140 | 5100 | 223 |
¿Podría alguien aconsejar sobre cómo se puede lograr esto? Cualquier ayuda será muy apreciada.
Hola @POSPOS ,
Gracias por ponerse en contacto con el foro de la comunidad de Microsoft Fabric.
Para crear tres tablas basadas en diferentes condiciones en Power BI, siga los pasos a continuación para cumplir con sus requisitos.
Tabla 1: Cree una tabla que incluya los datos a los que el usuario tiene acceso desde la tabla base.
Para la tabla1, use la siguiente fórmula DAX:
Tabla1 =
VAR CurrentUser = "UAA001" -- Reemplazar con el usuario actual dinámicamente
DEVOLUCIÓN
FILTRO(
'Tabla de transacciones',
'Tabla de transacciones'[nombre de usuario] = CurrentUser
Tabla 2: Cree una tabla que incluya valores "Org" adicionales de la tabla de transacciones en función de los valores "DC" de la tabla 1.
Para la tabla 2, use la siguiente fórmula DAX:
Tabla 3: Cree una tabla que incluya valores "DC" adicionales de la tabla de transacciones en función de los valores "Org" de la tabla 1.
Para la tabla 3, utilice la siguiente fórmula DAX:
Tabla 3 =
VAR Table1Orgs = DISTINCT(SELECTCOLUMNS(FILTER('Tabla de transacciones', 'Tabla de transacciones'[Nombre de usuario] = "UAA001"), "org", 'Tabla de transacciones'[org]))
DEVOLUCIÓN
FILTRO(
'Tabla de transacciones',
NO 'Tabla de transacciones' [DC] EN
SELECTCOLUMNS(
FILTER('Tabla de transacciones', 'Tabla de transacciones'[nombre de usuario] = "UAA001"),
"DC", 'Tabla de transacciones'[DC]
) &&
'Tabla de transacciones'[org] IN Table1Orgs
)
Espero que mis sugerencias te den una buena idea.
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.
Gracias.
Hola @POSPOS, intente crear nuevas tablas con el siguiente código:
Tabla 1:
Tabla1 =
FILTRO(
ADDCOLUMNS(
'Tabla de transacciones',
"IsInBaseTable",
COUNTROWS(
FILTRO(
'Mesa base',
'Tabla base'[Nombre de usuario] = 'Tabla de transacciones'[Nombre de usuario] &&
'Tabla base'[DC] = 'Tabla de transacciones'[DC] &&
'tabla base'[org] = 'tabla de transacciones'[org]
)
)
),
[IsInBaseTable] > 0
)
Tabla-2:
Tabla2 =
FILTRO(
ADDCOLUMNS(
'Tabla de transacciones',
"IsAdditionalOrg",
NO(
COUNTROWS(
FILTRO(
'Tabla 1',
'Tabla1'[DC] = 'Tabla de transacciones'[DC] &&
'Tabla1'[org] = 'Tabla de transacciones'[org]
)
)
)
),
[IsAdditionalOrg] > 0
)
Tabla-3:
Tabla 3 =
FILTRO(
ADDCOLUMNS(
'Tabla de transacciones',
"IsAdditionalDC",
NO(
COUNTROWS(
FILTRO(
'Tabla 1',
'Tabla1'[org] = 'Tabla de transacciones'[org] &&
'Tabla1'[DC] = 'Tabla de transacciones'[DC]
)
)
)
),
[IsAdditionalDC] > 0
)
Hola @POSPOS : implemente la tabla base y la tabla de transacciones están conectadas a través de las columnas Nombre de usuario, DC y Organización cuando sea necesario.
Aplique la seguridad de nivel de fila (RLS) en la tabla base mediante expresiones DAX para filtrar en función del usuario que ha iniciado sesión (USERNAME()).
Defina los roles de RLS en la tabla base para restringir el acceso en función del usuario que ha iniciado sesión ([Nombre de usuario] = NOMBRE DE USUARIO()).
Esta tabla se filtra para incluir solo las filas de la tabla de transacciones que coinciden con los datos de la tabla base para el usuario que ha iniciado sesión.
Tabla1 =
FILTRO(
'Tabla de transacciones',
'Tabla de transacciones'[Nombre de usuario] = NOMBRE DE USUARIO() &&
LOOKUPVALUE('Tabla base'[DC], 'Tabla base'[DC], 'Tabla de transacciones'[DC]) <> BLANK() &&
LOOKUPVALUE('Tabla base'[org], 'tabla base'[org], 'tabla de transacciones'[org]) <> BLANK()
)
Esta tabla identifica las filas de la tabla de transacciones en las que el controlador de dominio coincide con cualquier controlador de dominio de la tabla 1, pero incluye valores de organización que no están presentes en la tabla 1.
Tabla2 =
FILTRO(
'Tabla de transacciones',
'Tabla de transacciones' [DC] EN DISTINCT('Tabla1' [DC]) &&
NOT('Tabla de transacciones'[org] IN DISTINCT('Tabla1'[org]))
)
La tabla identifica las filas de la tabla de transacciones en las que la organización coincide con cualquier organización de la tabla 1, pero incluye valores de DC que no están presentes en la tabla 1.
Tabla 3 =
FILTRO(
'Tabla de transacciones',
'Tabla de transacciones'[Org] IN DISTINCT('Tabla1'[Org]) &&
NOT('Tabla de transacciones'[DC] IN DISTINCT('Tabla1'[DC]))
)
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.