Forum Discussion

Nexter's avatar
Nexter
Icon for Advocate IV rankAdvocate IV
7 years ago

Question about upcoming feature, "Expression-Based Formatting"

Hi all,

 

I have a question about the upcoming Expression-Based Formatting feature.  The description reads as follows:

"Report authors need flexibility over how their visuals are formatted. As well as defining formatting through the formatting pane, a DAX expression can be used to set the formatting, giving full control over the business logic used to format the visual.

Authors can create rules that set the color of a KPI based on the progress towards a goal, set the style of a line on a chart based on which category is performing best, or any combination of these. Authors can even dynamically update the title of a visual based on selections made elsewhere in the report."

 

Do you all think this means I would be able to do a switch function, and designate the format (i.e. show as currency) in a visual with that switch function as a field?  So, if the measure containing the switch function has a general number format assigned, but within the switch function I say that one of the switch possibilities should be shown as currency, that when that option is selected it will show up in the visual as currency?  Or no matter what the visual will still only show the format that is selected as attached to the switch function measure?  I'm sorry if I'm not being very clear with this!  Let me know if I should explain it differently, thank you!!!!

3 Replies

  • v-juanli-msft's avatar
    v-juanli-msft
    Icon for Community Support rankCommunity Support

    Hi Nexter

    The upcoming Expression-Based Formatting feature works for flexibily format the visual instead of the property of columns or values.

     

    With this feature, you could write DAX formula to change the format (color, title, ect) of the visual according to your own requirement instead of selecting the limited items from the Format pane.

     

     

    In fact, change the data format for a column is very easy to do, just select the "Modelling"->Data type  / Format.

    If you need to do the transform like what you said above, here is a workaround.

     

    Create a new table by Enter data

     

    Create measures in the table

    currency = FORMAT(SUM(Table1[number]),"Currency")
    
    general = FORMAT(SUM(Table1[number]),"General Number")
    
    Measure = IF(HASONEVALUE(Table2[switch]),
    SWITCH(FIRSTNONBLANK(Table2[switch],Table2[switch]),
    "currency",[currency],"general",[general]),
    BLANK())

     

    More details please read this article

    But in this method, the measure is formated to be type of text.

     

     

    Best Regards

    Maggie

    • Nexter's avatar
      Nexter
      Icon for Advocate IV rankAdvocate IV

      Hi Maggie,


      Thanks for your reply.  However using the Format function converts it to text, correct?  Unfortunately this doesn't work for me since I would need to use this for a variety of visuals (column charts, line charts), not just matrixes and cards.  And in that case, I believe Format just wouldn't work.


      I did however just find a proposed idea that seems to cover exactly what I'm looking for:

      https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/15231165-conditional-formatted-measures-using-switch


      I don't suppose you could think of a workaround for what's posted in the idea, right?  Thanks again for your response!



      • d_gosbell's avatar
        d_gosbell
        Icon for Super User rankSuper User

        I know this question is a bit old, but one extension to Maggie's answer might be to default to returning the raw unformatted value if no specific formatting option is chosen.

         

        eg

        currency = FORMAT(SUM(Table1[number]),"Currency")
        
        general = FORMAT(SUM(Table1[number]),"General Number")
        
        raw = SUM( Table1[number] )
        
        Measure = IF(HASONEVALUE(Table2[switch]),
                     SWITCH(FIRSTNONBLANK(Table2[switch],Table2[switch]),
                            "currency",[currency],"general",[general]),
                     [raw] )