Press "Enter" to skip to content

Category: Power BI

User-Defined Functions and Power BI Testing

John Kerski is excited:

User Defined Functions (UDFs) are, in my opinion, the biggest update to Power BI Desktop since PBIP.

That may sound dramatic, but if you care about DataOps, semantic model quality, and reusable development patterns, UDFs fundamentally change what is possible with DAX.

Reuse is one of the core principles of DataOps. For years we have been able to build reusable patterns in Power Query, PowerShell, Python, YAML, and infrastructure automation. But DAX was always missing a key capability: reusable logic that could live inside the semantic model itself.

Until now.

Read on to learn more, as well as to get a link to John’s PQL.Assert DAX unit testing library.

Comments closed

Fabric Data Agents and Power BI Row-Level Security

Jens Vestergaard digs into a security challenge:

In the last post I walked through auditing a semantic model before connecting it to an AI tool like Fabric Data Agent. Descriptions, naming, explicit measures, star schema: the things that decide whether a Fabric data agent generates an accurate query or a confident wrong one. I left one thing out on purpose, because it deserved its own post and because I got it wrong the first time I thought about it.

Security.

Click through for a few subtle security issues that automated agents can expose. It turns out to be a lot more challenging than you may first expect, just as Jens discovered.

Comments closed

PBIR Files and Second-Class Report Server Citizens

Ronald Kraijesteijn tells a tale of woe with Power BI Report Server:

The setup is an on-prem Power BI Report Server, fully patched, running the May 2026 release (1.26.9637.31070, build15.0.1121.109). I had a report I needed to publish, but first I had to swap a whole batch of connection strings. Doing that by hand in Desktop is miserable, so I took a shortcut that turned out to be the root of all my pain. More on that below.

The error was a generic mess and the cause was getting too high for your station and actually expecting something from Power BI Report Server.

I say this as a fellow long-time Power BI Report Server sufferer.

Comments closed

Multilingual Reports in Power BI

Reza Rad solves a common challenge:

Building a multilingual Power BI report has always been one of those requirements that sounded simple but turned out painful to implement. A French-speaking user opens your report and sees English category names. A Spanish-speaking user opens the same report and sees the same English values. You end up either maintaining multiple reports — one per language — or wrestling with external tools and complex workarounds just to get translations working properly.

Read on for an alternative solution that is—you guessed it—currently in preview.

Comments closed

Power BI’s Row-Level Security Bitmap Changes

Phil Seamark lays out the consequences of a change:

If you have ever watched a model with row-level security run beautifully for months and then quietly fall off a cliff, this one is for you. Nothing in the model changed. You did not touch the security rules. One table just grew past a line you could not see, and every query under that role started doing a great deal more work than it used to.

That line just moved, and it moved in your favour. Here is what it is and why it sits where it does.

Click through to learn more about how Power BI handles row-level security predicate matching.

Comments closed

Building Automated Tests in Power BI

John Kerski has a use for user-defined functions:

Reuse is a very important term in DataOps. It is defined as the practice of leveraging existing components, code, or processes across multiple projects to reduce redundancy and improve consistency.

However, when it comes to Power BI, reusing DAX measures across projects was a difficult ‘copy and paste’ job. For my teams, we used DAX measures to help with testing our semantic models, but ensuring consistent testing conventions (and standard schemas of the tests) required lots of manual review.

Thankfully, that changed in late 2025 when Microsoft introduced User Defined Functions (UDFs) for Power BI. In this article, I’ll demonstrate how to use UDFs for testing, plus how to standardize the way teams test their models.

Click through to see how.

Comments closed

Tabular Editor CLI Preview Available

Ruben Van de Voorde makes an announcement:

We are happy to launch the Limited Public Preview of the Tabular Editor CLI, a cross-platform command-line interface that gives humans, AI agents, and CI/CD pipelines headless access to Tabular Editor features. In practice, that means driving Tabular Editor by typing commands instead of clicking through the app. That may sound like extra work for a one-off edit, and it is. The payoff comes when the task repeats: a command is text, so you can save it, version it, and run it again later or unattended, while a click in a dialog does the job once and is gone. Whether you want to script bulk edits across dozens of models, let a coding agent work on your semantic model directly, or automate deployments in your build pipeline: the TE CLI is built for it, on Windows, macOS, and Linux.

This will be free until the end of September, after which point you’d need a Tabular Editor 3 license to continue using it.

Comments closed

Data Agent Prompt Handling and Semantic Models

Marc Lelijveld digs into Microsoft Fabric Data Agents:

What makes Fabric Data Agents particularly interesting is the wide range of supported data sources. Today, Data Agents can connect to nearly everything that lives inside Microsoft Fabric, or data that is linked into Fabric through shortcuts. Whether your data sits in a Lakehouse, Warehouse, KQL Database, Power BI semantic model, or even external storage connected through OneLake shortcuts.

However, the way Data Agents handle sources can differ significantly from one source type to another. Semantic Models in particular behave quite differently compared to other Fabric data sources. In this blog, I’ll dive deeper into how prompt handling works for Semantic Models, what happens behind the scenes, and the common gotchas you’re likely to encounter along the way.

Read on to see how semantic model behavior differs in particular from SQL or DAX queries.

Comments closed

DAX UDF Measures vs Calculation Groups for Time Intelligence

Bernat Agullo Rosello compares two capabilities:

Ever since DAX UDFs came out as public preview in September 2025, many DAX developers started wondering how they will compare with calculation groups since both have the centralization of code as one of their main selling points. As pointed out in a recent article by SQLBI they are indeed very different beasts, even though they can be used to achieve very similar outputs.

In short, a calculation group is a model-level object whose items swap one DAX expression for another at evaluation time. Once an item is in the filter context, it applies to every measure being evaluated. A DAX UDF is a smaller object: a named, reusable expression with parameters, callable from any measure but invisible to report users.

Read on to see when calculation groups still make sense and when DAX UDFs are the better choice.

Comments closed

An Overview of Power BI File Formats

Reza Rad covers a multitude of formats:

Power BI files come in multiple formats. If you have been working with Power BI Desktop for a while, you probably know the PBIX format well. But there are other formats too: PBIT, PBIP, and PBIR. The last two are more recent additions, and there is also a language called TMDL (Tabular Model Definition Language) that comes with its own file type.

In this blog post, I am going to explain the differences between all of these formats, why each one exists, and which one you should use for your scenarios. I will also show you, through a practical demo, what PBIP looks like and how you can use it to make your development process significantly better.

Click through for the video and article.

Comments closed