How to use partition by clause in Domo SQL

I have following columns:

 

Kingdom, 

Animal, 

Age, 

Weight

 

Each row can be repeated multiple times. I want to sum values on the kingdom level in another view/table:

 

My code is:

 

SELECT
'Kingdom',
SUM (MAX ('Age')) OVER (PARTITION BY 'Animal') AS 'Age',
SUM(MAX ('Weight')) OVER (PARTITION BY 'Animal') AS 'Weight'

FROM 'Table'
GROUP BY 'Kingdom'

The Domo transform does not work. Says "Whoops! Something went wrong"

 

Can someone help me as to how to make this work?

 

 

The 

Best Answer

  • ST_-Superman-_
    Answer ✓

    Yes and no...

     

    You can use windowed functions in a redshift dataflow.  But not in the standard MySQL dataflow option.

    2020-01-13_13-03-38.png

     

     

    If you aren't familiar with redshift, then you will need to study up on some of the differences because it uses some different syntax.


    “There is a superhero in all of us, we just need the courage to put on the cape.” -Superman

Answers

  • Hi @hamza_123 ,

     

    The query that you have written has a syntax error.

    SUM (MAX ('Age')) OVER (PARTITION BY 'Animal') AS 'Age',
    SUM(MAX ('Weight')) OVER (PARTITION BY 'Animal') AS 'Weight'

    Aggregation of already aggregated column (SUM(COUNT)) can not be done this way.

    Also, It would be great to check with Domo Support if MySQL flow currentlu supports windoe aggregation or not. I doubt it does not. Still it's advised to check with Domo.

    Moreover, window aggregation is supported in beast modes calculation, so you can directly place your clculation in the cards' beast mode.

     

    Hope this helps.

     

    Regards

    Aditya Jain

    'Happy to Help'
  • I would suggest the following steps in a SQL dataflow:

     

    SELECT
    `Kingdom`,
    `Animal',
    MAX(`Age`) as `Max Age`,
    MAX(`Weight`) as `Max Weight`
    FROM 'Table'
    Group By 1,2

    This will give you a table with:

    Kingdom,

    Animal,

    Max Age,

    Max Weight

     

    Then you can get your desired output table:

    SELECT
    `Kingdom`,
    SUM(`Max Age`) as `Age`,
    SUM(`Max Weight`) as `Weight`
    FROM 'Table_2'
    Group By `Kingdom`

     


    “There is a superhero in all of us, we just need the courage to put on the cape.” -Superman
  • hamza_123
    hamza_123 Contributor

    Thank you for the reply. So I'm guessing partitions do not work in Domo SQL?

     

  • ST_-Superman-_
    Answer ✓

    Yes and no...

     

    You can use windowed functions in a redshift dataflow.  But not in the standard MySQL dataflow option.

    2020-01-13_13-03-38.png

     

     

    If you aren't familiar with redshift, then you will need to study up on some of the differences because it uses some different syntax.


    “There is a superhero in all of us, we just need the courage to put on the cape.” -Superman
  • hamza_123
    hamza_123 Contributor

    Thankyou for the reply. It is clear now.