我在asp.net mvc应用程序中嵌入了power bi报告。它工作正常,正在显示数据。我遇到一个问题,在我的应用程序中,每个客户都有几个分支机构,例如城市。该客户端的每个用户都可以访问全部或部分分支,并且基于该访问,我们将在该用户登录系统时显示数据。
我想在Power Bi中实现相同的功能,即当用户登录系统并查看报告时,它应该显示他/她有权访问的分支的数据。我找到了一个解决方案 [Can I pass a dynamic query parameter to an embedded Power BI report in ASP.Net MVC?,我们可以在程序端设置过滤器值。我认为此方法适用,但是我仍在获取所有数据。
const branchFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "tblWorkhistory",
column: "BranchID"
},
operator: "In",
values: [1],
filterType: models.FilterType.BasicFilter
}
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
permissions: models.Permissions.All,
viewMode: models.ViewMode.View,
filters: [branchFilter],
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
在这里我想应用过滤器,它将仅显示id为1的分支的数据,但它显示所有数据。我在这里想念什么吗?在此代码之后我还需要做任何报告方面的事情吗?
关于, 稀树草原
答案 0 :(得分:1)
支持使用embed config应用过滤器,并且您共享的代码示例似乎有效。
如果report.setFilters也失败,则表明过滤器出现问题。
尝试验证过滤器的数据类型,应为1还是“ 1”?
如果这不起作用,.setFilters请求是否返回任何错误消息?:
const filter = { ... };
report.setFilters([filter])
.catch(errors => {
// Handle error
});
了解更多here有关通过JS SDK设置过滤器的信息。
答案 1 :(得分:0)
要显示基于登录到您的应用程序的用户的数据,您必须先在Power Bi报告中应用行级安全性(RLS),然后按照以下https://docs.microsoft.com/en-us/power-bi/developer/embedded-row-level-security条中的步骤进行操作