We’re happy to announce our September 2019 update of Power BI Report Server! This release is packed with tons of reporting features, including visual level filters for slicers, Icon sets, grouping for visuals, new default themes, and more! In this release, you will also see the new updated pane design, the new filtering experience, and more conditional formatting options. Read on to learn more about the new features and many other new capabilities.

Here’s the complete list of September updates:

Reporting

Analytics

Data preparation

Reporting

We’ve refreshed much of our interface. We’ve updated all our panes, the footer, and view switcher to be a lighter color, updated spacing, and new icons. Our new look is much more modern and is the first step and refreshing the entire interface.

Visual level filters for slicers

You can now finally add a visual level filter to slicers. This has been a popular idea on ideas.powerbi.com. It works just like any other visual level filter. It will just filter the slicer itself and no other visuals. This can be useful for filtering out blanks or if you want to use measure filters.

The filter that the slicer applies to other visuals doesn’t change – it’s still just the selection made of the value in the slicer. In the example above, Power BI doesn’t also wrap the ‘Avg. Sales > 1000’ filter into the filter applied to other visuals.

Sorting for the performance analyzer pane

We have a small update to our new performance analyzer pane this release as well! You can change the sort direct and pick to sort between:

Total time spent

Order the actions occurred

Time spent for the DAX query

Time spent querying the source (for Direct Query)

Time spent displaying the visual

Visual header tooltips

We’ve seen users add helpful information for their end users to reports, such as hints on how to interact with the report or descriptions of the fields used in the visual. Setting that up though used to take a fair amount of work, so we’ve now added a way to add a tooltip directly to the visual’s header.

This option is off by default, but you can turn it on through the visual header tooltip icon toggle in the visual header card of the formatting pane. This is the one toggle within the card that affects if the icon shows in edit mode, as well as reading mode.

Once the toggle is on, you’ll see a question mark icon in the visual’s header, , and you’ll see a new formatting card in the pane called visual header tooltip. In this card you can add the text to show in the tooltip and the formatting of the tooltip. Alternatively, you can pick a report page tooltip instead if you need more customization.

Once you’ve added tooltip text or selected a report page tooltip, you’ll see it on hover over the question mark icon.

Table & matrix total label customization

There was a lot of buzz in our community around a simple ask for allowing the total label for table and matrix to be customized. An engineer on our team saw the request and decided to squeeze the feature in on his free time to help out our customers! So now, you have the option to change the label under the subtotals card for both columns and rows.

You can also customize the label for each subtotal field when stepped layout is off.

Sync slicer support for hierarchy slicer

The hierarchy slicer, one of the most used marketplace visuals, allows users to display a hierarchy within their slicer for optimized navigation. This is a very powerful visual, but until recently, it had a limitation where it couldn’t work with our sync slicer feature. With this update, we’ve improved our sync slicer feature to support hierarchy slicers now. This support could also extend to other marketplace visuals, if those visuals add support for the right capabilities. Some things to be aware of are that you can’t sync two hierarchy slicers that have different columns from your model, and if you remove columns from one slicer, it will not remove it from the other synced slicers.

Consistent font sizes across visuals

If you’ve been building reports for a while, you may have noticed that when you set the font size to a specific size, such as “8”, the size might look different, depending on where you’ve been setting it. The reason for this is that different places were either using pixels or points to represent the font size, and 8 pixels is a different size compared to 8 points. We’ve updated all the formatting options within our visuals to always use points.

Icon sets for table and matrix

The top request on our Ideas site is for KPI icons for reports, and we are excited to release icon sets for our table and matrix visual. This feature will let you set up rules for showing different sets of icons to show in your table and matrix, very similar to the Icon Sets feature in Excel.

You can turn on icons for your table or matrix just like any other conditional formatting feature, either through the contextual menu for the field you want to apply it to or through the conditional formatting card in the formatting pane.

When you turn on Icons, the default rules will apply a red diamond to the lower 33% of your data, a yellow triangle to the middle 33%, and a green circle to the upper 33%.

For each rule you can set the range based on an absolute number or a percent. You can also customize the icon for each rule with any of the icons we support in our icon picker.

In addition to adjusting current rules, you can add new rules to the list using the New rule button and swap the order of the icons in all the rules with one click using the Reverse icon order button.

