When working in Power BI, two common ways to add custom calculations to your data model are calculated columns and measures. While they both use DAX (Data Analysis Expressions), their purposes, storage, and performance implications differ significantly. Understanding these differences can help you design more efficient and maintainable Power BI reports.
1. What They Are
Calculated Column
A calculated column is a new column added to a table in your data model. It is calculated row-by-row based on the existing data and stored in the model like any other column.
Measure
A measure is a calculation that is evaluated on the fly, usually aggregated at the visual level. Measures don’t exist as stored data in your table—they are computed dynamically based on filter context.
To create a Calculated Column or a Measure, either from the Home menu …

… or from the Table Tools menu …

… select “New Column” (to create a Calculated Column) or “New Measure” (to create a new measure). Then enter the relevant DAX for the column or measure as shown in the next section below.
2. DAX Syntax Examples
Imagine a Sales table with columns: Product, Quantity, and Unit Price.
Calculated Column ExampleCreating a calculated column:
Total Price = Sales[Quantity] * Sales[Unit Price]
This new column will appear in the table and will be stored for every row in the Sales table.
Measure ExampleCreating a measure:Total Sales = SUMX(Sales, Sales[Quantity] * Sales[Unit Price])
This measure calculates the total across all rows in the current filter context—without physically storing a column for every row.
3. When They Are Computed
| Feature | Calculated Column | Measure |
|---|---|---|
| When computed | During data model processing (data refresh). | At query time (when a visual or query is run). |
| Where stored | In-memory within the data model (VertiPaq storage). | Not stored—calculated on demand. |
| Performance impact | Increases model size (RAM & disk space). | Consumes CPU at query time, minimal storage overhead. |
4. Storage and Performance Implications
- Calculated Columns
- RAM & Disk Space: Stored in VertiPaq compression format. Large columns increase your
.pbixfile size and memory footprint. - CPU: Low impact at query time since results are precomputed, but refresh time increases.
- Good for: Fields you need for filtering, sorting, or joining tables.
- RAM & Disk Space: Stored in VertiPaq compression format. Large columns increase your
- Measures
- RAM & Disk Space: No significant impact on storage since they’re not persisted.
- CPU: Can be CPU-intensive if the calculation is complex and used across large datasets.
- Good for: Aggregations, KPIs, and calculations that change based on slicers or filters.
5. When to Use Each
When to Use a Calculated Column
- You need a field for row-level filtering or grouping in visuals.
- You need a column to create relationships between tables.
- The calculation is row-specific and independent of report filters.
Example:
Sales Category = IF(Sales[Quantity] > 100, "High Volume", "Low Volume")
When to Use a Measure
- You want calculations that respond dynamically to slicers and filters.
- You want to avoid inflating your data model with unnecessary stored columns.
- The calculation is aggregate-based.
Example:
Average Order Value = DIVIDE([Total Sales], DISTINCTCOUNT(Sales[Order ID]))
6. When They Cannot Be Used
| Situation | Calculated Column | Measure |
|---|---|---|
| Relationship creation | ✅ Can be used | ❌ Cannot be used |
| Row-level filtering in slicers | ✅ Can be used | ❌ Cannot be used |
| Dynamic response to slicers | ❌ Cannot recalculate | ✅ Fully dynamic |
| Reduce model size | ❌ Adds storage | ✅ No storage impact |
7. Summary Table
| Feature | Calculated Column | Measure |
|---|---|---|
| Stored in model | Yes | No |
| Calculated at | Data refresh | Query time |
| Memory impact | Higher (stored per row) | Minimal |
| Disk size impact | Higher | Minimal |
| Dynamic filters | No | Yes |
| Best for | Filtering, relationships, sorting | Aggregations, KPIs, dynamic calcs |
8. Best Practices
- Default to measures when possible—they’re lighter and more flexible.
- Use calculated columns sparingly, only when the calculation must exist at the row level in the data model.
- If a calculated column is only used in visuals, try converting it to a measure to save memory.
- Be mindful of CPU impact for very complex measures—optimize DAX to avoid performance bottlenecks.
I hope this was helpful in clarifying the differences between Calculated Columns and Measures, and will help you to determine which you need in various scenarios for your Power BI solutions.
Thanks for reading!
