This blog post covers the latest updates for Power BI Developers community. Don’t forget to check out the January blog post, if you haven’t done so already.

Power BI Embedded

T9857_ReportCreep_v3

Here is the list of February updates for embedded analytics.

Embed capabilities

- Embedded objects loading time improvements

- Mobile layout support

- Visual-level filters API

Automation & life-cycle management

- RLS- Support ‘CustomData’ function in Azure Analysis Services

- Capacity APIs

- Query Parameters API

- Update connection- additional data sources are supported

Power BI Embedded

- US Government cloud availability

- Azure Resource Monitor Metrics integration

 

Embed capabilities

 

Embedded objects loading time improvements

In the last few months we made a significant progress on improving loading time. In addition to the ‘Phased embedding’ API, we’ve done some Infrastructure work to reduce the size of embedded objects, hence reducing the time to render each one. All your users will enjoy this improvement, no additional code required here!

Mobile layout support

Embedding reports and dashboards on mobile devices is improving! Now we have added support for layouts that are optimized to consume on mobile devices.

For Reports, you can open report pages in ‘Phone Layout’ if they were created through Power BI Desktop. We added a new JavaScript API to check if a report page has a Phone Layout defined and embed it. It’s the optimal layout to use when devices are in ‘Portrait’ orientation. When devices are in ‘Landscape’ orientation, the optimal layout would be the original report layout. Using the JS API, you can switch views during the user’s session according to the phone layout, offering an optimal experience at any state.

When embedding a report with no mobile layout defined, you can still make it look good on a mobile phone using our ‘Custom Layout’ API to dynamically set the page layout. With this API, you can set the size of the page, the size of each visual and its location on the canvas, so that each device can get its own optimal layout without going back to Power BI Desktop.

For Dashboards, you can open them on mobile devices using the ‘One column’ layout, which sets all tiles in a single column, one above the other. As in the reports, this view is optimal for ‘Portrait’ orientation. You can switch back to original layout during the session as well. Learn more about configuring the dashboard layout to a single column. Pre-defined phone view for dashboards is not supported in this release, we will add this capability in the future.

Visual-level filters API

Additional APIs to support Get, Set & Remove filters on the Visual level. This API complements the Filters API already available on Report and page level, so now it fully covers the UI experience of the Filter Pane. Learn more about Visual level filters.

Automation & life-cycle management

Support ‘CustomData’ function in Azure Analysis Services

This feature enables an additional way to customize and filter the data retrieved from Analysis Services for each user’s session. It can help you build a specific view of the data that will be relevant only for that specific user. These features give the user only the data cared about, while denying access to data that shouldn’t be exposed to that user. As this operation is done on the Token generation, it is considered secured from Power BI side. Learn more about using CustomData for Power BI Embedded.

For those working with Azure Analysis Services, we added additional property on the Token generation, so that you can set the CustomData property on the Connection string. This property, in turn, can be used by the CustomData() function in Analysis Services.

The new CustomData property is added to the effective identity in the Token generation. The identity can be created using the following call:

public EffectiveIdentity(string username, IList<string> datasets, IList<string> roles = null, string customData = null);

The new property can be applied for all embedded objects- Report, Visual, Dashboard, Tile. The use of this new feature will work only on Azure AS. For SQL Server Analysis Services (SSAS) you can use CustomData as described in this blog post by Kasper De Jong.

Capacity APIs

Added automation APIs support assigning a workspace to a Premium/ Azure capacity. Currently, through the Power BI Portal, a Workspace Admin with capacity assignment permissions can access ‘Edit Workspace’ and choose a capacity to assign to a workspace.

Assign WS

This new API replicates this behavior. The API can be used to assign the workspace, un-assign it or move between capacities.

We also added ‘Get capacities’ API to get a list of all the capacities the user has access to (as capacity admin and/or assignment permissions). An additional property which states the capacity where a workspace resides, is available in the existing ‘Get groups’ API.

With these API additions to manage workspaces in capacities, we completed the automation story to onboard new customers, using workspace for each customer. Here are the main steps to automate the process:

  1. Clone workspace with the analytical content for a new customer.
  2. Connect the cloned content to the customer’s data source.
  3. Get the customer into production by assigning the cloned workspace to a dedicated capacity.

Query Parameters API

Query Parameters allow users to define parameters and make parts of their reports and data models (such as a query filter, a data source reference, a measure definition, etc.) dependent on one or more Parameter value(s). Parameters are defined on the PBIX file through Power BI Desktop. You can learn more on Query Parameters in this blog post.

Our new API enables developers to dynamically change the values of the Parameters and automate the process of working with them. The API includes a call to get all Parameters defined on a specific dataset, and a call to set Parameters values, that sets new values to existing Parameters.