In this dialog, you can also change the field used to generate the icons, just like in other forms of conditional formatting. You can also choose, using the Icon layout dropdown, if the icon shows to the left or right of the numbers showing in the cell or if the icons should replace the numbers all together.

You can also control the icon alignment, switching between top, middle, and bottom alignment.

You can also format based on fields in your model, where the fields uses the name of any of our existing icons, defines svgs inline, or references an image or gif online.

For example, you can create a measure like:

Icon Set Measure = SWITCH ( TRUE () , SUM (Sales[Units]) < 200, "data:image/svg+xml;utf8, <svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 100 100'> <circle cx='50' cy='50' r='40' stroke='purple' stroke-width='4' fill='purple' /> </svg>" , SUM (Sales[Units]) < 1000, "StarMediumLight" , "https://i.gifer.com/Omjx.gif" )

And apply it to get a completely custom set of icons.

You can also change icons or add new ones through a theme file. For example the below theme will add 2 new icons and replace the half filled yellow star with a different icon.

{ "name": "CustomIcons", "icons": { "fire": { "url": "https://i.gifer.com/Omjx.gif", "description": "Fire!" }, "explosion": { "url": "https://i.gifer.com/3iCN.gif", "description": "Boom!" }, "StarMediumLight": { "url": "https://www.uscsd.k12.pa.us/cms/lib/PA01000033/Centricity/Domain/1/library-icon.png", "description": {"resourceKey": "Icon_ColoredArrowUpRed"} } } }

Each icon you are adding or modifying will get its own group in the icons section of the theme. The structure of each icon is:

"IconID": { "url" : " https://i.gifer.com/3iCN.gif ", "description": "Boom!" }

The IconID section is either a unique name you are giving a custom icon or the id of any of our built-in icons you want to modify. The URL is where you’d include either a link to web image you want to reference or embed your SVG or base64 encoded image. Lastly, the description is what will be used for the tooltip of the icon and read out by a screen reader.

If you are using SVGs either through measures or the theme file, make sure to include the viewBox section of the code, where the viewBox is the original canvas size that was used when the SVG icon was made. This will ensure the SVG will continue to scale as the font size of your values changes.

"data:image/svg+xml;utf8, <svg xmlns='https://www.w3.org/2000/svg' viewBox='0 0 100 100'> <circle cx='50' cy='50' r='40' stroke='purple' stroke-width='4' fill='purple' /> </svg>"

We’ve also added an icon set picker to the conditional formatting dialog. This will give you a fast way to select a set of icons and rules to start with and then customize from there, which should save you some time manually selecting icons for each individual rule.

Percent support for conditional formatting by rules

In addition to adding a new type of conditional formatting, we’ve extended in general our Rules form of conditional formatting to support Percent, which allows you to apply formatting on a dynamic range of data, instead of having to specify an absolute number that can become absolute as data refreshes. We also added the Reverse button from the Icon dialog for colors as well, so it’s easier to quick swap the direction of your rules.

New filter pane is now generally available

Our new filter pane is now generally available in Power BI Report Server. Any new reports should automatically have the new pane on by default and we are starting the process to transition current reports to the new pane as well. We obviously want to do this in a way that will minimize the impact on your current reports. With that in mind, when you open Power BI Report Server for the first time, we’ll show you a filter pane auto-update dialog. Make sure to take advantage of this opportunity, as we will eventually auto-update all existing report to the new filter pane.

Through this dialog, you can opt into using the new filter pane experience. Once you do this, anytime you open an old report it will show the new filter pane automatically. If you save the report after opening it, the new pane will now persist, and once you publish the report again, it will show for you end users. If you’re not ready to upgrade a specific report, you can turn off the new pane through the report level settings in the options dialog.

If you’re not ready to switch to the new experience, you can close out the auto-update dialog or choose to opt out at this time. You’ll still see the old pane for your reports, but when you’re ready, you can opt in through the dialog the next time you open a report.

Data colors support when using play axis on scatter charts

As a smaller formatting improvement this release, you can now set the data color for the scatter chart when using the play axis. Up until now, you could only using data colors when using a scatter chart without a play axis, so this should add more flexibility when designing your reports if you’re using the play axis.

Performance improves when using relative date and dropdown slicers

