Next event: September 24th| 9th Evening Seminar – Register now

DAX INFO Expressions: The Hidden Gem for Documenting and Understanding Your Power BI Model

Author: Luc Debois © July 2026 – Version 1.1


Most Power BI developers know the classic DAX functions such as CALCULATE, SUMX, FILTER, and RANKX. However, many have never explored one of the most exciting additions to DAX in recent years: the INFO functions.

These functions do not analyse your business data. Instead, they analyse your semantic model itself. They allow you to retrieve metadata about tables, columns, measures, relationships, dependencies, and much more. In other words: they enable Power BI to document itself. 

For larger enterprise models, this can be a game changer.


Why INFO Functions Matter

  • 150 tables 
  • 2.000 columns 
  • 400 measures 
  • dozens of relationships 
  • multiple calculation groups

Where do you start?

Traditionally you would use:

  • Model View
  • Tabular Editor
  • DMV Queries (=Dynamic Management View query)
  • External documentation tools

With INFO functions, much of this information becomes directly available through DAX.

This opens possibilities such as:

  • Automatic model documentation
  • Data governance reports
  • Measure inventories
  • Dependency analysis
  • Quality checks
  • Developer dashboards

The Two Flavours of INFO Functions

There are currently two categories:

1. INFO.VIEW Functions

These are the most developer-friendly functions.

INFO.VIEW.TABLES()

INFO.VIEW.COLUMNS()

INFO.VIEW.MEASURES()

INFO.VIEW.RELATIONSHIPS()

These can even be used inside calculated tables.

2. Advanced INFO Functions

Examples include:

INFO.COLUMNS()

INFO.DEPENDENCIES()

INFO.EXPRESSIONS()

INFO.CALCDEPENDENCY()

INFO.DATASOURCES()

These expose model metadata at a much deeper level and are especially useful for advanced developers and governance scenarios.


Example 1 – Create a Measure Catalogue

One of my favourite uses is generating documentation automatically.

Create a calculated table:

Measure Documentation =

INFO.VIEW.MEASURES()

This returns information such as:

Measure Name – Expression – Description – Format String – Display Folder – Hidden Status

Now you can build a report showing every measure in your model.


Example 2 – Find Measures Without Descriptions

Many organisations require every measure to be documented.

Create:

Measures Missing Description =

FILTER(

    INFO.VIEW.MEASURES(),

    ISBLANK([Description])

)

The result is an instant governance report identifying undocumented measures.


Example 3 – Build a Data Dictionary

Need documentation for all columns?

Data Dictionary =

SELECTCOLUMNS(

    INFO.VIEW.COLUMNS(),

    “Table”, [Table],

    “Column”, [Name],

    “Datatype”, [DataType],

    “Hidden”, [IsHidden]

)

You now have a complete data dictionary generated automatically from the model.


Example 4 – Document Relationships

Relationships often become difficult to manage in large models.

Relationship Documentation =

INFO.VIEW.RELATIONSHIPS()

This exposes information about:

From Table – To Table – Cardinality – Filter Direction – Active Status

From there you can build relationship diagrams and quality reports.


Example 5 – List All Tables

Simple but extremely useful.

Model Tables =

INFO.VIEW.TABLES()

This provides metadata about all tables in the model including:

Table Name – Description – Storage Mode – Hidden Status


Example 6 – Dependency Analysis

One of the most powerful INFO functions is:

EVALUATE

INFO.CALCDEPENDENCY()

This reveals dependencies between:

Measures – Calculation Items – Columns – Tables

Typical questions answered:

  • Which measures depend on Sales Amount?
  • What breaks if I delete this column?
  • Which calculations use a specific table?

This is incredibly valuable before making structural model changes.


Example 7 – Explore DAX Expressions

The lesser-known function:

EVALUATE

INFO.EXPRESSIONS()

returns all expressions defined in the model.

Useful scenarios:

  • Auditing calculation logic
  • Finding specific coding patterns
  • Migration projects
  • Documentation generation

For example:

EVALUATE

SELECTCOLUMNS(

    INFO.EXPRESSIONS(),

    “Name”,[Name],

    “Expression”,[Expression]

)


Example 8 – Search for Hardcoded Values

A practical governance exercise.

FILTER(

    INFO.VIEW.MEASURES(),

    CONTAINSSTRING([Expression],”1000″)

)

This helps detect measures that contain hardcoded constants.

Examples:

Sales Bonus =

IF([Sales] > 1000, 50, 0)

Hardcoded values can often indicate maintenance risks.


Example 9 – Create a Model Governance Dashboard

Combine multiple INFO tables:

Tables      = INFO.VIEW.TABLES()

Columns     = INFO.VIEW.COLUMNS()

Measures    = INFO.VIEW.MEASURES()

Relations   = INFO.VIEW.RELATIONSHIPS()

Then create KPIs such as:

  • Number of tables
  • Number of measures
  • Measures without descriptions
  • Hidden columns
  • Relationship count

The result is a self-maintaining model health dashboard.


Example 10 – Self-Documenting Semantic Models

This is where INFO functions truly shine.

Create several calculated tables:

Doc Tables = INFO.VIEW.TABLES()

Doc Columns = INFO.VIEW.COLUMNS()

Doc Measures = INFO.VIEW.MEASURES()

Doc Relationships = INFO.VIEW.RELATIONSHIPS()

Whenever new objects are added to the model, your documentation updates automatically.

No manual maintenance required.


Things to Keep in Mind

There are a few restrictions:

  • Many INFO functions require semantic model administrator permissions.
  • Some advanced INFO functions are only available in DAX Query View.
  • Not every INFO function works in calculated tables.
  • INFO.VIEW functions are generally the easiest to use inside Power BI models.

Final Thoughts

The INFO family of DAX functions represents one of the most underrated innovations in Power BI. While most developers focus on creating calculations, INFO functions help you understand, document, govern, and maintain the semantic model itself.

For enterprise environments, they provide the foundation for:

  • Automated documentation
  • Governance reporting
  • Dependency analysis
  • Developer productivity
  • Model quality assurance

If you have never used INFO.VIEW.MEASURES() or INFO.EXPRESSIONS(), now is the perfect time to start exploring them.

My advice:
Create a simple “Model Documentation” page in your next Power BI project and let the semantic model document itself. You’ll wonder how you ever worked without it.

Example:


For more info see: