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

Get certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now

Reply
Syndicate_Admin
Administrator
Administrator

Power BI DAX : CROSS JOIN entre dos tablas basadas en un filtro variable

Tengo dos tablas de entrada en mi modelo de Power BI.

1) UserPermission
2) Tabla de búsqueda

Las dos tablas anteriores no están relacionadas.

Userpermission:

jill.GIF

'Todos' corresponde a todos los segmentos de la tabla de búsqueda, es decir, X,Y,Z.

Tabla de búsqueda:

jg.GIF

UserPermission[SgmtID] es equivalente a LookupTable[SegmentID].

Necesito desarrollar una tabla de salida, mediante CROSS JOINing la columna UserName
en la tabla UserPermission y en la columna Ports de la tabla de búsqueda.

Tabla de salida deseada:

PBI OLSEN1.GIF

David necesita tener todos los puertos de todos los segmentos en la tabla de búsqueda (es decir, X,Y,Z).
John necesita tener todos los puertos del segmento X solamente.
Mike necesita tener todos los puertos del segmento Y solamente.

Jill solo necesita tener todos los puertos de los segmentos X y Z.

La diferencia entre David y Jill es que David puede acceder a todos los segmentos, mientras que Jill puede acceder a varios segmentos, pero no a todos los segmentos.

La tabla de salida es necesaria para la seguridad de nivel de fila (RLS).

Sé usar CROSS JOIN usando VALUES, también algunas variables y filtros. Pero no es capaz de desarrollar una consulta DAX completa, debido a la falta de experiencia.

¿Alguien puede ayudarme amablemente con esto?

Gracias.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Finalmente descubierto: Tuve que cambiar el nombre de columna UserPermissions[SegmentID] a UserPermissions[SgmtID]

Entonces:

Tabla de salidas - FILTRO (
COLUMNAS DE RESUMEN (
UserPermission[UserName],
UserPermission[SgmtID],
LookupTable[Puertos],
LookupTable[SegmentID]
),
[SgmtID] < 0 || [SegmentID] á [SgmtID]
)

View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Finalmente descubierto: Tuve que cambiar el nombre de columna UserPermissions[SegmentID] a UserPermissions[SgmtID]

Entonces:

Tabla de salidas - FILTRO (
COLUMNAS DE RESUMEN (
UserPermission[UserName],
UserPermission[SgmtID],
LookupTable[Puertos],
LookupTable[SegmentID]
),
[SgmtID] < 0 || [SegmentID] á [SgmtID]
)

Syndicate_Admin
Administrator
Administrator

No @snph1777 ,

Estos son los pasos que puede seguir:

1. Cree una columna calculada.

Desired Output table =
var _david=
SELECTCOLUMNS('Table (2)',"UserName","david","Ports",[Ports])
var _john=
SELECTCOLUMNS(FILTER('Table (2)',
[Sement]=CALCULATE(MAX('Table'[Segment]),FILTER('Table',[UserName]="john"))&&
[SementID]=CALCULATE(MAX('Table'[SegmentID]),FILTER('Table',[UserName]="john")))
,"UserName","john","Ports",[Ports])
var _mike=
SELECTCOLUMNS(FILTER('Table (2)',
[Sement]=CALCULATE(MAX('Table'[Segment]),FILTER('Table',[UserName]="mike"))&&
[SementID]=CALCULATE(MAX('Table'[SegmentID]),FILTER('Table',[UserName]="mike")))
,"UserName","mike","Ports",[Ports])
VAR _1=
SELECTCOLUMNS(FILTER('Table','Table'[UserName]="jill"),"1",[Segment])
VAR _2=
SELECTCOLUMNS(FILTER('Table','Table'[UserName]="jill"),"2",[SegmentID])
var _jill=
SELECTCOLUMNS(FILTER('Table (2)',
[Sement] in _1&&
[SementID] in _2)
,"UserName","jill","Ports",[Ports])
return
UNION(_david,_john,_mike,_jill)

2. Resultado.

v-yangliu-msft_0-1611024530971.png

Puede descargar el archivo PBIX desde aquí.

Saludos

Liu Yang

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola Liu, muchas gracias por su ayuda; apreciarlo; He encontrado una solución simplificada, y he publicado aquí. agan muchas gracias

Syndicate_Admin
Administrator
Administrator

@snph1777 suena bien.

Hola @parry2k muchas gracias por su tiempo y ayuda; He encontrado una solución simplificada y he publicado aquí. Pero agradezco su ayuda.

Syndicate_Admin
Administrator
Administrator

@snph1777 agregar la siguiente medida y, a continuación, una tabla de esta medida

Include = 
IF ( 
    SELECTEDVALUE ( User[SegmentId] ) = -1, 
    COUNTROWS ( 
        CROSSJOIN ( Ports, User ) 
    ), 
    CALCULATE ( 
        COUNTROWS ( Ports ), 
        TREATAS ( 
            VALUES ( User[SegmentId] ), 
            Ports[SegmentId] 
        ) 
    ) 
)

Aquí hay una expresión para crear una tabla calculada

Table = SUMMARIZECOLUMNS('User'[User], 'User'[SegmentId], 'User'[Segment], 'Ports'[Ports], "Include", 'User'[Include])

y esta nueva tabla contendrá sus datos.

Consulta mi última entrada de blog Año-2020, Pandemia, Power BI y más allá para obtener un resumen de mis versiones favoritas de las características de Power BI en 2020

Me gustaría elogios si mi solución ayudara. 👉 Si puedes dedicar tiempo a publicar la pregunta, también puedes hacer esfuerzos para dar Felicitaciones a quien haya ayudado a resolver tu problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consulta relacionadas con Power BI.

Gracias. Volveremos después de probar tu solución.

Syndicate_Admin
Administrator
Administrator

@snph1777 más fácil sería crear una columna calculada por dax si está de acuerdo con ella.

Se necesita una salida de tabla. Esta tabla se usará para la seguridad de nivel de fila.

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

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

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.

Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.

Nov PBI Update Carousel

Power BI Monthly Update - November 2024

Check out the November 2024 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors