我正在尝试将SQL查询转换为DAX,以便可以在Power BI报表上创建行级安全性(表过滤器DAX表达式)。
我正在尝试检查该用户是否等于我指定的用户以及我指定的国家/地区的用户。
SELECTCOLUMNS(Dim_Unit, “Country”, Username() = 'P\andy.v', AND ( “Country”, "Germany" ))
我在上面已经很累了,但是我不了解DAX的语法(https://dax.guide/selectcolumns/使用它作为替换SQL查询的指南)
以下是我应该复制的内容:
SELECT DISTINCT Country
FROM dbo.Dim_Unit
WHERE (@UserID IN ('P\andy.vy', 'C\avanston', 'P\gregy.dy', 'PR\ARah', 'PR\fes', 'P\gwen.l'))
OR (@UserID IN ('P\liz.trum', 'C\ltrumitch2') AND Country IN ('USA', 'Canada'))
OR (@UserID IN ('P\ant.fischer') AND Country IN ('Germany'))
OR (@UserID IN ('C\dshorney') AND Country IN ('Singapore', 'Malaysia', 'Hong Kong', 'Indonesia'))
OR (@UserID IN ('C\mmillard', 'C\mmillard-ext') AND Country IN ('Australia'))
OR (@UserID IN ('C\emarkiyewicz') AND Country NOT IN ('USA', 'Canada'))
ORDER BY Country
预期结果是Power BI将能够根据指定的国家/地区显示正确个人的正确数据,未分配国家/地区的用户可以查看所有数据。
答案 0 :(得分:0)
相反,创建一个表或查询来为所有允许的对返回(UserId,Country)。将该查询作为名为UserCountry_RLS的表导入,通过双向交叉过滤将其与Country表建立关系,然后在其上放置一个简单的DAX RLS过滤器,并向报表用户隐藏。