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: