Time to read: 5 minutes
Have you ever wanted to search through your Power BI measures, calculated columns or calculated tables for a specific function or table/column reference? Or export your DAX logic for documentation purposes? If this is the case then this post is for you.
As a Power BI dataset admin or author, keeping track of and documenting the data is an important task. However, keeping track of all the measures and DAX logic used in a dataset can be a burdensome task. Especially as the dataset grows over time. Plowing through hundreds or thousands of measures with complex logic, reused logic or multiple layers of references to other calculations can quickly get out of hand.
In this post I will show you how to use Dynamic Management Views (DMVs) in DAX Studio to query and export measures and metadata about your DAX logic. You can then use this data to further analyze your logic and metadata in e.g. Excel
DAX Studio is a third party tool for Tabular model development including Power BI. You can get it at daxstudio.org
Dax Studio is a free, third party software initially developed(and still maintained) by Darren Gosbell https://darren.gosbell.com/.
DAX Studio is commonly described as the ultimate tool for writing, authoring and analyzing DAX queries.
If you want to read more about how to use DAX Studio to enhance your productivity with Power BI, read my article about how to level up your Power BI model with DAX studio here
Connect DAX Studio to your model
There are two ways to connect to your Power BI model from DAX Studio. You can choose to open DAX Studio directly and connect to an existing model. The model can be a Power BI desktop file or a model hosted on a Tabular server, e.g. a dataset hosted in a Power BI dataset (Premium or PPU – Premium per user is needed)
You can also choose to open DAX Studio from Power BI External Tools ribbon.
Opening DAX Studio directly from Power BI Desktop will automatically create a connection between DAX Studio and your Power BI dataset.
Get that (meta)data!
In order to export the DAX objects information from the dataset, you need to query some DMV’s(Dynamic Management Views), which you can access and query from DAX Studio.
The query language is called Data Mining Extensions (DMX) and is based on SQL syntax. However, it doesn’t support the full SELECT statement syntax. You can learn more about the query syntax on MS learn here.
Query DAX Measures
A list of all DAX measures is available in DMV TMSCHEMA_MEASURES. Except from the actual name and DAX expression it also contains some metadata information. For example data type, format string, modified time and display folder
You can run the following query to get a full list of all measures and their attributes
select * from $SYSTEM.TMSCHEMA_MEASURES
Query DAX Calculated Columns
A list of all DAX calculated columns is available in DMV TMSCHEMA_COLUMNS. However, this DMV also contains a complete list of all columns available in the model. You can use a filter on attribute [Type] in order to filter out your DAX calculated columns.
You can run the following query to get a full list of all calculated columns and their attributes
select * from $SYSTEM.TMSCHEMA_COLUMNS WHERE [Type] = '2'
Except from the actual name and DAX expression it also contains some metadata information. For example data type, format string, modified time, sort by column and refresh time
Exporting data from DAX Studio
The default output setting of a DAX Studio query is a Results Table. However, the output can be changed to a file (csv, txt) or an excel file. For example, in order to change the output to a static Excel file, choose Home -> Results -> Excel (Static). This will open a save dialogue after executing the query.
You can also save the query results to the clipboard or a linked Excel file.
One of the limitations of the DMX query language is the lack of certain WHERE operators. Therefore, the best way to analyze and free-text search the data is to export the data to an Excel file and do those types of tasks from there.
Do you know any other way of exporting this type of model metadata? Or are you already using DMV’s in any other scenario? Please let us know in the comments below.
Thank you for reading!