Press "Enter" to skip to content

Category: DAX

Controlling Selections in Calculation Groups

Marco Russo and Alberto Ferrari looks at calculation groups:

Calculation groups are often used to display options in a report to change the calculation of existing measures by selecting items on a slicer. However, only a single calculation item can be executed for a measure reference, which could make the semantic model harder to use when the user selects two or more items in a calculation group.

Two new calculation group properties, multipleOrEmptySelectionExpression and noSelectionExpression, provide a way to control the calculation in these conditions that, so far, ignored the presence of the calculation group, thus executing the measures without applying any transformation. This article shows how to use these features and provides guidance on using the feature in preview: despite not having a user interface to manage these new properties, the TMDL view in Power BI Desktop and external tools like Tabular Editor already allow you to create and publish a semantic model that uses these new properties.

Read on to see how these properties work.

Comments closed

Top DAX Functions to Know

Annamarie Van Wyk builds a top 5 list:

If you’ve dipped your toes into Power BI, chances are you’ve come across DAX and thought, “Wait, what now?” You’re not alone. DAX (short for Data Analysis Expressions) is the formula language that makes Power BI so powerful—but it can be a bit intimidating when you’re just starting out.

The good news? You don’t need to master all of it to start seeing results. In fact, there are a few Power BI DAX functions that will do most of the heavy lifting in your reports. In this post, I’ll walk you through five essential DAX functions that every Power BI analyst should know. These aren’t just helpful—they’re game-changers once you get the hang of them.

Click through for that list, including simple examples of each.

Comments closed

Dynamic Pareto Analysis in Power BI

Marco Russo and Alberto Ferrari get us to 80%:

The Pareto analysis is an analytical technique used to identify the most impactful elements within a dataset, based on the principle that a small proportion of causes often leads to a large proportion of effects. For example, the ABC Classification in DAX Patterns is also based on the Pareto principle. However, typical implementations often face limitations. The analysis based on the Pareto principle commonly uses categorical axes, such as customer names or identifiers, making it impossible to leverage a continuous axis on a Power BI line chart. A categorical axis creates a scrollbar on the line chart when there are too many data points, limiting the ability to compare the distribution of data points in different categories within the same line chart.

This article shows how to overcome this limitation by introducing a numeric axis reflecting each item’s position based on the selected measure.

Read on to see how it all works.

Comments closed

Query Memory Utilization of Distinct Count Measures in Power BI

Chris Webb does the math:

The series of blog posts I wrote last year on semantic model memory usage, in particular this post on the query memory limit and the “This query uses more memory than the configured limit” error in Power BI, gets a lot of traffic. Since writing that post on the query memory limit I’ve written a few follow-ups on common mistakes that lead to increased query memory usage, such as this one on measures that never return a blank. Today’s post is sort of in that series but it isn’t about a design mistake – it’s just to point out that distinct count measures can be surprisingly memory-hungry.

Read on for Chris’s findings and the explanation, as well as a couple of potential workarounds if you find yourself in this situation.

Comments closed

Filtering Weekdays using DAX

Marco Russo and Alberto Ferrari show that tracking weekdays is like an onion:

Computing time intelligence calculations in DAX is rather simple. However, as soon as the requirements are not trivial, the complexity of formulas skyrockets, and it is necessary to have a very good understanding of several details about DAX to obtain a good formula. In this article, we show a simple requirement: the need to maintain a filter on weekdays while computing time intelligence. As you are about to read, it will require several complex steps despite being a simple requirement; but let us start by clarifying what we want to obtain and what a filter-preserving column is.

Click through for the full article.

Comments closed

FabCon Announcements for DAX and Semantic Models

Marco Russo summarizes the announcements:

I usually do not write about announcements and new features until we have had time to try and test them in the real world. However, there are always exceptions, and some of the announcements at the Microsoft Fabric Conference 2025 fall into this category because I have worked with them enough to provide hands-on feedback.

In short, these are the topics I am covering in this blog post:

  • Direct Lake and Import mode
  • Calendars in DAX
  • User-Defined Functions (UDF) in DAX

These weren’t the headline-grabbers of the conference, but Marco explains the importance behind each of them.

Comments closed

Performance Profiles of SUM() and SUMX() in DAX

Eugene Meidinger blows the doors off of this conspiracy:

For years, I told people to avoid iterators. I compared them to cursors in SQL, which are really bad, or for loops in C# which are normally fine. I knew that DAX was column based and that it often broke down when doing row-based operations, but I couldn’t tell you why.

Advice to avoid iterators is often based on a misunderstanding and a misapprehension of how the Vertipaq engine works. If you are blindly giving this advice out, like I was, you are promoting a fundamental misunderstanding of how DAX works.

Eugene has since opened his eyes and can see through the lies.

Comments closed

Building a Top N Analysis in Power BI

Hamza Boubou builds a dynamic report:

There was a requirement from my client that seemed simple at first but turned out to be a Trojan horse after deeper investigation. The goal was to create a Power BI Time Comparisons Top N Analysis page, giving users complete control over the Top/Bottom N products based on multiple metrics. Users needed to define the period, compare it with other periods, and adjust the N parameter dynamically.

Read on to see how Hamza was able to solve this customer request.

Comments closed