In DAX, AVERAGE and AVERAGEA are used to calculate the mean of a column of values, but they differ in how they handle non-numeric values.
AVERAGE Function
- Description:
Calculates the arithmetic mean (average) of numeric values in a column. It ignores blanks and non-numeric values (e.g., text or logical values). - Syntax:
AVERAGE(<column>)
- Behavior:
- Includes only numeric values in the calculation.
- Ignores blanks and non-numeric values.
AVERAGEA Function
- Description:
Calculates the arithmetic mean (average) of values in a column, evaluating non-numeric values as follows: - TRUE is treated as
1. - FALSE and non-numeric text are treated as
0. - Blanks are treated as
0. - Syntax:
AVERAGEA(<column>)
- Behavior:
- Includes numeric and non-numeric values in the calculation, assigning specific values to non-numeric data.
Example Using the Superstore Dataset
Assume the Sample Superstore dataset has the following key columns:
Order IDSales(numeric column)Profit(numeric column)Region(categorical column)Discount(numeric column)
We’ll focus on the Sales and Discount columns for the examples.
1. AVERAGE Example
You want to calculate the average sales across all orders:
Average Sales =
AVERAGE('Sales'[Sales])
- What it does:
- Takes the
Salescolumn. - Calculates the mean of all numeric values in
Sales. - Ignores any blanks or invalid entries in the column.
2. AVERAGEA Example
Now, assume the Discount column has the following data:
| Discount |
|———-|
| 10 |
| 20 |
| TRUE |
| FALSE |
| | (blank)
| 30 |
To calculate the average discount using AVERAGEA:
Average Discount =
AVERAGEA('Sales'[Discount])
- How it works:
- Numeric values are included as-is:
10, 20, 30. - TRUE is treated as
1. - FALSE and blanks are treated as
0.
The calculation will be:

Comparison of Results
If the same column is used in both functions:
| Discount Column | Behavior in AVERAGE | Behavior in AVERAGEA |
|---|---|---|
10 | Included | Included |
20 | Included | Included |
TRUE | Ignored | Treated as 1 |
FALSE | Ignored | Treated as 0 |
| (blank) | Ignored | Treated as 0 |
30 | Included | Included |
Practical Applications in Superstore Dataset
Use Case for AVERAGE:
You want the average sales without any interference from non-numeric data:
Average Sales =
AVERAGE('Sales'[Sales])
Use Case for AVERAGEA:
You have a Discount column with mixed data types and want an average that considers logical values like TRUE and FALSE:
Average Discount =
AVERAGEA('Sales'[Discount])
Key Differences
| Aspect | AVERAGE | AVERAGEA |
|---|---|---|
| Numeric Values | Included | Included |
| Logical Values | Ignored | TRUE = 1, FALSE = 0 |
| Non-numeric Text | Ignored | Treated as 0 |
| Blanks | Ignored | Treated as 0 |
Conclusion
- Use
AVERAGEfor clean numeric columns where non-numeric values should be ignored. - Use
AVERAGEAwhen dealing with mixed data types (numeric, logical, text) and you want those non-numeric values to contribute to the calculation.

Ankit Srivastava is an IT trainer, technology educator, and digital skills mentor with expertise in programming, data analytics, AI, and software development. He has successfully trained thousands of learners, with more than 10,000 student enrollments on Udemy. His practical teaching approach empowers students and professionals to build in-demand technical skills. Colorstech channel where Ankit posts video tutorials has more than 8000 Subscribers.