Format numeric values to currency

Options

A similar question has been asked about doing this in beast mode, and a rather lenghty solution was proposed.

 

However, I'm wondering if anyone has formatted numeric values prior to including them in a beast mode concat, either via workbench or ETL/SQL? 

Comments

  • aoheneopare
    Options

    Hi,

     

    The MySQL Format function can format decimal fields to currency.

     

    FORMAT(1232454.2573,2)
    Result: 1,232,454.26

    CONCAT('$', FORMAT(1232454.2573,2))
    Result: $1,232,454.26

    Test it and let me know if that works for you.

  • Josh-REO
    Options

    Thanks, but that didn't quite work.  It did convert the value to two decimal places with a comma, but it also converted it to a text value, instead of numeric, and that broke my card.  

  • aoheneopare
    Options

    Can you let me know what you are trying to accomplish? The DOMO cardbuilder allows you to format numeric values as currency.

  • Josh-REO
    Options

    I have a beast mode that changes the summary number to read as a change in period over period, it wasn't originally written by me.

     

    It will show the "Summary Number" as "$136949581 -- 10.46% YTD Change from Prior Year", but I want the commas in the number.  

     

    I can't use the format function in the beast mode, and I can't use it in MySQL because it changes it to a text value.

  • aoheneopare
    Options

    You can use the MySQL formula. You just have to save it as it's own field. So you could have a column for the raw number and another column for the formatted number. Then in the summary number you use the formatted column and use the raw number colun for therest of your card.

  • Josh-REO
    Options

    I tried that, but I can't use the formatted in the calculation as they are formatted as text.

     

    This is the beast mode calculation:

     

    CONCAT(
    '$'
    ,round((sum(case when `Period` = 'CurrentYear' then `SellSideVolume`+`ListSideVolume` else 0 end)-sum(case when `Period` = 'PriorYear' then `SellSideVolume`+`ListSideVolume` else 0 end)),0)
    ,' -- '
    ,round(((sum(case when `Period` = 'CurrentYear' then `SellSideVolume`+`ListSideVolume` else 0 end)-sum(case when `Period` = 'PriorYear' then `SellSideVolume`+`ListSideVolume` else 0 end))/sum(case when `Period` = 'PriorYear' then `SellSideVolume`+`ListSideVolume` else 0 end))*100,2.00)

    ,'% '
    ,'YTD Change from Prior Year'
    )

     

     

     

     

  • aoheneopare
    Options

    Unfortunately, there  is no other way to accomplish this unless you do all your calculations in SQL. However as you know, going that route will diable the ability to recalulate your metric on the fly as the card is manipulated by end users.

     

  • Josh-REO
    Options

    Okay, thanks for the suggestions though, much appreciated.

This discussion has been closed.