Skip to content

Calculated Columns

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.


  • 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.

A column is flagged when:

  1. 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.


FieldDescription
columnNameName of the calculated column
tableNameParent table
expressionThe DAX expression (truncated to 200 chars)
dataTypeResulting data type
estimatedSizeBytesEstimated in-memory size
datasetNameSemantic model name
workspaceNameWorkspace name

  • 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.

Video Tutorial