Columns vs Measures: When to Use Which
Understand the critical difference between calculated columns, calculated tables, and measures in Power BI β and know when each is the right choice for the exam.
The big decision: column or measure?
Think of a restaurant menu.
A calculated column is like printing the price on the menu. Itβs fixed β every customer sees the same price. The value is calculated once and stored.
A measure is like the bill. It changes depending on what each customer orders β the total is calculated at the moment you ask for it, based on the current context (whatβs filtered, whatβs selected).
Most of the time, you want measures. Theyβre more flexible, use less memory, and respond to filters. Calculated columns are for when you need a fixed value per row β like categorising products or creating keys.
Calculated columns vs measures
| Feature | Calculated Column | Measure |
|---|---|---|
| When calculated | During data refresh β stored in model | At query time β computed dynamically |
| Context | Row context β accesses current row values | Filter context β responds to slicers, filters, visual groupings |
| Memory usage | Uses memory (stored per row) | No memory (computed on demand) |
| Can be used in | Slicers, filters, rows/columns of visuals, relationships | Values area of visuals, filters, conditional formatting, tooltips, visual titles β but NOT in slicers or as axis groupings |
| Recalculates when | Data refreshes | User interacts (filter, slicer, drill) |
| Best for | Row-level categorisation, keys, fixed labels | Aggregations, KPIs, dynamic totals |
When to use a calculated column
Riley at Coastal Fresh (π) needs a Profit Margin category for each product:
MarginCategory =
IF(
[ProfitMargin] > 0.3, "High Margin",
IF([ProfitMargin] > 0.15, "Medium Margin", "Low Margin")
)
This is a calculated column because:
- The category is fixed per product row
- She wants to use it as a slicer (filter by βHigh Marginβ)
- It doesnβt need to change based on filter context
When to use a measure
Riley also needs total revenue that responds to filters:
Total Revenue = SUM(Sales[Revenue])
This is a measure because:
- When she filters to βNorth Regionβ, it should show only North Region revenue
- When she drills into Q1, it should show Q1 revenue
- The value changes based on context
Exam tip: the golden rule
If you need it in a slicer or as a visual axis β calculated column. If you need a dynamic aggregate that responds to filters β measure.
Measures can also be used in visual-level filters, conditional formatting, tooltips, and titles β just not as slicer items or axis groupings. When in doubt, default to a measure.
Calculated tables
Calculated tables create new tables entirely from DAX expressions.
Common uses:
- Date tables:
Date = CALENDARAUTO()(covered in previous module) - Distinct value lists:
Regions = DISTINCT(Stores[Region])β useful for disconnected slicers - Summary tables:
MonthlySummary = SUMMARIZE(Sales, 'Date'[Month], "Total", SUM(Sales[Revenue]))β useful for testing
Nadia at Prism Agency (π) creates a disconnected slicer table for metric selection:
MetricSelector =
DATATABLE(
"Metric", STRING,
{
{"Revenue"},
{"Clicks"},
{"Impressions"},
{"Cost per Click"}
}
)
This calculated table isnβt connected to any other table β itβs used purely as a slicer that drives conditional measure logic.
Quick measures
Quick measures are pre-built DAX templates that Power BI generates for you. Theyβre perfect when you know what you want but arenβt confident writing the DAX.
How to create: Right-click a table β New quick measure β choose a calculation type β drag fields into the template.
Common quick measure categories:
- Aggregate per category β average per category, sum within group
- Filters β filtered value, difference from filtered value
- Time intelligence β year-to-date, quarter-to-date, year-over-year change
- Running totals β running total, rolling average
- Mathematical β percentage of total, weighted average
Real-world: Kenji's quick measure
Kenji at Apex Manufacturing (π) needs a year-over-year production change percentage. Instead of writing complex DAX, he uses:
New Quick Measure β Time Intelligence β Year-over-year change
He drags Production into the base value and Date[Date] into the date field. Power BI generates the DAX automatically. He can then view and modify the generated code to learn the pattern.
Knowledge check
Riley wants to categorise each product as 'High Margin', 'Medium Margin', or 'Low Margin' and use this category as a slicer on her dashboard. Should she create a calculated column or a measure?
Which DAX calculation type uses the LEAST memory in the model?
π¬ Video coming soon
Next up: DAX Fundamentals β write your first measures with SUM, AVERAGE, COUNT, and more.