Code Monkey home page Code Monkey logo

powerbifiddler's Introduction

PowerBIFiddler

PowerBIFiddler is a custom Fiddler inspector extension that allows you to view Power BI metadata and tile refresh HTTP request payloads in plain text.

By default, Power BI sends tile data compressed and base64 encoded. It is difficult to debug - especially when you have a real-time dashboard and data is quicking streaming in. Without PowerBIFiddler, you'd have to copy that data and manually decode and decompress it using a custom built tool. This extension automatically decodes and decompresses it for you and displays it in a new Fiddler Inspector response tab.

The encoded and compressed version looks like this:

tileDataBinaryBase64Encoded=H4sIAAAAAAAEAE2OPQuDQAyG/0tmh2tLl1t1qLRCQehSOoS7gAfnKbk4iPjfG6UFyfR+POFdwFN2HEYZGOwCLUVyAva9wD0kD/ZcwAvjRGChMbB+1gJ6EvQoqH1VPu9gpUbb4Uh5h2tFoWoNFPDk0CPPt0CM7Lr5kDdbXqcsmNwPLDG6KaKEIR0+7cX/jpO5mstj26KnfC6HfowkmglPpO76BbPzFb3XAAAA

The new and improved decoded and decompressed version looks like this:

tileData={"descriptor":{"Select":[{"Kind":2,"Value":"M0"}]},"metadata":{},"dsr":{"DataShapes":[{"Id":"DS0","PrimaryHierarchy":[{"Id":"DM0","Instances":[{"Calculations":[{"Id":"M0","Value":"10503L"}]}]}],"IsComplete":true}]}}

How to Install

MSI

Run the PowerBIFiddler.msi found on the releases page. It will copy the PowerBIFiddler.dll and Newtonsoft.Json.dll files to your local C:\Users\{user}\Documents\Fiddler2\Inspectors directory.

If you use Edge or IE, it may tell you that the MSI is corrupt or invalid because I haven't signed it with a valid cert. You can choose to accept the warning and install or use the Zip install option below.

Zip

Unzip the PowerBIFidder.7z file found on the releases page to your local C:\Users\{user}\Documents\Fiddler2\Inspectors directory.

Make sure you have .NET 4.6.1 installed.

How to Use

PowerBIFiddler supports two types of requests: metadata and tile refresh.

Metadata

When you first hit PowerBI.com it will make a metadata request to get all the metadata required to render Power BI based on your preferences and previous state. This request also contains the tile data from the dashboard you had open when you last closed Power BI. That tile data is also compressed and base64 encoded.

The metadata url is /powerbi/metadata/app?dashboardObjectId={guid}

When you navigate that JSON payload with PowerBIFiddler you will see a child "dashboards" node and the default dashboard will have a "tiles" node, which contains the new decompressed and decoded tileData property.

Tile Refresh

When you setup a real-time dashboard, Power BI will send a "subscribe" HTTP request and will get a "tiles" data response.

When you click on the "tiles" response you will see the new tileData property in the new "Power BI" inspector tab.

Development

  • If you want to build compile the installer project, you'll need to install the Visual Studio 2015 Installer Project Plugin. If you don't want to compile the installer, then just ignore the unsupported project type warning when you load the solution.
  • The Fiddler.exe and Standard.dll references might not be mapped in VS correctly. If that is the case, then remove and re-add the references from C:\Program Files (x86)\Fiddler2\Fiddler.exe and C:\Program Files (x86)\Fiddler2\Inspectors\Standard.dll

powerbifiddler's People

Contributors

jongio avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.