如何使用 PowerBI 的行级安全性在网站上实施员工过滤器?
How can I use PowerBI's Row Level Security to implement an employee filter on a website?
我必须在网站上嵌入 PowerBI 记分卡视觉对象。我已经在 PowerBI Desktop 中设置了记分卡,看起来不错;记分卡的切片器过滤员工姓名。
我希望访问公司网站的员工只能在记分卡中看到他们的数据 - 换句话说,他们在网站上的存在会自动过滤记分卡以仅显示他们的统计信息。幸运的是,他们必须通过提供 Windows 凭据来登录公司网站。
我不知道该怎么做。我知道我必须使用 "Modeling" 选项卡的 "Security" 部分,并且我已经(成功地)使用以下代码为一个查看者创建了一个明确的角色:
'Table1'[Employee Name] = "John Smith"
当然,这仅反映了我单击时 John Smith 的统计数据"View as Roles."我认为为每个员工显式编写 DAX 代码片段是不切实际的,因为我的公司有 3000 多名员工。
任何人都可以分享任何说明,或指导我一些吗?
提前致谢。
我不得不处理类似的问题,尽管我们在 Power BI 服务中查看我们的仪表板,所以这是我熟悉的身份验证。这种形式的动态行级安全性的基础是,为指示的 table 中的每一行编写的表达式被评估为 True 或 False。
如果您的用户已登录,您将能够使用 USERPRINCIPALNAME() 确定身份。这是他们用来登录服务的电子邮件地址。
由于您正在显示特定于该用户的数据,因此您的数据中可能已经有他们的电子邮件。如果是这种情况,并且它只是您 table 中的另一个字段,您的验证行将类似于:
'Table1'[Email] = USERPRINCIPALNAME()
表达式的左侧是指您正在引用的行,而右侧将提供经过身份验证的用户的名称。如果现有数据中没有可用的,您可以使用 DAX 表达式从电子邮件列表及其关联名称中查找员工姓名。
在这种情况下,您只有一个角色,每个人都需要分配给该角色,上面的逻辑将确定他们可以看到哪些行。
这是一个简单的例子,每个员工只能看到自己的数据。可以通过使用用户及其相关记录创建 'security tables' 来扩展该模型,然后使用 CONTAINS() 函数来检查授权,但听起来您与个人应该能够拥有一对一的关系看看。
我必须在网站上嵌入 PowerBI 记分卡视觉对象。我已经在 PowerBI Desktop 中设置了记分卡,看起来不错;记分卡的切片器过滤员工姓名。
我希望访问公司网站的员工只能在记分卡中看到他们的数据 - 换句话说,他们在网站上的存在会自动过滤记分卡以仅显示他们的统计信息。幸运的是,他们必须通过提供 Windows 凭据来登录公司网站。
我不知道该怎么做。我知道我必须使用 "Modeling" 选项卡的 "Security" 部分,并且我已经(成功地)使用以下代码为一个查看者创建了一个明确的角色:
'Table1'[Employee Name] = "John Smith"
当然,这仅反映了我单击时 John Smith 的统计数据"View as Roles."我认为为每个员工显式编写 DAX 代码片段是不切实际的,因为我的公司有 3000 多名员工。
任何人都可以分享任何说明,或指导我一些吗?
提前致谢。
我不得不处理类似的问题,尽管我们在 Power BI 服务中查看我们的仪表板,所以这是我熟悉的身份验证。这种形式的动态行级安全性的基础是,为指示的 table 中的每一行编写的表达式被评估为 True 或 False。
如果您的用户已登录,您将能够使用 USERPRINCIPALNAME() 确定身份。这是他们用来登录服务的电子邮件地址。
由于您正在显示特定于该用户的数据,因此您的数据中可能已经有他们的电子邮件。如果是这种情况,并且它只是您 table 中的另一个字段,您的验证行将类似于:
'Table1'[Email] = USERPRINCIPALNAME()
表达式的左侧是指您正在引用的行,而右侧将提供经过身份验证的用户的名称。如果现有数据中没有可用的,您可以使用 DAX 表达式从电子邮件列表及其关联名称中查找员工姓名。
在这种情况下,您只有一个角色,每个人都需要分配给该角色,上面的逻辑将确定他们可以看到哪些行。
这是一个简单的例子,每个员工只能看到自己的数据。可以通过使用用户及其相关记录创建 'security tables' 来扩展该模型,然后使用 CONTAINS() 函数来检查授权,但听起来您与个人应该能够拥有一对一的关系看看。