Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
AS1110
Frequent Visitor

Need help to optimize the AddColumns and Summarize DAX Measure

Hi Community,

I am having the below measure which will give the "Top Competitor" .Whenever I use this measure in the visual its causing high latnecy.It would be of great help if you guide me to optimise the below dax!! 🙂


Please note that I am using live connection type to AAS.

Top Competitor =
VAR TimeCalculation = SELECTEDVALUE('Time'[TimeCalculation])
VAR Manuf = FILTER(ADDCOLUMNS(SUMMARIZE(ALLSELECTED('Manufacturer'), [Manufacturer]),
                    "TotalValue",
                   CALCULATE(SUM('Sales'[Sales]),
                    ALL('Time'), 'Time'[Offset] = 0, 'Time '[TimeCalculation] = TimeCalculation, ALL(Brand))),
                  AND(NOT([Manufacturer]) IN {"abc", "xyz"}, NOT([TotalValue]=0)))
VAR Top1 = TOPN(1, Manuf, [TotalValue], DESC)
RETURN MAXX(Top1, [Manufacturer])

Expected Result:

CountryProductBrandTop Competitor
United Statesaaazzzpqr
    


Any help in this regard would be much appreaciated!!

Thank You


 

1 ACCEPTED SOLUTION
daXtreme
Solution Sage
Solution Sage

 

// You can try this... but of course I have no access
// to your data, so it's only based on my "what I think
// I could do"... One can't really do any DAX tuning without
// access to the model/data. And your DAX will never be fast
// if the SQL it creates is not. You also have to have a look
// at the generated SQL and tune your tables accordingly.

Top Competitor =
VAR TimeCalculation =
    SELECTEDVALUE( 'Time'[TimeCalculation] )
var ManufacturersOfInterest =
    FILTER(
        ALLSELECTED( 'Manufacturer'[Manufacturer] ),
        NOT 'Manufacturer'[Manufacturer] IN {
            "abc",
            "xyz"
        }
     )
VAR Manuf =
    ADDCOLUMNS(
        ManufacturersOfInterest,
        "@TotalValue", // This will likely be a spoiler...
            CALCULATE(
                SUM( 'Sales'[Sales] ),
                'Time'[Offset] = 0,
                'Time '[TimeCalculation] = TimeCalculation,
                ALL( 'Time' ),
                ALL( Brand )
            )
    )
VAR Top1Manufacturer =
    MAXX(
        TOPN(
            1,
            FILTER(
                Manuf,
                [@TotalValue] <> 0 // Change to > 0 if possible
            ),
            [@TotalValue], DESC
        ),
        'Manufacturer'[Manufacturer]
    )
RETURN
    Top1Manufacturer

 

View solution in original post

2 REPLIES 2
daXtreme
Solution Sage
Solution Sage

 

// You can try this... but of course I have no access
// to your data, so it's only based on my "what I think
// I could do"... One can't really do any DAX tuning without
// access to the model/data. And your DAX will never be fast
// if the SQL it creates is not. You also have to have a look
// at the generated SQL and tune your tables accordingly.

Top Competitor =
VAR TimeCalculation =
    SELECTEDVALUE( 'Time'[TimeCalculation] )
var ManufacturersOfInterest =
    FILTER(
        ALLSELECTED( 'Manufacturer'[Manufacturer] ),
        NOT 'Manufacturer'[Manufacturer] IN {
            "abc",
            "xyz"
        }
     )
VAR Manuf =
    ADDCOLUMNS(
        ManufacturersOfInterest,
        "@TotalValue", // This will likely be a spoiler...
            CALCULATE(
                SUM( 'Sales'[Sales] ),
                'Time'[Offset] = 0,
                'Time '[TimeCalculation] = TimeCalculation,
                ALL( 'Time' ),
                ALL( Brand )
            )
    )
VAR Top1Manufacturer =
    MAXX(
        TOPN(
            1,
            FILTER(
                Manuf,
                [@TotalValue] <> 0 // Change to > 0 if possible
            ),
            [@TotalValue], DESC
        ),
        'Manufacturer'[Manufacturer]
    )
RETURN
    Top1Manufacturer

 

Thank alot for the reply😊
This solution works perfectly and solved the problem. 
Cheers😀

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors