如何使用 Power BI Embedded 访问单租户 Azure 分析服务器

How to access single tenant Azure Analsysis Server with Power BI Embedded

所以,目前我很难理解如何设置 Power BI Embedded 以便每个客户都可以从他们自己单独的 Azure 分析服务访问数据,这是一个 App Owns Data情况。 Analysis Services 将 运行 处于内存模式,并将通过 Live Connect 从 Power BI 访问它。

理想情况下,我希望 Power BI 报告忽略数据 set/data 源,直到为嵌入式报告提供一个参数(例如连接字符串),报告解释该参数以便它知道要访问哪个服务器连接至。因此,理想情况下有:一个工作区、一个报告和零个(或伪造的)数据集。

以下大致是我想要做的(注意红色和蓝色流访问不同的服务器):

看起来,如果我为每个客户同时创建一个报告和数据集,我可以实现我的目标,但这似乎是一个糟糕的方法,因为如果需要更新报告,这可能涉及更新数百个报告。当所有 Power BI 需要为每个请求更改的是指向数据源的连接字符串时,创建数百个报告似乎也是不必要的开销。

那么是否可以在所有客户之间共享工作区和报告但具有完全独立的数据源?还是我的方法与 Power BI 预期的运行方式相冲突?

迄今为止,我在 Power BI Desktop 中配置数据源时尝试使用 Query Parameters,但出现以下错误:

The connect live option for this file is disabled because it already contains data from another data source. You cannot explore live data and connect to another type of data source in the same file.

请注意,

Power BI 中的每个报表只能连接到一个数据集。 无法即时动态更改连接字符串。

目前,在可预见的将来,您必须为每个客户(或每个连接设置)克隆报告和数据集,并修改新数据集的连接字符串以匹配。

然后您可以根据客户的需要动态选择要显示的报告。

可以使用以下方法克隆报告:

POST https://api.powerbi.com/v1.0/myorg/reports/{report_id}/Clone

POST https://api.powerbi.com/v1.0/myorg/groups/{group_id}/reports/{report_id}/Clone

https://msdn.microsoft.com/en-us/library/mt784674.aspx

更改连接字符串将使用:

POST https://api.powerbi.com/v1.0/myorg/datasets/{dataset_id}/Default.SetAllConnections (类似 API 组)

https://msdn.microsoft.com/en-us/library/mt748181.aspx

使用 Power BI 团队提供的 C#.NET 库,您将使用

Reports.CloneReport(string reportKey, CloneReportRequest requestParameters)

Datasets.SetAllDatasetConnections(string datasetKey, ConnectionDetails parameters)