If you’re building reports in Power BI against SSAS Multidimensional cubes then you may have encountered situations where the formatting on your measures disappears. For example, take a very simple SSAS Multidimensional cube with a single measure called Sales Amount whose FormatString property is set in SSDT to display values with a £ sign:
When you build a report using the Table visualisation in Power BI Desktop using this measure, the formatted values are displayed correctly:
However, if you add a SCOPE statement to the cube to alter the format string of the measure for certain cells, as in this example which sets the format string for the Sales Amount measure to $ for Bikes:
SCOPE([Measures].[Sales Amount], [Product].[Category].&); FORMAT_STRING(THIS)="$0,0.00"; END SCOPE;
…then you’ll find that Power BI displays no formatting at all for the measure:
What’s more (and this is a bit strange) if you look at the DAX queries that are generated by Power BI to get data from the cube, they now request a new column to get the format string for the measure even though that format string isn’t used. Since it increases the amount of data returned by the query much larger, this extra column can have a negative impact on query performance if you’re bringing back large amounts of data.
There is no way of avoiding this problem at the moment, unfortunately. If you need to display formatted values in Power BI you will have to create a calculated measure that returns the value of your original measure, set the format string property on that calculated measure appropriately, and use that calculated measure in your Power BI reports instead:
SCOPE([Measures].[Sales Amount], [Product].[Category].&); FORMAT_STRING(THIS)="$0,0.00"; END SCOPE; CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS [Measures].[Sales Amount], FORMAT_STRING="£0,0.00";
Thanks to Kevin Jourdain for bringing this to my attention and telling me about the workaround, and also to Greg Galloway for confirming the workaround and providing extra details.