Format numeric values to currency

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
    aoheneopare Domo Employee

    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.

  • 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
    aoheneopare Domo Employee

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

  • 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
    aoheneopare Domo Employee

    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.

  • 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
    aoheneopare Domo Employee

    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.

     

  • Okay, thanks for the suggestions though, much appreciated.

This discussion has been closed.