Skip to content

snobu/powerbi-embed-v2

Repository files navigation

Power BI Embedded with Custom Controls PoC (that's Proof of Concept, not the other thing)

This demonstrates the App Owns Data (3rd party embedding) approach.

Demo uses the Power BI Sample Procurement Analysis report from the Power BI sample gallery (Get data).
Publish to App Workspace, not My Workspace, this is important. It should be the only report in your App Workspace, otherwise you'll need to change the backend to return its index from the result array.

Material Design controls borrowed from Creative Tim.
TODO: Swap Material Design for Fluent Design System (Project Neon).

Screenshot

You can test drive the demo here: http://powerbi-static-frontend.azurewebsites.net/ Demo is broken once again, because demo things expire. Maybe one day... one day.

Original contributors (Microsoft):

Community contributors (thank you!):

Pull Requests are more than welcome.

Legend

backend-as-func
C# HTTP Trigger Azure Function acting as backend (returns embed token).

Needs some hacking as it can only handle 1st report in a given workspace by ID

root dir
A Flask application containing both frontend and backend (in Python this time):

  • Copy config.template.yml to config.yml and add your secrets
  • to run app locally with Flask, just run python app.py
  • to run your app locally as a docker container, run python util.py run_docker
  • To publish your app to Azure App Service (linux Web App as docker container), run python util.py create_app or python util.py create_app --dry to just print the commands
  • to delete your app, run python util.py delete_app

Oauth Dance Gif Last frame of this GIF is conviniently provided as PNG.

Slide borrowed from this highly recommended video on v2 embedding -

Hangouts Video

What's new 20.09.2017

  • Configuration is done via yaml file config.yml. It must be copied from config.template.yml. config.yml is ignored by git and docker
  • Configuration takes report name and workspace name
  • Added some python scripts to automate tasks, see util.py
  • Run docker locally python util.py run_docker
  • Set env variables from yaml file python util.py setenv
  • Create web app python util.py create_app [-d|--dry]
  • Delete web app python util.py delete_app