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

时间:2019-01-21 17:40:30

标签: c# report powerbi

我有一个报表模板,该模板内置在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 个答案:

答案 0 :(得分:1)

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

您可以尝试在线发布报告并将其保存在该报告中(无需与任何人共享该报告)。当您需要带有某些参数值的报告时,请调用上述API方法来更改该值,然后使用Export ReportExport Report In Group方法下载修改后的.pbix文件。这很丑陋,而且不是线程安全的,但是可以正常工作...

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

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

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

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