As Power BI adoption grows across teams and organizations, it becomes harder to keep track of what data is being used, where it’s coming from, and how it flows through your reports. That’s where a metadata catalog comes in—a centralized view of the tables, columns, and data sources powering your Power BI datasets.
In this blog, I’ll show you how to create a metadata catalog using DAX Studio and the XMLA endpoint, extracting the actual source table names, schema, server, and database—all without writing a single line of M code.
Tools Required
Step 1: Connect to the Dataset via XMLA
Open DAX Studio and choose Tabular Server as your connection option. Enter your workspace connection string, which looks like:
powerbi://api.powerbi.com/v1.0/myorg/<YourWorkspaceName>
This allows DAX Studio to connect to the data model behind your published dataset.
Step 2: Explore Your Models
Once connected, you’ll see a list of all datasets available in that workspace. Choose the dataset you want to inspect from the dropdown.
This lets you inspect the underlying semantic model, including all the tables, partitions, and data sources.
Step 3: Query the Partitions
Now run the following DMV query to extract the underlying data source information:
SELECT * FROM $SYSTEM.TMSCHEMA_PARTITIONS
This query will return:
From the M code, you can extract:
Example M code snippet:
Source = Sql.Database(Server, Database),
View Name = Source{[Schema=”PBI”,Item=”*****”]}[Data]
This tells you that the Power BI model table Dim_CareArea is pulling from the SQL view ***** in the PBI schema.
Final Output: Your Metadata Catalog
Here’s an example of how your metadata catalog might look after parsing the M code:
Model Table Name | Source Table/View | Schema | Database | Server |
Dim_CareArea | vwUSCANCareArea | PBI | AnalyticsDB | SQLPROD01 |
FactVolume | Fact_SalesVolume | dbo | SalesDW | AZSQL01 |
DimEmployee | Employees | hr | HRDB | HRSQL02 |
Use Cases for the Catalog
Pro Tip: Automate with Power BI
You can load the results from DAX Studio into Excel or Power BI Desktop, extract server/database/schema/table names from M code using Power Query, and build an interactive report that refreshes regularly.
Want a template? Let me know and I’ll create a downloadable version for you.