我有一个(内部的)SSAS(多维)多维数据集,具有与Power BI的实时连接。然后,必须将其显示在具有Power BI Embedded的门户中。我使用的方法是:“应用拥有数据”并使用“主用户”帐户。这部分有效。
但是当我尝试添加行级安全性(RLS)时,它会不断出错。该报告将显示给客户(组织外部)。根据他们的登录信息(认证由门户网站本身持有),他们需要查看自己的数据。
我尝试使用JSON脚本进行连接,添加用户名,角色,数据集和customdata。用户名包含实际的活动目录用户名,该用户名在SSAS中具有权限。customdata包含我要过滤的部分。目前已将角色“ Test”用于测试目的。
角色'Test'是在具有读取权限的SSAS中设置的,而特定的'公司'维是通过以下“允许的成员集”设置的:STRTOMEMBER('[Dim Company]。[BK_Company]。&[{'+ CUSTOMDATA()+'}]')]
这基于使用此方法作为解决方案的另一个主题。
我已经尝试使用USERNAME()作为RLS的过滤器,但是似乎我只能在此字段中使用实际的帐户名。我们当前的活动目录中未包含所有客户名称。
var rls =新的EffectiveIdentity(@“ domain \ powerbiportal”,新的列表{report.DatasetId},新的列表{“ Test”},“ 19164”);
var tokenRequest = new GenerateTokenRequest(“ view”,identities:new List {rls});
var tokenResponse = client.Reports.GenerateTokenInGroupAsync(“ [ID]”,report.Id,tokenRequest).Result;
发送JSON
{
“ accessLevel”:“视图”,
“身份”:[
{
"username": "domain\\powerbiportal",
"roles": [
"Test"
],
"datasets": [
"[dataset]"
],
"customData": "19164"
}
]
}
我得到的错误如下:
操作返回了无效的状态代码'BadRequest'
联系Microsoft支持后,问题已解决。
首先,解决方案是在角色的“单元格数据”标签中取消选中“启用读取权限”框。在我的情况下,该单元是空的,但是由于某种原因,它仍然造成了问题。
第二,要过滤的语句必须是:{STRTOMEMBER('[Dim Company]。[BK_Company]。&['+ CUSTOMDATA()+']')}代替STRTOMEMBER('[Dim Company]。[BK_Company]。&[{'+ CUSTOMDATA()+'}]')]
感谢Microsoft的支持