我可以将动态查询参数传递给ASP.Net MVC中的嵌入式Power BI报表吗?

时间:2019-01-08 19:49:18

标签: asp.net-mvc-5 powerbi-embedded

我的问题是参考以下文档,该文档是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来实现吗?我感到困惑的原因是,文档指出,同时使用同一报告的不同用户将始终看到相同参数的值。

1 个答案:

答案 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过滤数据的更多信息。