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

The 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

Reply
Syndicate_Admin
Administrator
Administrator

Creación de tres tablas basadas en diferentes condiciones en Power BI

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 usuarioDCOrg
UAA00111205100
UAA00111215100
UAA001112251001
UAA001112351001
UAA001112451001
UAA001112551001
UAA00211206100
UAA00211216100
UAA002112851002
UAA002112951002
UAA002113051003
UAA002113161003
UAA00311415100
UAA003114251001
UAA003114351001

Tabla de transacciones:

Nombre de usuarioDCOrgImporte
UAA00111205100100
UAA00111215100101
UAA001112251001102
UAA001112351001103
UAA001112451001104
UAA001112551001105
UAA00211206100106
UAA00211216100107
UAA002112851002108
UAA002112951002109
UAA002113051003110
UAA002113161003111
UAA00311415100112
UAA003114251001113
UAA003114351001114
UAA00411204100115
UAA00511405100116
UAA00611405100117

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 usuarioDCOrgImporte
UAA00111205100100
UAA00111215100101
UAA001112251001102
UAA001112351001103
UAA001112451001104
UAA001112551001105


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 usuarioDCOrgImporte
UAA00211206100106
UAA00211216100107
UAA00411204100115

Tabla 2:

Nombre de usuarioDCOrgImporte
UAA00111206100213
UAA00111204100115

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 usuarioDCOrg
UAA00111415100112
UAA001114251001113
UAA0011143

51001

114

UAA0011140

5100

116

UAA0011140

5100

117

entonces, la Tabla 3 es :

Nombre de usuarioDCOrg
UAA00111415100112
UAA001114251001113
UAA0011143

51001

114

UAA0011140

5100

223

¿Podría alguien aconsejar sobre cómo se puede lograr esto? Cualquier ayuda será muy apreciada.

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

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

vtsaipranay_0-1733912582280.png

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:

Tabla2 =
VAR Table1DCs = DISTINCT(SELECTCOLUMNS(FILTER('Tabla de transacciones', 'Tabla de transacciones'[Nombre de usuario] = "UAA001"), "DC", 'Tabla de transacciones'[DC]))
DEVOLUCIÓN
FILTRO(
'Tabla de transacciones',
NOT 'Tabla de transacciones'[org] IN
SELECTCOLUMNS(
FILTER('Tabla de transacciones', 'Tabla de transacciones'[nombre de usuario] = "UAA001"),
"org", 'tabla de transacciones'[org]
) &&
'Tabla de transacciones' [DC] IN Table1DCs
)
vtsaipranay_1-1733912716749.png

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

)

vtsaipranay_2-1733912739367.png

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.

Syndicate_Admin
Administrator
Administrator

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
)




Syndicate_Admin
Administrator
Administrator

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]))
)

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.

Top Kudoed Authors