Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet 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
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:
'Todos' corresponde a todos los segmentos de la tabla de búsqueda, es decir, X,Y,Z.
Tabla de búsqueda:
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:
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.
Solved! Go to Solution.
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]
)
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]
)
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.
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
Hola @parry2k muchas gracias por su tiempo y ayuda; He encontrado una solución simplificada y he publicado aquí. Pero agradezco su ayuda.
@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.
@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.
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.