If you are using the relative date slicer or the dropdown slicer, you should see some performance improvements for page loads and filtering interactions this release. The relative date slicer will no longer run any DAX queries when loading, and the dropdown slicer will only run queries when you expand the dropdown. The more slicers you had on your page, the bigger performance improvement you should see.

Grouping visuals

We are very happy to announce the release of one of the most exciting demos from the Microsoft Business Applications Summit, grouping. Grouping allows you to group visuals, shapes, textboxes, images, and buttons together on your report page just like you can do in PowerPoint. Once objects are grouped together, you’ll be able to move and resize them all together. This should make it a lot easier to work with reports with lots of objects layered on each page.

To group visuals, you can ctrl+click them and right click to select the group option.

Right-clicking a group will give you an option to ungroup them later.

Generally, by default, the behavior mimics PowerPoint exactly, such as:

Clicking on the empty space within the group will not select anything

Clicking on a visual within a group will select the entire group on first click and the individual visual on second click

Selecting a group and another object on the page and then selecting the Group option will create a nested group

Use the selection pane to hide everything in the group at once (and bookmark it if you)

There are a few ways we’ve extended the feature as well, including:

Use the selection pane to drag and drop objects in and out of groups

Selecting two groups and opening the context menu will give you an option to merge the groups into one group instead of nesting them

Using the formatting pane, you can add a background color to a group. If a group has a background, it now has “substance” so you can click on the background of the group to select it.

Groups, since they aren’t actual content on the report page, don’t affect the tab order of your report page. Grouping is also only supported on reports using our new modern header, so if you have an older report still using the previous header, upgrade it in the Options dialog to take advantage of this feature.

Color and text classes in themes

When writing your own custom theme JSON file, we know it can be quite difficult to build a theme that changes the entire look of your report. For example, if you wanted to create a dark theme that set the page to a dark color and use white text on top, you’d have to change a ton of settings through the visual styles section of the JSON, which can be very time consuming and error prone.

To help with this, we’ve expanded the color classes within our theme file to allow you format many of the colors in your theme without needing to touch visual styles. If you’re already writing theme files, you’re likely already using a few existing color classes: foreground, background, and tableAccent, which update various settings within your report with one line. With this update, we’re adding new color classes to that list, which as a result, means you can color all visual elements in a report just by setting 6 colors.

The color classes you now have available and what they format are:

foreground Labels background color (when outside data points) Filter pane and filter cards font & icon colors Trend line color Textbox default color Table and matrix values and totals font colors Data bars axis color Card data labels Gauge callout value color KPI goal color KPI text color Slicer item color (when in Focus mode) Slicer dropdown item font color Slicer numeric input font color Slicer header font color Scatter chart ratio line color Line chart forecast line color Map leader line color

foregroundNeutralSecondary Label colors Legend label color Axis label color Table and matrix header font color Gauge target and target leader line color KPI trend axis color Slicer slider color Slicer item font color Slicer outline color Line chart hover color Multi-row card title color Ribbon chart stroke color Shape map border color Button text font color Button icon line color Button outline color

foregroundNeutralTertiary Legend dimmed color Card category label color Multi-row card category labels color Mulit-row card bar color Funnel chart conversion rate stroke color

backgroundLight Filter card background color for applied filters Axis gridline color Table and matrix grid color Slicer header background color (when in Focus mode) Multi-row card outline color Shape fill color Gauge arc background color

backgroundNeutral Table and matrix grid outline color Shape map default color Ribbon chart ribbon fill color (when match series option is turned off)

background Labels background color (when inside data points) Filter pane and available filter card background color Slicer dropdown items background color Donut chart stroke color Treemap stroke color Combo chart background color Button fill color

TableAccent Overrides table and matrix grid outline color when present



In addition to color classes, we’ve added text classes to make it easier and quicker to set text styles. There are 4 primary text classes that adjust a total of 14 total text classes. You can set the font family, font size, and font color for each text classes. The four main text classes are: “Title”, “Label”, “Callout”, and “Header”.

The Title and Label classes have several secondary classes that are automatically derived from the primary class settings but can be formatted individually. For example, if you set the label class, which for example is used for the values in a table to 10pt, a “Small Label,” which is for example used the search box text in slicers, would be automatically set to 9pt. The goal of the primary/secondary text classes is to make it quick and easy for you to set the text classes, which still maintaining a visual hierarchy to the text.

The below table shows the primary classes with example settings and the secondary classes with the settings that make them unique compared to their associated primary class.

