Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by attending the DP-600 session on April 23rd (pacific time), live or on-demand.
Learn moreNext up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. 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.
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.