如何将SQL查询转换为DAX?

时间:2019-05-24 12:45:43

标签: sql-server powerbi dax

我正在尝试将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将能够根据指定的国家/地区显示正确个人的正确数据,未分配国家/地区的用户可以查看所有数据。

1 个答案:

答案 0 :(得分:0)

相反,创建一个表或查询来为所有允许的对返回(UserId,Country)。将该查询作为名为UserCountry_RLS的表导入,通过双向交叉过滤将其与Country表建立关系,然后在其上放置一个简单的DAX RLS过滤器,并向报表用户隐藏。