Primary class Secondary classes Class name in JSON Settings Associated visual objects Callout N/A callout DIN #252423 45pt Card data labels KPI indicators Header N/A header Segoe UI Semibold #252423 12pt Key influencers headers Title title DIN #252423 12pt Category axis title

Value axis title

Multi-row card title *

Slicer header Large title largeTitle 14pt Visual title Label label Segoe UI #252423 10pt Table and matrix column headers

Matrix row headers

Table and matrix grid

Table and matrix values Semibold semiboldLabel Segoe UI Semibold Key influencers profile text Large largeLabel 12pt Multi-row card data labels Small smallLabel 9pt Reference line labels *

Slicer date range labels

Slicer numeric input text style

Slicer search box

Key influencers influencer text Light lightLabel #605E5C Legend text

Button text

Category Axis labels

Funnel chart data labels

Funnel chart conversion rate labels

Gauge target

Scatter chart category label

Slicer items

Bold boldLabel Segoe UI Bold Matrix subtotals

Matrix grand totals

Table totals Large and Light largeLightLabel #605E5C 12pt Card category labels

Gauge labels

Multi-row card category labels Small and Light smallLightLabel #605E5C 9pt Data labels

Value axis labels

* The font color for these settings is based on the data colors, not the text class settings.

For example, here’s a small theme that sets some of these properties:

{



“name”: “NewThemeOptions”,



“foreground”: “#252423”,



“foregroundNeutralSecondary”: “#605E5C”,



“foregroundNeutralTertiary”: “#B3B0AD”,



“background”: “#FFFFFF”,



“backgroundLight”: “#F3F2F1”,



“backgroundNeutral”: “#C8C6C4”,



“tableAccent”: “#118DFF”,



“textClasses”: {



“callout”: {



“fontSize”: 45,



“fontFace”: “DIN”,



“color”: “#252423”



},



“title”: {



“fontSize”: 12,



“fontFace”: “DIN”,



“color”: “#252423”



},



“header”: {



“fontSize”: 12,



“fontFace”: “Segoe UI Semibold”,



“color”: “#252423”



},



“label”: {



“fontSize”: 10,



“fontFace”: “Segoe UI”,



“color”: “#252423”



}



}



}



You can still use visual styles to set any specific formatting you want, and that will override any color or text classes that have been set. We expect with these new changes for most users to stick to the color and text classes the majority of the time, and only use the visual styles for non-color/text options (such as turning titles on/off by default).

New default themes

To go along with the new theme JSON options, we are also updating the themes available for reports and changing the default theme for new reports.

Our design and research team spent quite a bit of time developing a new set of themes that have more variety (such as Innovate, a dark theme) and show off more theme-able feature (such as Bloom, with it’s background image).

The new default theme is meant to both align better with Microsoft’s design language and follow best design practices for visuals. We also tested it thoroughly to ensure it’s design is an improvement over other themes, with the goal that the new default makes it easier to create beautiful reports out of the box.

Some visual updates with the new default theme are:

Larger, darker, more readable text

Smaller bubble sizes for scatter and map visuals

Wider line strokes for line and combo charts

Updated layout for pie and donut charts to improve readability

Expand/collapse on by default for matrices

Backgrounds on for visuals by default

You can still find the previous themes under the “More themes” submenu any time you want to reach them. One thing to remember around custom themes is that they always build on top of the default theme. So for example, if you created your own custom theme that just set the data colors and nothing else, if you imported that theme into a report with the new default applied, it would still have expand/collapse on by default, backgrounds on for visuals, etc., so it may look different compared to when you imported it to a report with the old default theme. If you want your theme to look exactly the same way it did previously, you can first set the theme to “Classic” in the theme dropdown, so the default theme has the old settings and then import your custom theme.

Analytics

Custom format strings

While in the modeling view, you can now enter in a custom format string to customize how the field will show in visuals.

To do this, first select the field in the fields list and select the custom format option in the formatting card of the properties pane.

From there, you’ll be able to select from a list of commonly used format strings.

Or you can use the given an input box to enter in your own format string. Power BI will support most of the VBA style syntax, with a few exceptions. Refer to the full documentation for details.

Once you enter in your custom format string, it will immediately be reflected in the data view and report view.

