我的问题是参考以下文档,该文档是https://azure.microsoft.com/en-us/updates/power-bi-embedded-query-parameters-api/上Power BI Embedded Query Parameters API的一部分
”请注意,参数是基于数据集的,因此它们是按报告/仪表板定义的,而不是基于用户的会话级别定义的。这意味着,同时使用同一报告的不同用户将始终看到相同参数的值。“
我们计划将使用Power BI创建的仪表板嵌入到.Net MVC应用程序中。许多学校用户(组织外部和不同学校的用户)将登录以访问这些报告。
让我们假设来自5个不同学校的5个用户试图访问仪表板,该仪表板已参数化以显示其学校的数据。我可以使用Power BI Embedded来实现吗?我感到困惑的原因是,文档指出,同时使用同一报告的不同用户将始终看到相同参数的值。
答案 0 :(得分:1)
在这种情况下,参数不是很好的选择。使用API可以更改其值,但是这些值存储在报表本身中,所有打开这些报表的用户都将受到参数值更改的影响。
您应该使用过滤器来实现。假设您的模型中有一个名为SchoolData
的表,其中有一个名为SchoolId
的列。将报表嵌入应用程序时,请为此列定义一个过滤器,例如像这样:
const basicFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "SchoolData",
column: "SchoolId"
},
operator: "In",
values: [1],
filterType: models.FilterType.BasicFilter
}
然后在embed configuration details中通过此过滤器:
var config = {
type: embedType,
accessToken: accessToken,
tokenType: tokenType,
embedUrl: embedUrl,
id: embedId,
dashboardId: dashboardId,
permissions: permissions,
filters: [basicFilter],
settings: {
filterPaneEnabled: true,
navContentPaneEnabled: true
}
};
其中1
是与当前登录用户相对应的值。每次在报告显示在您的应用程序中时,请根据当前用户(即2、3、4等)进行更改。
Filters文档中提供了有关如何使用Power BI Embedded过滤数据的更多信息。