You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单个CALCULATETABLE实现现有两个DAX权限查询逻辑?

合并为单个CALCULATETABLE的DAX实现

你可以通过将两类权限记录合并到一个表中,再分别校验匹配逻辑来实现需求。以下是两种可行的写法:

写法一:使用EXISTS函数

VAR upn = USERPRINCIPALNAME()
VAR security_tbl = CALCULATETABLE(
    SELECTCOLUMNS(
        'Access',
        "@Type", 'Access'[Type],
        "@Name", 'Access'[Name]
    ),
    'Access'[E-mail] = upn && 'Access'[Type] IN {"Country", "State"}
)
RETURN
    EXISTS(security_tbl, security_tbl[@Type] = "Country" && security_tbl[@Name] = 'Facts'[Country])
    ||
    EXISTS(security_tbl, security_tbl[@Type] = "State" && security_tbl[@Name] = 'Facts'[State])

写法二:使用COUNTROWS判断匹配

VAR upn = USERPRINCIPALNAME()
VAR security_tbl = CALCULATETABLE(
    'Access',
    'Access'[E-mail] = upn && 'Access'[Type] IN {"Country", "State"}
)
RETURN
    COUNTROWS(FILTER(security_tbl, 'Access'[Type] = "Country" && 'Access'[Name] = 'Facts'[Country])) > 0
    ||
    COUNTROWS(FILTER(security_tbl, 'Access'[Type] = "State" && 'Access'[Name] = 'Facts'[State])) > 0

逻辑说明

  1. 首先通过CALCULATETABLE一次性筛选出当前用户(匹配USERPRINCIPALNAME())的所有Country和State类型权限记录,无需拆分两个独立表。
  2. 在返回逻辑中,分别校验当前Facts行的Country是否存在于权限表的Country类型条目,或State是否存在于权限表的State类型条目,满足任一条件即返回true。

内容的提问来源于stack exchange,提问作者Raj Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:32:41