22-25 April 2026

First Steps in DAX Optimization

Proposed session for SQLBits 2026

TL; DR

A full day dedicated to optimize DAX code and semantic models in Power BI

Session Details

When you create a Power BI report, you might hit some performance issues when you have a large amount of data, complex data models, or complex DAX expressions in your measures. The first goal of this tutorial is to discover possible bottlenecks in analyzing the execution of DAX calculations using tools such as DAX Studio and VertiPaq Analyzer. You can capture and read essential information from a DAX query plan. With this knowledge, the next step is to evaluate different strategies to improve query performance. During this training, you learn the most common patterns that could have performance issues and possible workarounds to solve them.
The training is delivered as a seminar, and the content is very dense. You can try the same techniques in your notebook during the course, but you should consider taking notes during the seminar and practicing later.
The goal is to optimize the report execution and not the refresh time. Thus, this training only considers the performance of DAX expressions and does not cover refresh operation performance related to M code in Query Editor.
The examples are in Power BI, but you can also apply the concept of this training to Power Pivot, Analysis Services Tabular, and Azure Analysis Services.

3 things you'll get out of this session

Learn the internals of Power BI Learn how to measure performance of semantic models Learn how to optimize DAX

Speakers

Alberto Ferrari

sqlbi.com

Alberto Ferrari's previous sessions

Time Intelligence in Power BI
Every Power BI model has dates and the need of calculation over dates to aggregate and compare data, like Year-To-Date, Same-Period-Last-Year, Moving Average, and so on. Quick measures and DAX functions can help, but how do you manage holidays, working days, weeks based fiscal calendars and any non-standard calculation? This session provides you the best practices to correctly shape a data model and to implement time intelligence calculations using both built-in DAX functions and custom DAX calculation for more complex and non-standard requirements.
 
When you should avoid using bidirectional filters in Power BI
Bidirectional filters are a powerful tool, probably too powerful for most data models. In this quick talk we show the reason why most users should avoid using the feature, unless they understand well the implications.
 
Why star schema is your best choice in Power BI
In this session Alberto compares different models with a star schema, showing the technical details why a star schema is quite always the best choice.
 
Using calculation groups in DAX
This session introduces calculation groups, when they should be used and several examples of use cases. You will also learn how calculation groups work internally and what are the limits of this amazing tool.
 
Should you use bidirectional filters in Tabular?
The quick answer is no, you should not. As with any rule, there are exceptions. When used with care, bidirectional filters are a powerful weapon in the hands of a skilled data modeller.
 
Understanding relationships in Power BI
Relationships are present in any data model. Multiple relationships between the same tables and bidirectional filters increase the complexity of this topic. In this session, we discover the complexity behind relationships in complex models.
 
Aggregations in Power BI
We introduce the concept of aggregation, we show several examples of their usage understanding the advantages and the limitations of aggregations, with the goal of building a solid understanding on how and when to use the feature in data models.
 
DAX Optimization Examples
In this session we analyze some DAX expressions and Tabular models and, through the usage of DAX Studio and some understanding of the VertiPaq model, we will look at how to optimize them.
 
Optimizing multi-billion row tables in Tabular
In this session we will show you how Tabular performs when you are querying a model with many billions rows, conduct a complete analysis of the model searching for optimization ideas and implement them on the fly, so to look at the effect of using th
 
Optimizing & Analyzing DAX Query Plans
Alberto will start with a simple query and he will perform on stage all the necessary steps to optimize it, showing you the tools ant the techniques used to identify the bottleneck and to fix the performance issues
 
Advanced Modeling with Analysis Services Tabular
This session goes beyond the classical star schema modeling, exploring new techniques to model data with Power Pivot and SSAS Tabular. You will see how brute-force power in DAX allows different data models than those used in SSAS Multidimensional
 
DAX Query Engine Internals
In this session, we will analyze the way DAX solves filtering. Starting from simple queries, we will follow the steps DAX does with the filter context, discovering the internals of the query engine of DAX.
 
Time Intelligence in DAX
We are going to show how to compute classical time intelligence with the built-in DAX functions. Then, we will show some more complex time intelligence formulas that require to think out of the box, using advanced data modeling techniques.
 
PowerPivot Advanced Data Modeling
During this session we are going to analyze common business problems that require and advanced usage of DAX functions and data modeling with PowerPivot.
 
Many-to-Many Relationships in DAX
Deep dive into the handling of many to many relationships in DAX. How to make them work and how to optimize their speed thorugh many patterns and live examples of M2M usage.