With this new API, you can automate many processes for multiple customers. Few examples are:

  • Change connection string- By configuring Parameters on the connection string, you can use the API whenever you onboard a new customer. Just clone the report and change the Parameters values to connect to the customer’s Database. It can also help automate connection updates to data sources that are not supported through ‘Update datasources’ API.
  • Change query Parameters- By defining Parameters on the API, you can set the values and get different results and data to reflect only what this report’s users should see.
  • Measure Parameters- Dynamically change different calculated measures to answer each customer’s needs on the same report. For example, you can set the currency through Parameters for different customers/ branches who are based in different countries.

Please note that the Parameters are based on the dataset, so they are defined per report/ dashboard, but not on the user’s session level. It means that different users using the same report in the same time will always see the same Parameter’s value.

Update connection- additional data sources are supported

We added more data source connections that can be updated through ‘Update datasources’ API:

  • Odata feed
  • SharePoint Online

Learn more on data sources in Power BI.

US Government cloud availability

Embedded analytics with Power BI is now generally available for Government Community Cloud (GCC), GCC- High and DoD.

Learn how to setup your environment in US Gov cloud.

Power BI Embedded

Azure Monitor Resource Metrics integration

To optimize the use of an Azure resource in Power BI Embedded, we need proper monitoring to track the usage and act upon any changes. We now have the integration with Azure Monitor Resource Metrics.

Using Azure Monitor Resource Metrics gives you real-time data on the status and load of your resource in an easy-to-use UI inside Azure portal, as well as PowerShell commands and REST APIs to automatically monitor your resource. You can view the data by different measures and different time periods.

Metrics

We have added two new metrics to track the load of your resource.

  1. Query Duration- gives information on the duration of each query through completion. For example, a spike in the average duration time can be an indicator that the current SKU does not have enough query processing units (V-cores) to process the queries, and you should consider scaling your capacity. Of course, the threshold to scale up or down depends on developer’s decision, the data and the type of queries running. An average query duration can vary greatly between datasets and visualizations.
  2. Query Pool Queue Length- gives information on the number of queries waiting to be processed. For example, a spike in number of queries might indicate that your capacity has too many datasets being queried at the same time, causing pagination in memory and thus more queries are waiting to be processed. In this case, you should consider scaling up to get more RAM. Memory for each capacity can be viewed here.

What’s still puzzling

Answers to some of the frequently asked questions in the Power BI Embedded developer community.

Q: What is the best way to perform load testing before I go live with Power BI Embedded analytics inside my application?

If you intend to embed Power BI analytics in your application and you wish to understand the capacity you will need by simulating your production load, the best option, regardless of where you finally deploy, is using Azure capacity:

  • It will simulate the real performance of a production capacity.
  • You will pay only for the hours the test ran, without an upfront commitment.
  • You can scale up/down quickly to test various scenarios.

Also note that you must use a dedicated capacity to perform load testing. You cannot use a Power BI Pro license for this, as it will not give you a real simulation of the capacity performance, and it will deplete the free embed tokens intended for development testing.

 

If you are puzzled or run into few issues, be sure to check our resources that can help you get by:

  • ‘Troubleshooting’ doc to help you get by all the obstacles on your way for building a great app.
  • FAQ doc to answer all your question regarding the Product, licensing and Azure offering.
  • Community forum for developers, to seek answers or ask any other questions you have.

 

Custom Visuals

Bookmarks support for custom visuals

Using bookmarks in Power BI, users can capture the currently configured view of a report page, including filtering and the state of visuals, and later go back to that state by simply selecting that saved bookmark. For core visuals (the visuals that are shipped with Power BI), the visual state includes, filters, highlights, sort order, etc.

Developers of custom visuals are now able to support the bookmarks feature in their custom slicers, by using the interactivityUtils to persist and retrieve the user selections.

 

Call for action: update your custom slicer to support bookmarks

If your custom visual is a slicer, follow those guidelines to enable bookmarks:

1. $ npm i powerbi-visuals-utils-interactivityutils --save

2. Include these lines into files of tsconfig.json:

"node_modules/powerbi-visuals-utils-typeutils/lib/index.d.ts",

"node_modules/powerbi-visuals-utils-svgutils/lib/index.d.ts",

"node_modules/powerbi-visuals-utils-interactivityutils/lib/index.d.ts",

3. Include these lines into pbiviz.json:

"node_modules/powerbi-visuals-utils-typeutils/lib/index.js",

"node_modules/powerbi-visuals-utils-svgutils/lib/index.js",

"node_modules/powerbi-visuals-utils-interactivityutils/lib/index.js"

4. For each update call, use the following code to get the SelectionIds:

const dataView: DataView = options.dataViews[0]; // options come from the update method

// Restores applied SelectionIds from Bookmarks (filter property)

