3 Replies Latest reply: Aug 26, 2014 11:33 PM by Amit Khanna RSS

    Use hyperion business rule to aggregate different generation members

    lsy26

      Hi, due to business special requirement, we need to use business rule to aggregate the higher generation members and store the result to a lower generation member. How do we do that using a business rule?

       

      Thanks

       

      Example show below:

           I need to sum (EQ.GroupAxxx, EQ.GroupBxxx) and then store the result to EQ.CategoryAxxx. Similar to get to EQ.CategoryBxxx.

      Then at the end, I would need to sum EQ.CategoryAxxx and EQ.CategoryBxxx and store the result to EQ.ClassAxxx.

       

      Example:

      EQ.ClassA ~

           EQ.ClassAxxx +

           EQ.CategoryA ~

                EQ.CategoryAxxx +

                EQ.GroupA~

                     EQ.GroupAxxx+

                EQ.GroupB~

                     EQ.GroupBxxx+

           EQ.CategoryB~

                EQ.CategoryBxxx +

                EQ.GroupC~

                     EQ.GroupCxxx+

                EQ.GroupD~

                     EQ.GroupDxxx+

        • 1. Re: Use hyperion business rule to aggregate different generation members
          Martin.Xie

          Hi,

           

          I think you need to calculate the members one by one. I suppose this is a sparse dimension, and you don't have blocks for the members that you want to calculate. Here is sample codes for your reference.

           

          /*----Create Blocks-------------*/

          FIX (...)

          DATACOPY "EQ.GroupAxxx" TO "EQ.CategoryAxxx";

          DATACOPY "EQ.GroupBxxx" TO "EQ.CategoryAxxx";

          DATACOPY "EQ.GroupCxxx" TO "EQ.CategoryBxxx";

          DATACOPY "EQ.GroupDxxx" TO "EQ.CategoryBxxx";

          ENDFIX

           

          FIX (...)

          "EQ.CategoryAxxx" = "EQ.GroupAxxx" + "EQ.GroupBxxx";

          "EQ.CategoryBxxx" = "EQ.GroupCxxx" + "EQ.GroupDxxx";

          ENDFIX

           

          /*----Create Blocks-------------*/

          FIX (...)

          DATACOPY "EQ.CategoryAxxx" TO "EQ.ClassAxxx";

          DATACOPY "EQ.CategoryBxxx" TO "EQ.ClassAxxx";

          ENDFIX

           

          FIX (...)

          "EQ.ClassAxxx" = "EQ.CategoryAxxx" + "EQ.CategoryBxxx";

          ENDFIX

          • 2. Re: Use hyperion business rule to aggregate different generation members
            lsy26

            Thanks Martin.Xie. I was thinking to use UDA to tag members but not sure how it works with UDA in the business rule.

            • 3. Re: Use hyperion business rule to aggregate different generation members
              Amit Khanna

              Hi,

               

              You can make use of @UDA function which returns the list of members tagged with the specified UDA.

              For your case,

              Tag EQ.GroupAxxx and EQ.GroupBxxx with some UDA say UDA1

              Then,

              Fix(...)

              "EQ.CategoryAxxx" = @SUM(@UDA(Dimension_name,UDA1);/* This will sum up all the members tagged with UDA1 and store the result in EQ.CategoryAxxx for the intersection set in fix*/

              Endfix

               

              Similarly do for others as well.

               

              Note: If the intermediate results are not required, tag the all members which needs to be evaluated and get the result in one go.



              Hope this helps.....


              Regards,

              Amit Khanna