Before starting, this posts answers the question, Can we change the connection settings of the Power BI Embedded reports. YES. Let’s continue.
Azure Power BI Embedded is a great tool for developers to integrate reports and dashboards in the applications. You can read about what Azure Power BI Embedded is and how to use it in your application in this documentation.
The moment a feature is supported there comes the questions of how to fit it in the developer pipeline or the modern automated CI/CD DevOps process.
This article focuses on how to develop and deploy the Power BI Embedded applications in your automated CI/CD DevOps pipeline.
In order to make this works, we need to solve the burning question, can we change the connection settings of a published report in Power BI Embedded ? Answer is YES.
Power BI Embedded SDK has the support for this. In Azure Power BI Embedded we have the Workspace collection which is a container for the Workspaces. We publish our reports inside a workspace which is another container for our reports (.pbix files).
In the SDK a report is consists of two components. They are the DataSet object and the Report object. DataSet has operations to update the connection settings. Bingo, that’s what we’re looking for.
Automation
Since we can change the DataSet configuration using the Power BI SDK, we can automate this process using a small command line in our TFBuild process.
Since each application is different and there’s no solid rule on how to do this, but I have explained a simple process you can follow.
Developer creates the reports in his/her development machine connecting to the development database. Then the developer adds the .pbix to the Visual Studio solution, something similar to what is shown in the below image.
The command line utility adds the reports to the specified workspace and set the DataSet connection properties and updates the application database with the Ids.
In my TFBuild I’ve added this build step and specified the required arguments.
So now my Utility command line will do the work for me when ever I do a check-in. Same way we can maintain the CI/CD pipeline in multiple environments. The image shows the idea.
When the command line utility runs it takes care of my reports and updates the connection settings.
Code Snippet for updating connection string
You can find this code in the Power BI Embedded sample in the Github. Check the line numbers from 212 to 236 in this file. https://github.com/Azure-Samples/power-bi-embedded-integrate-report-into-web-app/blob/master/ProvisionSample/Program.cs