Calculated Columns
What It Detects
Section titled “What It Detects”This flag identifies all calculated columns in a semantic model — columns defined with a DAX expression that is evaluated and materialized during data refresh, as opposed to columns sourced directly from Power Query / the data source.
Why It Matters
Section titled “Why It Matters”- Increased refresh time — Calculated columns are computed row-by-row during refresh (after all source data is loaded), adding to the total processing time.
- Increased model size — The computed values are stored in the VertiPaq engine just like regular columns, consuming memory.
- Cannot be pushed to source — Unlike Power Query transformations, calculated column logic runs inside the Analysis Services engine and cannot benefit from query folding.
- Often replaceable — Many calculated columns can be replaced with DAX measures (computed at query time, not stored) or moved upstream to Power Query or the data warehouse.
Trigger Conditions
Section titled “Trigger Conditions”A column is flagged when:
- The column is defined with a DAX expression (i.e., it is a calculated column, not a source column or Power Query computed column).
Threshold: Any calculated column is flagged. This is an awareness flag — not every calculated column is a problem, but each one should be reviewed to confirm it cannot be replaced with a measure or pushed upstream.
Output
Section titled “Output”| Field | Description |
|---|---|
columnName | Name of the calculated column |
tableName | Parent table |
expression | The DAX expression (truncated to 200 chars) |
dataType | Resulting data type |
estimatedSizeBytes | Estimated in-memory size |
datasetName | Semantic model name |
workspaceName | Workspace name |
Notes and Edge Cases
Section titled “Notes and Edge Cases”- Legitimate uses — Calculated columns are appropriate when you need a physical column for: relationships, sort-by-column, or Row-Level Security filters. In these cases, the calculated column is expected and can be acknowledged.
- Measures vs. calculated columns — If the calculated column is only used in visuals (never in a relationship or sort-by), it can almost always be converted to a measure, which avoids storing the values and reduces model size.
- Power Query alternative — If the calculation can be expressed in M (Power Query), moving it there enables query folding and removes the DAX engine overhead during refresh.
Related Flags
Section titled “Related Flags”- Complex DAX Columns — Calculated columns with especially complex DAX expressions.
- Unused Columns — Calculated columns that are defined but never used.