![](/img/trans.png)
[英]SSIS - Join tables from different servers whose names are based on a variable
[英]Power BI DAX : CROSS JOIN between two tables based on a variable filter
我的 Power BI model 中有两个输入表。
以上两个表不相关。
用户权限:
“All”对应于查找表中的所有段,即X、Y、Z。
查找表:
UserPermission[SgmtID] 等价于 LookupTable[SegmentID]。
我需要开发一个 output 表,通过交叉连接 UserPermission 表中的 UserName 列和查找表中的 Ports 列。
所需的 Output 表:
David 需要在查找表中拥有所有段的所有端口(即 X、Y、Z)。
John 只需要拥有段 X的所有端口。
Mike 只需要拥有段 Y的所有端口。
Jill 只需要拥有段 X 和 Z的所有端口。
David 和 Jill 的区别在于,David 可以访问所有段,而 Jill 可以访问多个段,但不能访问所有段。
行级安全 (RLS) 需要 output 表。
我知道使用 VALUES 使用 CROSS JOIN,还有一些变量和过滤器。 但由于缺乏专业知识,无法开发完整的 DAX 查询。
任何人都可以帮我解决这个问题吗?
如果您需要在 DAX 中执行此操作,我认为SUMMARIZECOLUMNS function可能是最容易实现此目的的方法。
Output Table =
FILTER (
SUMMARIZECOLUMNS (
UserPermission[UserName],
LookupTable[Ports],
LookupTable[SegmentID],
"SID", VALUES ( UserPermission[SegmentID] )
),
[SID] < 0 || [SID] = [SegmentID]
)
推荐阅读这款强大的 function:
https://www.sqlbi.com/articles/introducing-summarizecolumns/
编辑:如果您将UserPermissions[SegmentID]
重命名为UserPermissions[SgmtID]
以便在汇总时没有两列同名,那么您可以按如下方式编写组合表并避免您在评论中提到的问题:
Output Table =
FILTER (
SUMMARIZECOLUMNS (
UserPermission[UserName],
UserPermission[SgmtID],
LookupTable[Ports],
LookupTable[SegmentID]
),
[SgmtID] < 0 || [SegmentID] = [SgmtID]
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.