const restoredSelectionIds: visuals.ISelectionId[] = powerbi.extensibility.utils.filter.FilterManager.restoreSelectionIds(dataView

    && dataView.metadata

    && dataView.metadata.objects

    && dataView.metadata.objects["general"]

    && dataView.metadata.objects["general"]["filter"] as powerbi.extensibility.utils.filter.AppliedFilter

);

5. Update the state of SelectionManager by using the following code:

this.selectionManager.select(restoredSelectionIds);

6. When the visual handles a specific data point in the code, add the following code to compare restoredSelectionIds  and selectionId of each data-point by using includes method

In most cases it’ll probably look like this code:

const isSelected: boolean = restoredSelectionIds.some((selectionId: visuals.ISelectionId) => {

return selectionId.includes(dataPoint.selectionId);

});

*Currently only custom slicers can support bookmarks. We are working to enable all custom visuals to support bookmarks very soon, stay tuned.

 

Partners can offer custom visuals development services through AppSource

It is great to see that MAQ Software and Akvelon are already offering custom visuals services for customers on AppSource's consulting services. See their offerings here.

image

Partners who have expertise in developing Power BI custom visuals, are invited to offer their services on AppSource's consulting services. The offer can be any of the service types that AppSource supports:

  • Assessment: An evaluation of a customer’s environment to determine the applicability of a solution and provide an estimate of cost and timing. See Akvelon's offer as an example.
  • Briefing: An introduction to a solution or a consulting service to draw customer interest using frameworks, demos, and customer examples.
  • Proof of concept: A limited scope implementation to determine if a solution will meet a customer’s requirements. See MAQ Software's offer and Akvelon's offer as examples.
  • Implementation: A fully working custom visual based on customer requirements. See Akvelon's offer as an example.
  • Workshop: An interactive engagement conducted on a customer’s premises that could involve training, briefings, assessments, or demos built on the customer’s data or environment.

If you are a partner with expertise in building custom visuals and you are interested in listing your offerings, start here.

Interested in enriching your BI solution offering with custom visuals? Get started with building your expertise here.

Organization visuals (Preview)

With this month's release of Power BI Desktop, we've added a new feature to support the deployment of custom visuals in organizations, out of the understanding that organization admins require better control of how custom visuals are being used inside their organization and help them distribute their approved visuals to report authors in the organization.

Once admins deploy custom visuals into the organization repository, report authors can discover and import them into their reports from the integrated UI:

image

Read more about organization custom visuals, how admins can deploy and manage them, and how report authors can use them, in the February Power BI Desktop blog post.

Search in formatting pane

Also added in the latest Desktop release, is the ability to search the formatting pane. Users can type the item name that they need, and the formatting pane will be filtered automatically to show only the relevant items.

This feature is automatically enabled for all custom visuals without the need to do anything from the developer side.

Read more in the February Power BI Desktop blog post.

New R custom visuals in the marketplace

We are happy to see that R custom visuals are getting traction with the community, as they are a great way to unlock advanced analytics and complex statistics in Power BI. There are 4 new R custom visuals published to the marketplace just recently, and you can take a look at the source code to get up to speed with how to properly develop R custom visuals. Of course, make sure you also read the Funnel plot tutorial for step-by-step instructions.

Outliers detection

Find outliers in your data, using the most appropriate method and plot

See the code on GitHub.

Clustering using OPTICS by MAQSoftware

OPTICS based clustering algorithm to analyze groups and hierarchies within a group

See the code on GitHub.

Dumbbell Chart by MAQ Software

Dumbbell Chart displays critical measures and shows changes over a duration or across categories

See the code on GitHub.

R DataTable

An interactive R-powered table that helps you easily explore and filter data

See the code on GitHub.

Additional reading

Here are some of the latest interesting reading for custom visuals developers to get up to speed with

Custom visuals administrator control

Power BI administrators can control the use of custom visuals in the organization, turning it completely on or off.

Read more in the January Power BI service and mobile blog post.

Balanced scorecard by Greg Kohler

Greg was the "brains" behind the awesome Power KPI visual and Power KPI matrix visual, that are available in the marketplace. The need to create those visuals came from Greg's experience and day-to-day work on the Customer Data and Analytics (CDnA) team that manages the analytics of customer usage and satisfaction from Microsoft products and services.

Read Greg's insightful blog post, Balanced Scorecards in Power BI, to understand how the visuals were conceived and what are the driving factors to use them.

Webinar: Integrating R Script and R Script Visuals with Power BI by Ginger Grant

If you are into developing R visuals (and if you are not, you might want to after watching this webinar), check out this webinar: Integrating R Script and R Script Visuals with Power BI by Ginger Grant.

 

As always, feel free to use all the communication channels at your disposal to connect with our team, share your thoughts and ask questions:

 

That’s all for this post. We hope you found it useful. Please continue sending us your feedback, it’s very important for us. Have an amazing feature in mind? please share it and vote in our Power BI Embedded Ideas forum, or our Custom Visuals Ideas forum.