Calculated columns vs measures
The single most important distinction in the formula engine — and the mistake almost everyone makes first.
Almost every formula question turns out to be this question. Get it once and the rest of the engine follows.
The difference in one line
- A calculated column is computed for each row, and stored with the data.
- A measure is computed across rows, for whatever the chart is currently showing.
Why it matters
Consider "average order value".
Written as a calculated column, it would have to produce a value on every single order row. But one order has no average — an average needs a set. The column would end up being the order's own total repeated, which is not the average of anything.
Written as a measure, it is evaluated wherever it is used: on a card it averages every visible order; broken down by country it averages within each country; with a slicer applied it averages what is left. One definition, correct in every context.
The rule of thumb
Ask: does this value exist for a single row, on its own?
- Yes → calculated column. Line total, full name, the year part of a date, a size band.
- No → measure. Total, average, count, share of total, running total, year-on-year change.
The symptom of getting it wrong
A calculated column that should have been a measure produces a column of identical values, or of numbers that look plausible individually and are badly wrong once summed. If a total is suspiciously large, check whether something is being summed that was already a sum.
Cost
A calculated column is computed once when the dataset is prepared, so charts read it as cheaply as any stored column — good for a value many visuals need.
A measure is computed per query, which is what allows it to respond to filters, slicers and groupings. That responsiveness is the entire point, and it is why the same measure gives a different (correct) answer in each place it appears.