Hosting Power BI Content – 1/6

Data storage and availability have enormously increased and there is not doubt that this trend will continue to point up and upper. Huge data store facilities, widespread coverage of high-speed broadband inter-networking have posed the basis for new Information Technology revolutions like Big Data, Cloud Computing and IoT.

In this environment we are assisting to a significant paradigm shift in the application domain as well: most of us are too young to remember when we bought our amazing word processor as a bunch of floppy disks. Floppies don’t exist anymore but many applications today are still delivered through hard media like CDs or DVDs. However, I almost don’t remember the last time I installed something from a disk, despite installing applications or updates almost every day. That’s because I can find everything I need on the internet and I can download installation files in seconds or minutes. Yet this is not the last frontier when it comes to application software; the number of cloud applications is rapidly increasing and mainstream utility software like word processing or email management do not require the user to install anything, just open your favorite internet browser and navigate to the appropriate online application portal.

One of the areas where this shift is occurring is reporting. Business Intelligence portals are a reality nowadays; you open them, fill them with your data and create rich interactive report pages; all without installing anything on your business premises. Microsoft Power BI (PBI) is one of them. The Power BI experience is, in summary:

  • Register with the Power BI portal, to create an account
  • Create and populate data resources, namely Datasets (DS)
  • Create and compose graphical interactive representations of the DS, usually named Reports
  • Optionally, collect reports in overview pages, called Dashboards
  • Distribute resources in named container repositories, a.k.a. Groups or Workspaces

PBI elements can then be made accessible to the public, which allows those with a PBI account to see them.

PBI offer free accounts for those who only need basic features, yet it wouldn’t be a good policy to force everyone willing to simply see reports to register for an account. Moreover, often reports are not consulted “per se”, but are part of larger web pages or presentations, together with additional textual or graphical content.

This is why PBI is not only a cloud reporting application, but a full fledged software toolbox of components, including web services (REST), developer API (SDK) and Azure backed authentication and authorization cloud protocols.

Project Overview

In this series I will present a recent project I have completed, whose objective is to create a web application that embeds PBI reports. The company have a Business Intelligence (BI) team that creates PBI content based on production data saved in a few data warehouses. However, the majority of the workforce is not concerned in creating or modifying the reports, but only in seeing them, so the portal embeds the reports inside the web page and doesn’t require the user to be logged into PBI. Further to this, the navigational experience can be completely customized, while at the time of writing the customization of the native PBI portal is limited.

Technology

Host Computer

  • Windows Server machine with IIS 7.5
  • .NET 4.0

Development Computer

  • Windows 10
  • Visual Studio 2017 Community Edition

Programming Languages

  • F# => 90%
  • HTML5 + javascript => 10%

Thanks to WebSharper, a significant part of the client code has been written in F# and translated to javascript by the WebSharper transpiler.

Libraries/Packages

Server side

  • WebSharper sitelets
  • Power BI .NET SDK

Client side

  • WebSharper.UI.Next
  • Power BI javascript API
  • JQuery
  • Bootstrap

Conclusion

In this first post I present a project I have worked on, creating a web application that embeds Power BI content. The following posts will go deeply inside the project and analyse the source files one by one. The full project is available in github.

Stay tuned.

 

Leave a comment