如何使用C#编程编辑Power BI Desktop文档参数或数据源?

4

我有一个报告模板,是在Power BI Desktop中构建并保存为.pbix或.pbit文件。该模板使用DirectQuery SQL数据库作为数据源,其中服务器地址和数据库名称被提取到参数中。还有一个参数保存着ReportId,该参数用于查询。

Power BI window screenshot

我还有一个C#应用程序,旨在从此模板中生成Power BI Desktop报告。
如何以编程方式创建带有特定参数的报告?
类似于打开.pbit模板文件,输入参数并生成.pbix文档的Power BI Desktop自身的操作。

我没有找到任何针对Power BI Desktop的SDK或Interop库。
我尝试将文档作为ZIP打开,但是DataModel文件被归档,因此不是良好格式化的XML。
我也尝试将这些参数提取到JSON文件并将其加载为数据源,但是Power BI不支持相对路径。

1个回答

5

没有可用于此操作的SDK或API。如果您将此报告发布到Power BI Online,则可以使用更新参数更新组中的参数 REST API调用更改参数值。我相信Power BI Reporting Server具有类似的API,但我没有经验。

您可以尝试将报告在线发布并保留在那里(不需要与任何人共享)。当您需要带有某些参数值的报告时,请调用上述API方法以更改该值,然后使用导出报告对组导出报告方法下载修改后的.pbix文件。这很丑陋且不是线程安全的,但可能有效...

你说你查看了提取的 .pbix 文件中的 DataModel 文件。我认为参数和 M 查询在 DataMashup 中(搜索 RootFormulaTextReferencedQueriesFormulaText 文本以找到它们)。服务器和数据库名称也在那里。您可以相对轻松地修改 M 查询、现有参数或服务器/数据库名称的值,并尝试重新打包 .pbix 文件。这可能有效,但看起来极不受支持。
我尝试使用 SSMS 连接到 Power BI Desktop 中的报表 SSAS,但我没有找到通过这种方式修改参数值的方法。不过,我可以在源查询中看到它们的值(如果参数用作筛选器)。
我正在使用类似的东西,但是我将报表嵌入我的应用程序中,并使用filters。这样,所有用户都访问同一个报表,我不需要为他们特定的需求“量身定制” .pbix。
恐怕这不是一个能解决你问题的答案,但我希望它能给你一些想法,你可以做什么或不能做什么!

1
谢谢您的回复,这非常有用且详细!关于筛选器,我可以尝试将“ReportId”提取为报表级别的筛选器,但我还有数据库地址和名称。 Power BI Online听起来是最好的选择,我想我会研究一下这个。 - Yeldar Kurmangaliyev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接