Forum Discussion

nirupama's avatar
nirupama
New Contributor II
3 years ago

Is it possible to perform group by and sum operation in Mapper/Conditional snap?

Is it possible to perform sum of the values by grouping them on few fields in mapper/conditional snap in snaplogic.
Because with aggregate snap I’m losing all input fields and keeping copy snap is taking more time to execute.

5 Replies

  • bojanvelevski's avatar
    bojanvelevski
    Valued Contributor

    Hi @nirupama,

    There’s a group by functionality on the Aggregate snap that will allow you to have the input data in a group after you’re done with your calculations (Aggregation).

    Another option is to use a Group by N snap, with 0 in group size which will add all incoming objects to one array. After that, you’ll need to add a Mapper snap with the following expression:

    $array.reduce((acc, curr)=> acc + curr, 0)

    You probably going to need to amend the expression per your needs. For example if you have an array of objects, and you need to calculate a specific field (ex. “Age”) the expression will look something like this:

    $array.reduce((acc,curr)=> acc + curr.Age,0)

    Regards,
    Bojan

    • nirupama's avatar
      nirupama
      New Contributor II

      Hi @bojanvelevski ,

      Thanks you. I tried with group by N(It does batching randomly), but I want to group them based on 3 fields say $A,$B,$C and then I want to do SUM on other field $D.Is there any such functionalities available in snaplogic using mapper?

      • bojanvelevski's avatar
        bojanvelevski
        Valued Contributor

        Same thing applies to your use case, just the grouping is a little bit different and you’ll have to use Group by Fields