Power BI Screenshot Automation

Image

Filters, Clicks & Saves!

Consider the following situation…

Your Power BI dashboard is perfect! Thoughtfully structured and beautifully implemented.

Filter Option in Dashboard

But when it comes to monitoring it, you find yourself traversing through the numerous state-filter values, “Alabama, Arizona, Arkansas, California, Colorado…” saving the dashboard state for each value, and then manually arranging them in a PowerPoint Presentation.

This is nothing short of a crime, in today’s fast-paced automated world!

Microsoft’s Power BI is a continuously evolving and immensely powerful data visualization and business intelligence tool, with its simple, streamlined, and powerful structure making it a popular choice for thousands of individuals and organizations worldwide to aggregate, analyze, visualize, and share their data.

However, to tackle situations like the one mentioned above, and to automate the post-dashboard development management system, we created a system that accomplishes the following tasks:

Tasks Management

Overview

Dynamically changing the specified filters

In this step, the program generates a list of URLs, each corresponding to a dashboard filtered by a particular filter value. This is accomplished by adding the “query string parameters” in the URL of the published dashboard.

For changing the filters using query string parameters, consider the following syntax,

DASHBOARD_URL?filter= <table >/ <field > <operator > ‘value’

where,
DASHBOARD_URL - The URL of the published dashboard
<table> - The name of the filter with the filtering column
<field> - The name of the column used for filtering ‘Value’ - The filtering value
<operator> - The operator that needs to be used to filter the dashboard

Symbol

Full-Form

Example

and

and

Sheet/Sales le 200 and Sales gt 3.5

eq

equals

Sheet/Campaign eq 'Campaign2'

ge

Greater than or equal to

Sheet/Sales ge 10

gt

Greater than

Sheet/Sales gt 10

in**

including

Sheet/Sales in (10, 200)

le

Less than or equal to

Sheet/Sales le 100

lt

Less than

Sheet/Sales lt 100

ne

Not equal

Sheet/Campaign eq 'Campaign3'

Multiple filters can be added to different fields

Suppose a dashboard is to be filtered on the basis of ‘State’ (equal to Alabama) and ‘Product Category’ ( equal to ‘Decorations’) DASHBOARD_URL?filter= State_Regions/State eq 'Alabama' and Products/Product_x0020_Category eq 'Decoration’

Sales Report Dashboard

Special Characters in String Queries

Very often, our tables and columns are named such that they contain special characters (spaces, dashes, or other non-ASCII characters). E.g.. ‘Product Category’, ‘State Names’, etc
Such names need to be modified in order to be used in dynamic filtering using query parameters. They must be replaced by their _UNICODE_

Company

Contact

Country

Alfreds Futterkiste

Maria Anders

Germany

Centro comercial Moctezuma

Francisco Chang

Mexico

Ernst Handel

Roland Mendel

Austria

Points to Remember

  • All special characters must be replaced from the table and field name by the UNICODE (with ‘_’ at the start and end)
  • Table and field names must not start with capital letters ‘INF’, eg. ‘INFORMATION’, such names must be saved in lowercase in the dashboard itself to be used in such a system.
  • Table and field names are case-sensitive
  • The ‘Value’ parameter is NOT case-sensitive

Implementation

Taking User input and Generating the URLs

REQUIRED INPUT:

  • The base URL of the dashboard which is published on the workspace
  • Table name
  • Field name
  • Filename and location consisting of the distinct filter elements
  • User ID and password of the Microsoft Workspace (It can be hardcoded in the program)

INPUT:

URL Generated

URL GENERATED:

Input

  • ‘chromeless=“True”’ is added in order to open the dashboard in full-screen mode
  • Each URL opens the dashboard filtered by a specific Campaign value
  • The space between the words in the file name “Sheet1 Main” is substituted by its UNICODE

Clicking Screenshots of Filtered Dashboards

For accessing the different dashboard instances with different filters applied, the main automation tool used is ‘Selenium’. Python and Selenium are widely used in automation testing and prove to be highly efficient while interacting with web browsers, they are open source, fast, and support multiple devices and operating systems.
Selenium web driver is a framework used to accept and send various commands to the browser and communicate directly with it. Other than Python, this framework can also be used with the following,

Languages - Java, C#, PHP, Perl, and Ruby
Browsers - Google Chrome 12.0.712.0 and above, Mozilla Firefox, Safari, Opera 11.5 and above, iOS, HtmlUnit 2.9 and above, Android, and Internet Explorer
Operating Systems - Linux, Windows, Mac OS, Solaris

Extra features are added to the web driver's ‘options’ such as the ‘Headless Chrome version’ which allows the program to access the websites without the Graphical User Interface (GUI), which is also referred to as the ‘Head’. The Python package ‘pillow’ or PIL is used to view the screenshots taken by the program. Additional Python packages include ‘time’, and ‘By’, used to instruct the program to halt while the website loads, and to sign in to any accounts (using the find_element and send_keys commands), if required.

Points to Remember

  • Ensure that all the dependencies have the correct path set
  • The ‘Web driver’ path should be the same as the latest compatible browser’s path
  • Ensure that the program handles the website load time delay
  • Screenshots can be cropped in order to get the required elements only

Placing the images into different slides of a PPT

For this, the ‘pptx’ library in Python is utilized to create and update PowerPoint files. In this step, a PowerPoint file is created and for every screenshot taken, an image ‘placeholder’ is recursively added to a new slide, and its size and length-width ratio are adjusted according to the image.

Points to Remember

  • The images should only be arranged in an image placeholder
  • Additional text placeholders and texts can be added along with the images on each slide

Written by:

Drishti Goel

NeenOpal

LinkedIn

Related Post

Leave a Reply