Forum Discussion

redbird's avatar
redbird
New Member
7 years ago

Aggregate over groups dynamically

I have a table that looks like this:

 

The end result would need to look like this:

 

 

The table result will change based on other filters selected, so I don't think it can be a calculated column. A measure makes more sense, but have struggled trying to figure out how to sum the data dynamically based on filters selected. Any assistance is appreciated! Thank you.

3 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    Unless I am missing something, you should just be able to do something like:

     

    Total Cost = SUM([Cost])
    
    Total Quantity = SUM([Quantity])
    
    Cost Per = DIVIDE([Total Cost],[Total Quantity],BLANK())
    • redbird's avatar
      redbird
      New Member

      Thank you for the suggestion. I tried it and it gave the same results as my calculation below, but both are still not quite the right answer. It needs to be the summation of all costs / the summation of all quantities averaged over all locations depending on the filter selected. 

       

      Value =
      var __Numerator = CALCULATE(sum(Table[Cost]),FILTER(Table, Table[Location]=SELECTEDVALUE(Table[Location])))
      var __Denominator = CALCULATE(sum(Table[Quantity]),FILTER(Table, Table[Location]=SELECTEDVALUE(Table[Location])))

      return DIVIDE(__Numerator/__Denominator)

      • Anonymous's avatar
        Anonymous
        Not applicable
        [Total Cost] = sum ( 'Table'[Cost] )
        [Total Quantity] = sum ( 'Table'[Quantity] )
        [Average Cost] = divide ( [Total Cost], [Total Quantity] )
        
        [Your Measure] =
        averagex(
        	
        	addcolumns(
        		summarize(
        			'Table',
        			'Table'[Location]
        		),
        		"'Table'[AvgCostPerLocation]", [Average Cost]
        	),
        	
        	'Table'[AvgCostPerLocation]
        )

        Please never use the table name in front of a measure and always use the table name before a column. This is one of the most important things in good DAX. Never deviate from this. EVER.

         

        Best

        Darek