
Improvements
Diagram View: Now even smarter and clearer
We’ve made a series of visual and functional tweaks to the Diagram View that make navigating complex models feel lighter and faster:
- Icons for column data types: Quickly spot column types at a glance.
- Chevron toggle for column views: Control the clutter. Choose between showing all, only key columns, or hiding columns entirely.
- Bi-directional cross filtering indicators: Double arrows now clarify when bi-directional filtering is in effect.

These updates make the Diagram View a more powerful tool when creating new or reviewing existing models.
New API Property: MetadataSource
For those automating workflows or writing advanced C# scripts, you can now access a new property on the Model object: MetadataSource.
This property tells you where the model metadata was loaded from, which, for example, can be used if your script needs to work on files in the same folder structure. For example, this script finds all the .pbir files in the folder from which the model was loaded:
using System.IO;
var pbipInfo = Model.MetadataSource.Pbip;
if (pbipInfo == null)
{
Info("Model not loaded from a PBIP (Power BI Projects) folder structure");
}
else
{
// Find all .pbir files in the PBIP folder structure:
var pbirFiles = Directory.EnumerateFiles(pbipInfo.RootFolder, "*.pbir", SearchOption.AllDirectories);
pbirFiles.Output();
}
The MetadataSource object has several options to choose from, such as the root folder of the loaded model.

See the API docs for full details.
TMDL Scripting: One-Click exports in TOM Explorer
Working with Tabular Model Definition Language (TMDL) just got easier. Right-click on any object in the TOM Explorer, and select: Export script → TMDL
Then, you can then copy the script to the clipboard or save as a file. This allows you to quickly copy out a model object and reuse the TMDL in another place, like Power BI Desktop’s TMDL View.

DAX Optimizer improvements
Aligning with the latest updates for DAX Optimizer, we now also show the analysis results for RLS and Calculation Item expressions. See the DAX Optimizer 1.4 blog post for more information.

Bug fixes
We have made multiple bug fixes in the release 3.21.0; please see our release notes for full details.
Data refresh view
Sort by progress or duration now behaves correctly and duration values persist after the refresh ends.
Semantic Analyzer
- No more false errors with inactive relationships + USERELATIONSHIP
- Correct type inference for GENERATESERIES
- Better handling of DEFINE DAX expressions
- Reserved words no longer raise false errors
Unicode support
Our code editors now fully support wide characters and emojis. But just because you can have them, doesn’t necessarily mean you should (Cue Jurassic Park meme).
As always, if you have any feedback or experience bugs, please reach out in our community forum. If you haven't already, download the update and explore the changes for yourself.