find % of row value vs. column total

I have a column of various quantities and I want to find the % value of the specific row value when compared to the column total of quantity.  Is this possible in Beast Mode or Dataflow?

Comments

  • kivlind
    kivlind Contributor

    I think I have the exact same question. See screenshot below for question. I'd like a column that would be 325,965 / 959,627  or 34.0% and so on for each subsequent row.Percent of Total.jpg

     

  • kshah008
    kshah008 Contributor

    Hi all,


    Can anybody help @kivlind and @mwade out?

    Thanks!

  • Gimli
    Gimli Domo Employee

    Hello @mwade and @kivlind,

    Sadly in beastmode we cannot calculate this. We will need to use a dataflow to accomplish this. 

    Using a Magic ETL:
    In ETL we first want to replicate our card. 

    1.  Add an input dataset and select your dataset
    2. If your card has any filters you want to apply them next, using "Filter Rows"
    3. We will now use "Add Constants" to add a constant text column of 1
      2016-08-15_1432.png

    4. Now using group by we are going to group by "1" and aggregate our value column
      2016-08-15_1432a.png
      1. If you have multiple Value columns you want to aggregate all of them in this step. 
    5. You should now have a column with a single value in it. 
      2016-08-15_1434.png
      1. This is your total for that column 
    6. You now will want to join this to our original data.From the orignal data we are going to use "Add Constants" and add a constant text column with a value of 1
    7. We now can join our input dataset to our single value. 
      2016-08-15_1437.png
    8. Add a Select Columns and remove your columns 1 and 1_1
    9. Now you can add your output. 


    You can now create a card from this Magic ETL. You will now have a column that contains a total value. 

    You can now create a beastmode to find the percent. 

    SUM(`value_column`) / MAX(`total of value`)

    This should give you your percentage. 

     

    **Say “Thanks" by clicking the thumbs up in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • Any chance this can get added to the development plan? We need to calculate this % to Total dynamically, based on what the group by is on the card. 

     

     

  • Hi,

     

    Can you explain what OVER() is? I don't think it is found within the Beast mode function list.

     

    Thanks.

  • JacobFolsom
    JacobFolsom Domo Employee

    OVER() indicates the function is not a plain aggregation, but an analytic function. It's also called a window function because you can specify a window of rows to evaluate.  In the example above, OVER() is empty which indicates that the SUM is to be across all-time and all groupings, thus returning the grand total.

     

     Here is some documentation for one database vendor...which explains how it generally works.

    https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/AnalyzingData/SQLAnalytics/WindowPartitioning.htm

    Jacob Folsom
    **Say “Thanks” by clicking the “heart” in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • What about by count and subtotal?