Forum Discussion
Measure or Calculated Column
- 10 months ago
Hi ArchStanton,
I would suggest to create a separate table like this
AgeBands =
DATATABLE(
"AgeGroup", STRING,
"MinDays", DOUBLE,
"MaxDays", DOUBLE,
{
{"0-3 Mths", 0, 91.3},
{"3-6 Mths", 91.3, 182.6},
{"6-9 Mths", 182.6, 274},
{"9-12 Mths", 274, 365.25},
{"12-15 Mths", 365.25, 457},
{"15-18 Mths", 457, 547.9},
{"18-21 Mths", 547.9, 639.19},
{"21-24 Mths", 639.19, 730.5},
{"24-27 Mths", 730.5, 821.9},
{"27-30 Mths", 821.9, 913.2},
{"30-33 Mths", 913.2, 1004.5},
{"33-36 Mths", 1004.5, 1095.8},
{"36-39 Mths", 1095.8, 1187.1},
{"39-42 Mths", 1187.1, 1278.4},
{"42-45 Mths", 1278.4, 1369.7},
{"45-48 Mths", 1369.7, 1461},
{"48-51 Mths", 1461, 1552.4},
{"51-54 Mths", 1552.4, 1643.7},
{"54-57 Mths", 1643.7, 1735},
{"57-60 Mths", 1735, 1826.3},
{"60+ Mths", 1826.3, 99999}
}
)and create a relationship with your actual table and use this in your visual, you can filter 0-3mth, 3-6mth age groups from the filter pane.
- 10 months ago
Hi ArchStanton,
Update your measure like this
CasesInAgeBand =
SUMX (
AgeBands,
VAR CurrentBandMin = AgeBands[MinDays]
VAR CurrentBandMax = AgeBands[MaxDays]
RETURN
CALCULATE (
COUNTROWS ( 'Cases' ),
'Cases'[CaseLengthDays] >= CurrentBandMin,
'Cases'[CaseLengthDays] < CurrentBandMax
)
)
Hi ArchStanton ,
you are in a classic Calculated Column vs Measure dilemma in Power BI with performance impact.
Current Situation
You’re using a calculated column with nested IF conditions to bucket Case Length (Adj) into age bands (0–3 Mths, 3–6 Mths, etc.).
Your fact table has 54,000 rows × 80 columns → calculated columns increase memory size (slower refresh, larger PBIX).
Concern: Adding another column (Case Length using Validation Date) will further slow the model.
General Rule
Calculated Columns → stored in the model, increase size, evaluated at refresh time.
Measures → evaluated at query time, don’t increase model size, much lighter.
✅ If you only need the Age Profile for visuals, slicers, or grouping, use a Measure.
❌ If you need it as a row-level attribute (for joins, relationships, filters in other tables), then you need a column.
Recommended Measure
You can rewrite your Age Profile as a Measure. Example:
Age Profile =
VAR CaseLen = SELECTEDVALUE ( 'Cases'[Case Length (Adj)] )
RETURN
SWITCH(
TRUE(),
CaseLen < 91.3, "0–3 Mths",
CaseLen < 182.6, "3–6 Mths",
CaseLen < 274, "6–9 Mths",
CaseLen < 365.25, "9–12 Mths",
CaseLen < 457, "12–15 Mths",
CaseLen < 547.9, "15–18 Mths",
CaseLen < 639.19, "18–21 Mths",
CaseLen < 730.5, "21–24 Mths",
CaseLen < 821.9, "24–27 Mths",
CaseLen < 913.2, "27–30 Mths",
CaseLen < 1004.5, "30–33 Mths",
CaseLen < 1095.8, "33–36 Mths",
CaseLen < 1187.1, "36–39 Mths",
CaseLen < 1278.4, "39–42 Mths",
CaseLen < 1369.7, "42–45 Mths",
CaseLen < 1461, "45–48 Mths",
CaseLen < 1552.4, "48–51 Mths",
CaseLen < 1643.7, "51–54 Mths",
CaseLen < 1735, "54–57 Mths",
CaseLen < 1826.3, "57–60 Mths",
"60+ Mths"
)
Why This Is Better
No column storage → smaller PBIX size.
Runs dynamically only when used in a visual.
Much easier to maintain (you can replace those long nested IFs with SWITCH(TRUE(),...)).
When to Still Use a Column
If Age Profile is needed for relationships, row-level filters, or as a slicer directly from the field list, you’ll need it as a calculated column.
Otherwise, use the measure approach above.
✅ Best Practice:
Keep measures for logic, columns only for keys/relationships.
If you must have a column, consider building an Age Bucket Dimension table and relate it instead of hardcoding.
⭐Hope this solution helps you make the most of Power BI! If it did, click 'Mark as Solution' to help others find the right answers.
💡Found it helpful? Show some love with kudos 👍 as your support keeps our community thriving!
🚀Let’s keep building smarter, data-driven solutions together!🚀 [Explore More]
Hi, I don't have an obvious column that I could link an Age Bucket Dimension Table to in my Fact table.
My Age Bucket Table looks like this:
My fact table does not have AgeGroup - to have one I would need to build a calculated column.
I have the Application Validation Date (AVD) and then a Case Length column that counts the amount of days between the AVD and Today