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

问题描述

我的问题是参考以下文档,它是 Power BI Embedded Query Parameters API 的一部分,位于https://azure.microsoft.com/en-us/updates/power-bi-embedded-query-parameters-api/

“请注意,参数是基于数据集的,因此它们是按报表/仪表板定义的,而不是在用户的会话级别上定义的。这意味着同时使用同一报表的不同用户将始终看到相同的参数值。”

我们计划将使用 Power BI 创建的仪表板嵌入到我们的 .Net MVC 应用程序中。许多学校用户(组织外部和不同学校)将登录以访问这些报告。

让我们假设来自 5 所不同学校的 5 位用户正在尝试访问一个仪表板,该仪表板已参数化以根据他们的学校显示数据。我可以使用 Power BI Embedded 来实现这一点吗?我感到困惑的原因是文档指出同时使用相同报告的不同用户将始终看到相同参数的值。

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

解决方案


在这种情况下,参数不是很好的选择。使用 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
}

然后在嵌入配置详细信息中传递此过滤器:

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 等)。

有关如何使用 Power BI Embedded 筛选数据的详细信息,请参阅筛选器文档。


推荐阅读