When we start modeling data in Power BI, almost the same question always comes up: should I create a calculated column or a measure? Both are written in DAX and look interchangeable, but choosing wrong costs performance and clarity. Let us look at the difference and the practical rule to always get it right.
Calculated column: computed row by row, stored in the model
A calculated column is evaluated row by row when the data is loaded and is stored in the table, using memory. It is a new, fixed column for each record. It makes sense when you need a per-row value to filter, group or relate, for example an "Age Band" derived from age.

Measure: computed on the fly, context-aware
A measure is not stored: it is computed at the moment the visual asks for it, and the result adjusts to the context. "Total Sales" is the classic example, the same calculation gives one number per product, another per month, without duplicating data.
The difference that changes everything: context and memory
- Calculated column: fixed per row, uses memory, computed on load. Good for attributes that describe each record.
- Measure: dynamic, no extra memory, computed on the fly and context-aware. Good for aggregations and KPIs.
The most common mistake is using calculated columns for sums and totals that should be measures, bloating the model and making it needlessly slow.
The practical rule
When in doubt, always start with a measure. Only create a calculated column when you truly need a per-row value to filter, slice or relate tables. This simple rule avoids most performance problems in Power BI models. And you: how many of your calculated columns could actually be measures?