What AVERAGEX does
Evaluate an expression row by row and return the average. In Power BI, the key is not only the formula itself but how it behaves with slicers, relationships, visuals and totals.
Syntax or pattern
AVERAGEX(table, expression)5 practical business examples
AVERAGEX in a sales report
Calculate revenue row by row.
Revenue = AVERAGEX(Sales, Sales[Quantity] * Sales[Unit Price])Use an iterator when the calculation must happen at transaction level.
Profit by row
Calculate profit from each row before aggregating.
Profit = AVERAGEX(Sales, Sales[Sales Amount] - Sales[Cost Amount])This is safer than subtracting totals when row logic matters.
Weighted score
Calculate a weighted score from rows.
Weighted Score = AVERAGEX(Scores, Scores[Score] * Scores[Weight])Good for performance scorecards.
Discount impact
Calculate discount value by line item.
Discount Impact = AVERAGEX(Sales, Sales[List Price] * Sales[Discount %])Use this to analyze discount cost.
Inventory value
Calculate stock value from quantity and cost.
Inventory Value = AVERAGEX(Inventory, Inventory[Units On Hand] * Inventory[Unit Cost])Useful in inventory valuation reports.
Common mistakes to avoid
- Using AVERAGEX before checking whether the data model has the right relationships and filter direction.
- Writing one complex measure instead of creating simple base measures first.
- Testing only at the total level and not checking row, category and date contexts.
- Forgetting that slicers, visuals and relationships can all change the filter context.
FAQ
When should I use AVERAGEX in DAX?
Use AVERAGEX when the calculation pattern matches the business question and the result behaves correctly in the current filter context.
Why is my AVERAGEX measure returning the wrong total?
Most total issues come from row context, filter context, relationships, or using a column aggregation where an iterator or CALCULATE pattern is needed.
Can I use this AVERAGEX pattern in a calculated column?
Some patterns work in calculated columns, but most reporting calculations should be measures so they respond to slicers and report filters.