Read about the many new features introduced in the March 2019 update
Part eight of a ten-part series of blogs

This is the biggest single update for some time, introducing the new modelling view, tooltip styling, single-select slicers and much more besides.

  1. The March 2019 Update to Power BI Desktop
  2. A new modelling view to change your Power BI life!
  3. Changing the appearance of tooltips
  4. Single-select slicers
  5. Viewing date components in the field list
  6. Automatic heat maps and improvements to map formatting
  7. Improved selection pane
  8. New DAX functions (this blog)
  9. Lots of other miscellaneous changes
  10. Power BI features waiting in preview, as of March 2019

For a cumulative list of all of the updates to Power BI Desktop in the last few year or two, see this blog, or have a look at the Power BI courses that we run.

Posted by Andy Brown on 20 March 2019

You need a minimum screen resolution of about 700 pixels width to see our blogs. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.

New DAX functions

Normally new DAX functions meet quite esoteric needs, but for this update there are a few welcome additions to the core set of functions. 

Only read on for this page if you already know how to create measures in DAX - this isn't a DAX tutorial!

Finding text in a string

To make it easier to find whether one string of text contains another, you can now use these two functions:

Type of search Function
Not case-sensitive ContainsString
Case-sensitive ContainsStringExact

For example, the following DAX formula could be used to show the number of films with the word Star in the title:

STAR films = COUNTROWS(

FILTER(

Films,

// title must contain STAR

CONTAINSSTRING([Title],"star")

)

)

For the Wise Owl Movies database, this could then be used to show this table:

Films containing STAR

The number of films containing the letters STAR, regardless of case.

 

And so you can sleep at night, here are the non-science-fiction films:

Non sci-fi films

A classic collection of films ...

 

A simpler ALL function

If you're removing all of the constraints for the filter context, life is now a bit easier.  Suppose you have this data:

Matrix of films

The matrix shows the number of films by genre and Oscars won. Suppose that you want to show each figure as a percentage of the grand total, using a measure.

 

Here's what the answer should look like:

Percentage of grand total

The bottom right corner is 100%, as it should be.

Here's a measure you could use to show this:

% of grand total = DIVIDE(

// divide the number of films

// for the filter context ...

COUNTROWS(Films),

// ... by the number of all films

CALCULATE(

COUNTROWS(Films),

ALL()

)

)

DAX aficionados will recognise that I've been able to use the ALL function without any arguments. 

It's a bit disconcerting using ALL like this, since Intellisense hasn't caught up:

Intellisense

Intellisense suggests that the first argument is compulsory, and underlines your syntax in red if you don't specify it (although the measure still then works).

Other changes to DAX functions

Just for the sake of completeness:

Function Change
LookupValue This takes a last optional parameter, which you can use to avoid generating an error.
DistinctCountNoBlank This is coming in as part of the April update, and counts rows ignoring blanks.
This blog has 0 threads Add post