Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
1 year ago
Solved

Memory Limit Issue When Using REMOVEFILTERS with SUMX

Hi everyone, I followed this guide (https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/REMOVEFILTER-not-working-inside-SUMX/m-p/3670431) to use REMOVEFILTERS inside a SUMX expression, a...
  • FBergamaschi's avatar
    FBergamaschi
    1 year ago

    Yes, kill the SWITCH statemens like follows (I start again from my code as I have seen that you have added new filters here and there mixing the different solutions offered)

    DOWNSELL =

    VAR __threshold = SELECTEDVALUE(REPORTING_THRESHOLD[THRESHOLD])

    VAR __lvl = SELECTEDVALUE(REPORTING_LEVEL[LEVEL])

     

    RETURN

    SUMX(

        ADDCOLUMNS (

            VALUES ( ARRDATA[CUSTOMER] ),

            "begining_balance_wo_cs",

                CALCULATE(

                    SUM(ARRDATA[PREARRAMOUNT]),

                    REMOVEFILTERS(

                        ARRDATA[CUSTOMERSEGMENT1],

                        ARRDATA[CUSTOMERSEGMENT2],

                        ARRDATA[CUSTOMERSEGMENT3]

                    )

                ),

            "revenue_change_product",

                CALCULATE(

                    SUM(ARRDATA[ARRAMOUNT]) -

                    SUM(ARRDATA[PREARRAMOUNT]),

                    FILTER(
                      SUMMARIZE(

                        ARRDATA,
                        ARRDATA[CATEGORY_PRODUCT_0],

                        ARRDATA[CATEGORY_PRODUCT_1],

                        ARRDATA[CATEGORY_PRODUCT_2],
                      ),

                        NOT ISBLANK(

                            IF(

                                __threshold = 0, ARRDATA[CATEGORY_PRODUCT_0],
                                IF(

                                __threshold = 1, ARRDATA[CATEGORY_PRODUCT_1],
                                               IF(

                                __threshold = 2, ARRDATA[CATEGORY_PRODUCT_2]

                                )
                              )

                            )

                        )

                    )

                ),

            "revenue_customer_updown",

                CALCULATE(

                    SUM(ARRDATA[ARRAMOUNT]) -

                    SUM(ARRDATA[PREARRAMOUNT]),

                    FILTER(

                    SUMMARIZE(

                        ARRDATA,
                        ARRDATA[CATEGORY_UPDOWN_CUSTOMER_0],

                        ARRDATA[CATEGORY_UPDOWN_CUSTOMER_1],

                        ARRDATA[CATEGORY_UPDOWN_CUSTOMER_2],
                      ),

                        IF(

                           

                            __threshold = 0, ARRDATA[CATEGORY_UPDOWN_CUSTOMER_0] = "UPDOWN",
                                IF(

                            __threshold = 1, ARRDATA[CATEGORY_UPDOWN_CUSTOMER_1] = "UPDOWN",
                                               IF(

                            __threshold = 2, ARRDATA[CATEGORY_UPDOWN_CUSTOMER_2] = "UPDOWN",

                            FALSE()
                                               )
                                )

                        )

                    )

                )

               

        ),

     

        VAR __begining_balance_wo_cs = [begining_balance_wo_cs]

        VAR __revenue_change_product = [revenue_change_product]

        VAR __revenue_customer_updown = [revenue_customer_updown]

        VAR __revenue_product_updown = __revenue_customer_updown - __revenue_change_product

     

        RETURN

    IF(

                __lvl = "Customer" && __revenue_customer_updown < 0, __revenue_customer_updown,
    IF(

                __lvl = "Customer Product" && __revenue_product_updown < 0, __revenue_product_updown

               

            )

    )

     

    If still this is not enough I would need the data model in my hands

     

    Please give kudos or mark as a solution if this helped solving

    best

    FB