This distinction separates people who use Power Pivot from people who fight it. Both are written in DAX, and both look like formulas. Picking the wrong one is the most common beginner error in the whole tool. They differ on four axes.
A calculated column is a new column you add to a table in Data View. You type its formula in the "Add Column" slot, for example Sales[Line Total] = Sales[Quantity] * Sales[Unit Price]. Each calculated column is:
- Computed once, at data-refresh time, working row by row. It's then stored in the model like any other column.
- Evaluated in row context. For each row, the formula sees that row's values, so
Sales[Quantity]means "this row's quantity". It doesn't see filter context, and slicers don't change a stored column's values. - Materialised in memory, so it increases the model's size. A wide calculated column on a 20-million-row fact can bloat the file and slow refresh.
- Useful when you need a per-row attribute to group, filter, or slice by, such as a category bucket (
"High" / "Low"), a fiscal-period label or a flag. If it's going onto rows/columns/slicers, it has to be a column.
A measure is a named formula you type in the Calculation Area, for example Total Sales := SUM(Sales[Amount]). Each measure is:
- Computed at query time, on demand, every time a cell needs it, in whatever filter context that cell carries. It isn't stored, so it holds essentially zero extra bytes in the model.
- Evaluated in filter context. It sees the slice defined by the current rows, columns, slicers, and filters, and re-aggregates to match. So one measure serves a grand total and a per-region breakdown from a single definition.
- The right tool for any aggregation or ratio, meaning anything that should respond to the slice: sums, counts, averages, margins, growth rates.
Advertisement
Which should you use, a measure or a calculated column?
So why is the measure the right default? Reach for a measure unless you specifically need a value as a column to slice by. It's smaller because it stores nothing. It's more flexible because it obeys context, and it's reusable because other measures can call it. The classic anti-pattern, and the first common mistake, is writing a calculated column such as Sales[Line Margin] = Sales[Revenue] - Sales[COGS] and then summing it in a PivotTable. It "works," but it bloats the model with a stored column. Worse, it hard-bakes a row-level calculation that can't respond to context the way a measure would. Professionals write Gross Profit := SUM(Sales[Revenue]) - SUM(Sales[COGS]) as a measure instead. Nothing gets stored, it's correct in every slice, and the margin measure you build next can call it. You can fit the rule of thumb in one breath. Slice by it and it's a column. Aggregate it and it's a measure. When in doubt, measure.