Windows 10 App insights with Cortana
My need was to quickly visualize a report of one of my published apps in the Windows Store. I just wanted a quick way to see the rating, the number of reviews and the active users. These information were all already available but scattered over many websites: mobile engagement, hockey app and windows store analytics to name a few. So I decided to bring all the data together and summarize them in a single view. What better of Cortana to visualize the report?
In order to achieve this I created a really simple solution composed by:
- Asp.Net REST web service (hosted on Azure as API app)
- PowerBi dashboard
The web service has the responsibility to extract the data from all the sources and to expose the data as lists of items (JSON). In my case for sake of simplicity I choose to track active users with a custom monitoring implementation (an alternative is to export the data from Mobile Engagement API). This service is also able to pull all the app reviews from the windows store as detailed in my previous blog post .
PowerBi is obviously the main part in this solution, it allowed me to quickly import the data from my web service and quickly transform the lists in fancy charts. The Cortana integration is provided by PowerBi and is really simple to setup:
- Import all your sources (i.e: the web service URL)
- Create a new report and configure it to work with Cortana:
- set the page size to "Cortana"
- set the keywords to use
- Create the visualizations (charts)
- If working with PowerBi Desktop client then publish the report to PowerBi online
Last point is to enable the Cortana integration and the scheduled refresh for each dataset:
- Go to powerbi.com
- Go to settings page, Datasets -> Your Dataset
- Enable the Scheduled Refresh
- Q&A and Cortana -> Allow Cortana to access this dataset
After the publish it took a while before to be ready for Cortana but once done was really straightforward to use. To get the report I just need to write one of the specified keywords in Cortana and wait until a match is found (actually when the PowerBi icon is shown):
This report is available only on the devices where I synchronized the PowerBi account.
Of course this is a really simple solution, just a proof of concept (PoC) of what a real solution can be. In case of an huge set of data I would also introduce some additional caching layers to store and organize the data in a more consistent way.
Note that I created a middle tier web service that aggregates the data from multiple sources only because some of them were not "PowerBi ready" ! In a more simple way you can achieve a very similar solution without the need of a intermediate web service but just importing the Windows Dev Center content pack in PowerBi.