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

How to edit Power BI Desktop document parameters or data sources programmatically with C#?

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

我还有一个 C# 应用程序,它应该从这个模板生成 Power BI Desktop 报告。
如何以编程方式创建具有特定参数的报告?
当您打开 .pbit 模板文件、输入参数并生成 .pbix 文档时,Power BI Desktop 之类的东西会自动执行。

我没有找到任何适用于 Power BI Desktop 的 SDK\Interop 库。
我尝试以 ZIP 格式打开文档,但 DataModel 文件已存档,因此格式不正确 XML.
我也尝试将此参数提取到 JSON 文件并将其作为数据源加载,但 Power BI 不支持相对路径。

没有 SDK 或 API 可用于执行此操作。如果将此报表发布到 Power BI Online,则可以使用 Update Parameters and Update Parameters In Group REST API 调用来更改参数值。我相信 Power BI 报告服务器有类似的东西 API,但我没有使用它的经验。

您可以尝试在线发布报告并保存(不需要与任何人共享)。当你需要一个带有某些参数值的报告时,调用上面的API方法来改变值,然后使用Export Report or Export Report In Group方法下载修改后的.pbix文件。它很丑而且不是线程安全的,但可能会工作...

你说你查看了提取的 .pbix 中的 DataModel 文件。我认为参数和 M 查询在 DataMashup 中(搜索 RootFormulaTextReferencedQueriesFormulaText 文本以找到它们)。服务器和数据库名称也在那里。您可以相对轻松地修改 M 查询、现有参数的值或 server/database 名称,并尝试重新打包 .pbix 文件。它可能有效,但看起来极不受支持。

我尝试使用 SSMS 连接到 Power BI Desktop 中报表的 SSAS,但我没有找到以这种方式修改参数值的方法。不过,我可以在源查询中看到它们的值(如果参数用作过滤器)。

我正在使用类似的东西,但不是参数,而是将报告嵌入到我的应用程序中并使用 filters。这样所有用户都可以访问同一份报告,我不需要 "tailor" .pbix 来满足他们的特定需求。

恐怕这不是解决您问题的答案,但我希望它能给您一些想法,您可以做什么或不能做什么!