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

Power BI中如何用Measure筛选切片器?表格可用但切片器失效

Power BI切片器用户权限筛选失效问题

我在报表中使用NomData(对应示例的EventTypeCode/Account表)和ReadData_Perm(对应UserLogin/EventTypeCode表)两张表,编写了如下DAX度量值,用于根据当前登录用户筛选允许查看的EventTypeCode:

FilterEventByUser = 
IF(
    MAX(dlg_V_User_ReadData_Perm[UserLogin]) = USERPRINCIPALNAME()
    && MAX(dlg_V_User_ReadData_Perm[EventTypeCode]) = MAX(Nomenklaturen[EventTypeCode])
    //MAXX(dlg_V_User_ReadData_Perm, dlg_V_User_ReadData_Perm[UserLogin]) = USERPRINCIPALNAME()
    //&& MAXX(dlg_V_User_ReadData_Perm, dlg_V_User_ReadData_Perm[EventTypeCode]) = MAXX(Nomenklaturen, Nomenklaturen[EventTypeCode])
   , 1, 0
)

这个度量值作为表格可视化的筛选器时能正常工作,但应用到切片器上时,所有EventTypeCode选项都消失了。我试过用MAX和MAXX函数,只有表格能正常生效,请问怎么让这个度量值可以作为切片器的筛选器?

示例数据:

// NomData表(对应代码中的Nomenklaturen)
EventTypeCode;Account
11;Piers
11;Elizabeth
13;Neil
13;Melanie
13;Joshua
14;Madeleine

// ReadData_Perm表(对应代码中的dlg_V_User_ReadData_Perm)
UserLogin;EventTypeCode
Christian@test.org;11
Christian@test.org;14
Jessica@test.org;13

(测试时请将Jessica@test.org替换为你的登录账号)


解决方案

问题出在原有度量值的逻辑上:当作用于切片器时,切片器会逐个遍历EventTypeCode值,但MAX(dlg_V_User_ReadData_Perm[UserLogin])只会返回权限表中的最大用户登录名,无法和当前用户做精准匹配。需要调整逻辑,改为判断当前EventTypeCode是否在当前用户的权限列表中:

修正后的DAX度量值

FilterEventByUser = 
VAR CurrentUser = USERPRINCIPALNAME()
VAR AllowedEventCodes = 
    CALCULATETABLE(
        VALUES(dlg_V_User_ReadData_Perm[EventTypeCode]),
        dlg_V_User_ReadData_Perm[UserLogin] = CurrentUser
    )
RETURN
    IF(MAX(Nomenklaturen[EventTypeCode]) IN AllowedEventCodes, 1, 0)

逻辑说明

  1. 用CurrentUser变量获取当前登录用户的账号
  2. 通过CALCULATETABLE和VALUES提取该用户所有有权限的EventTypeCode列表
  3. 判断当前上下文的EventTypeCode是否在权限列表中,符合条件返回1,否则返回0

应用步骤

将这个新的度量值添加到切片器的筛选器中,设置筛选条件为“值等于1”,就能正常显示当前用户有权限的EventTypeCode选项了。


内容的提问来源于stack exchange,提问作者Johnny Spindler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:12