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

Can I pass a dynamic query parameter to an embedded Power BI report in ASP.Net MVC?

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

"Note that the parameters are based on the dataset, so they are defined per report/dashboard, but not on the user’s session level. It means that different users who are using the same report at the same time will always see the same parameter’s value."

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

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

在这种情况下,参数不是很好的选择。使用 API 您可以更改它们的值,但这些值存储在报表本身中,所有打开这些报表的用户都会受到参数值更改的影响。

您应该使用过滤器来实现。假设您的模型中有一个名为 SchoolData 的 table,其中有一个名为 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 等)。

有关如何使用 Power BI Embedded 筛选数据的更多信息,请参阅 Filters 文档。