1

我有一个(本地)SSAS(多维)多维数据集,与 Power BI 有实时连接。然后它必须显示在带有 Power BI Embedded 的门户中。我使用的方法是:“应用程序拥有数据”并使用“主用户”帐户。这部分有效。

但是当我尝试添加行级安全性(RLS)时,它不断给出错误。该报告将显示给客户(组织外部)。根据他们的登录信息(身份验证由门户本身持有),他们需要查看自己的数据。

我尝试连接,使用 JSON 脚本,添加用户名、角色、数据集和自定义数据。用户名包含在 SSAS 中具有权限的实际活动目录用户名。customdata 包含我要过滤的部分。角色“测试”当前用于测试目的。

角色“测试”在 SSAS 中设置为具有读取权限,特定“公司”维度设置为使用以下“允许的成员集”:STRTOMEMBER('[Dim Company].[BK_Company].&[{'+CUSTOMDATA() +'}]')

这是基于使用此作为解决方案的另一个主题。

我曾尝试使用 USERNAME() 作为 RLS 的过滤器,但似乎我只能在此字段中使用实际帐户名。我们当前的活动目录中没有包含所有客户姓名。

var rls = new EffectiveIdentity(@"domain\powerbiportal", new List { report.DatasetId }, new List { "Test" }, "19164");

var tokenRequest = new GenerateTokenRequest("view", identities: new List { rls });

var tokenResponse = client.Reports.GenerateTokenInGroupAsync("[ID]", report.Id, tokenRequest).Result;

发送 JSON

{

“访问级别”:“视图”,

“身份”:[

{

  "username": "domain\\powerbiportal",

  "roles": [

    "Test"

  ],

  "datasets": [

    "[dataset]"

  ],

  "customData": "19164"

}

]

}

我得到的错误如下:

操作返回了无效的状态代码“BadRequest”</p>

4

1 回答 1

1

联系 Microsoft 支持后,问题已得到解决。

首先,解决方案是取消选中角色“单元格数据”选项卡中的“启用读取权限”框。在我的情况下,单元格是空的,但由于某种原因,它仍然产生了问题。

其次,要过滤的语句必须是:

{STRTOMEMBER('[Dim Company].[BK_Company].&[' + CUSTOMDATA() + ']')}

代替

STRTOMEMBER('[Dim Company].[BK_Company].&[{'+CUSTOMDATA()+'}]')
于 2019-11-21T14:56:49.470 回答