One of our returning interns, Chelsie Eiden, worked on this feature over the summer. You might remember her from the theme picker that she worked on last year! It’s great to have interns come back to the Power BI team – hopefully you’ll see more of Chelsie again in the future.

Conditional formatting updates for formatting options

Visual background and title colors

We are extending our conditional formatting option to formatting features this release. First, we’ve added support for conditionally formatting the visual’s background and both the visual title’s font color and background color.

Card colors

For the card visual you can now also conditionally format the data label and category label colors.

Gauge fill and colors

You can conditionally format the fill color of the gauge and other colors used for the gauge visual.

Target text color

Target fill color



Data label color



Callout value color



Alt text (General)

Alt text is the first feature that now has conditional formatting. This is really a huge step forward in terms of accessibility. Alt text, which is read off by screen readers whenever the visuals are in focus, can now be dynamically changed based on the current filter state of the visual. You can for example call out in the alt text both the highest and the lowest categories and have confidence it will always reflect the current data in the visual.

Border color (Border)

Border color is the next feature that has this added capability. Just as you can with backgrounds, you can dynamically adjust the border color based on current filter state. This could be a good option to use if you want to color a visual based on a specific KPI but you felt like the background color was too intense of an option.

With all these updates, you now have a lot more expressive power when formatting your visuals.

Conditional formatting warnings

Over the last several months, we’ve expanded the number of places you can apply conditional formatting to include settings such as titles and font colors to name just a few. As we’ve mentioned before, our goal is to eventually support conditional formatting for most, if not all, formatting properties. Given how prevalent conditional formatting will become with all these changes, we also wanted to make it easy to see errors in your conditional formatting configuration.

Now, we’ll show a warning in the visual header and the formatting pane if one of the following cases is true:

The measure’s data type is not what the formatting property expects (e.g. the measure returns a number, but the property is a string)

The measure used to conditionally format was deleted

The measure returns an unrecognized value (ex. Rad instead of Red)

These warnings will only show up when editing a report, end users won’t see the warnings when viewing the report.

We’ve heard feedback that end users don’t always know when they can drill through on a visual to another report page. To help with this, we’ve added text to the visual’s tooltip to let them know it’s enabled.

New DAX expressions: REMOVEFILTERS and CONVERT

We have two new DAX expressions this month! REMOVEFILTERS is the same as ALL when used inside CALCULATE to remove filters. CONVERT changes the expression to another data type.

New DAX comparison operator: ==

Our DAX update for the month is the addition of a new comparison operator, ==. This operator is similar to the existing = operator except that it performs strict comparison to BLANK values. In DAX, 0 = BLANK() returns true so a filter like [Column] = 0 or [column] = BLANK() will return true for both 0 and BLANK(). We’ve introduced this new == operator to make it easier to differentiate between 0 and BLANK(). [Column] == 0 will return true only when the column value is 0 and [Column] == BLANK() is equivalent to ISBLANK([Column]).

Data preparation

Improvements to M Intellisense

Based on recent feedback, we’re making additional improvements to the M Intellisense capabilities that we released a few months ago.

Parameter hint support in formula bar – This previously only worked in the Advanced Editor and Add Custom Column dialogs. This release, we’re adding support for parameter hints in the formula bar.

Hover support – Hovering your mouse cursor over identifiers (such as functions and query step names) will display its definition. This works on all M Intellisense surfaces (Advanced Editor, Custom Column and formula bar).

New Transform: Split column by positions

A new data transformation added this month allows you to split text columns at specific positions within a given text value.

This new transformation can be found under the Split Column menu in the Home tab of the Power Query Editor ribbon.

You can specify a comma-separated list of positions to split at. Power Query also tries to detect and make recommendations for those positions based on data in preview rows within the Power Query Editor. You can also customize whether to output text parts as new columns or rows.

Copy to clipboard from data profiling

With this month’s release we’re making it possible to export data profiling information by copying it to the clipboard from the Power Query Editor.



The new Copy option is available from all Data Profiling surfaces as described below.

Data Profiling Surface Screenshot Data exported to clipboard Column Quality Summary Column Distribution charts Column Profile Details Pane – Column statistics Column Profile Details Pane – Column distribution

That’s all for the September release of Power BI Report Server! We hope that you enjoy these updates for this release. Please continue sending us your feedback and don’t forget to vote for other features that you’d like to see in the Power BI.