I wrote this blog post with Alberto Ferrari.
A few days ago, during the Build conference, Microsoft announced the availability, although still in preview, of Power BI Embedded. In a few words, Power BI Embedded lets you embed Power BI reports in your application, taking advantage of the tools in Power BI to enrich the analytical power of your application. Users do not have to authenticate with the Power BI service. In fact, they do not even need a Power BI account. Your application performs the necessary steps to authenticate a user and then, it uses App Tokens to request for report rendering. App Tokens are generated by the Power BI service when your application requests them, providing the necessary keys associated with your Azure subscription.
Power BI embedded is priced using renders. Currently, the price is 2.50 USD per 1,000 renders, and the first 1,000 renders in a month are free. A render is the production of a visual in a report, so a single report requires one or more renders (a dense report will be more expensive).
The first step to use Power BI Embedded is to activate the service in Azure, by means of creating a Power BI Workspace Collection. A workspace collection, as its name implies, is a set of workspaces. A workspace can contain datasets, reports and dashboards, same as it is happening today with the Power BI workspaces you work with when you are connected to the Power BI service.
You can add items to a Power BI Embedded workspace by uploading a PBIX file generated with Power BI Desktop. Connection strings, data model, measures and calculated columns, visual interactions and all other functionalities of Power BI are uploaded along with the model and available for your reports. This is, at least, the experience during the preview. As soon as the product reaches general availability, the development experience might be different and, as of today, there are no information about how it will work when released (hopefully you will be able to automate the creation of the model and its data refresh). Nevertheless, in this early phase, the option of using Power BI Desktop for development is awesome, as it leverages a well-established technology to author the reports, although it means that – as of today – you cannot add a dashboard to a workspace collection, because Power BI Desktop does not have a dashboard authoring feature, it stops with reports. Another limitation that exists during the preview is that you cannot refresh data, unless you upload a new version of the PBIX file. If you need to work with live data, today the only option is to leverage DirectQuery connections, along with all the limitations that come from that.
Once the workspace collection is in place, your application needs to connect to the service and generate an App Token by providing the needed key (which you have to store in the application itself). Once the application has an App Token, it can interact with the user the way it needs and, when it is time to produce a dashboard, it provides the App Token to the service again requesting the rendering of one or more reports. Power BI takes care of handling the report rendering and visual interactions.
In order for the entire reporting system to work, the Power BI service needs to be able to connect to the data source. This can be very easy, if the data source is already in the cloud, or it requires some additional refreshing steps if the data source is on premises and not connected to the service. In such a case, you have to publish to the Power BI cloud service an updated version of the PBIX file using the Power BI Embedded API.
So far, so good, it looks like Microsoft created yet another library to show dashboards inside an app. Why do we believe this is huge, not just yet another reporting app?
- It uses the very same tools your users are probably using in Power BI to gather insights.
- It does not have a starting price: you pay for what you use. The more customers are using your application, the more you pay for. By using a similar approach (pay per use) you can limit the initial investment to build a real analytical system in your application
- It does not provide you a simple reporting tool. It provides a modeling tool where you build a data model through a Power BI Desktop file, along with measures, ETL steps with Power Query, calculated columns and tables. Thus, in order to provide analytics to your application, you do not need to focus on how to build a given report. Instead, you will focus on how to build an analytical model on top of which, later, you will build reports.
This latter change is, in our opinion, the most important of all. A simple shift in the way you think at reporting inside an application might open a whole bunch of new features and help democratizing Business Intelligence. For example, it is easy to think at standard reporting provided inside the application and, for advanced users that require more power, ISV can provide Power BI Desktop files that can be customized and later deployed on Power BI to perform custom analytics.
It is important to note that this preview is not a complete solution for any ISV. Today there are no APIs to programmatically create a PBIX file. This results in strong limitations for automating the creation of a custom data model depending on parameters defined by the application created by the ISV. An API to create a PBIX file or to manipulate a data model published on the server would be an important advancement to create a fully functional ecosystem for the ISVs. We hope this is only the first step in that direction.