The Definitive Guide to DAX second edition now available worldwide
The second edition of The Definitive Guide to DAX is now available worldwide! This blog post explains why we felt the need to rewrite the book and describes what happens behind the scenes when...
View ArticleBlank row in DAX
There are two functions in DAX that return the list of values of a column: VALUES and DISTINCT. This article describes the difference between the two, explaining the details of the blank row added to...
View ArticleCreating a slicer that filters multiple columns in Power BI
This article describes how to create a slicer showing the values of multiple columns, applying the filter on any of the underlying columns. Power BI provides slicers for single columns, but there are...
View ArticlePrevious year up to a certain date
This article describes how to compute previous year values up to a certain date. This is useful in case the data is presenting incomplete months or years. If it is necessary to compare one month...
View ArticleVertiPaq Analyzer 2.0 Preview 1
In 2015 I released the first version of VertiPaq Analyzer, a tool to quickly analyze the structure and data distribution of a Tabular model that can be used with Analysis Services and Power BI. During...
View ArticleStrong and weak relationships in Power BI
This article describes what weak relationships are and the differences between strong and weak relationship in Power BI and DAX. Weak relationships were introduced in Power BI with composite models in...
View ArticleNaming temporary columns in DAX
This article describes a naming convention for temporary columns in DAX expressions to avoid ambiguity with the measure reference notation. Table functions in DAX expressions can create temporary...
View ArticleShowing the top 5 products and Other row
This article shows how to add an additional “other” row to the selection obtained using the Top N filter in a Power BI report. Power BI offers the ability to apply a Top N constraint in a visual level...
View ArticleAnalyzing the performance of DISTINCTCOUNT in DAX
This article describes how to analyze the performance of a DAX measure based on a DISTINCTCOUNT calculation and how to evaluate possible optimizations. The VertiPaq engine is used by DAX when you query...
View ArticleComparing DAX calculated columns with Power Query computed columns
This article provides information to help choose between DAX and Power Query when a table needs to compute additional columns. When building a data model in Power BI, Analysis Services, or Power Pivot,...
View ArticleChoosing Azure Analysis Services for large datasets
I often get questions about use cases for Azure Analysis Services. So I wanted to do a quick recap of the points I commonly discuss in these conversations, and have them readily available for the next...
View ArticleThe importance of star schemas in Power BI
Creating a star schema in Power BI is the best practice to improve performance and more importantly, to ensure accurate results! This article shows why a star schema can fix some of the issues in your...
View ArticleOptimizing conditions involving blank values in DAX
This article describes how blank values considered in a DAX conditional expression can affect its query plan and how to apply possible optimizations to improve performance in these cases. An important...
View ArticleSorting months in fiscal calendars
This article shows a basic technique used to sort months according to a fiscal calendar, by using a couple of calculated columns and the “sort by column” feature of Power BI. By default, Power BI sorts...
View ArticleUnderstanding eager vs. strict evaluation in DAX
This article describes the differences between eager evaluation and strict evaluation in DAX, empowering you to choose the best evaluation type for your data models. UPDATE 2020-01-31: The new IF.EAGER...
View ArticleUpdating tabular models for Ordinal property in calculation groups
If you created a Tabular model using one of the preview versions (CTP, RC, …) of Analysis Services 2019, you don’t have the final structure for the Ordinal attribute that Microsoft defined in the final...
View ArticleComparing with previous selected time period in DAX
This article describes how you can create a comparison with the previous time period in a visualization, regardless of whether the time periods are consecutive or not. Time intelligence calculations in...
View ArticleFrom SQL to DAX: Implementing NULLIF and COALESCE in DAX
This article describes how to implement a syntax equivalent to the T-SQL function NULLIF and the ANSI SQL function COALESCE, in DAX. As do many languages, DAX enables people to get the same result...
View ArticleWhat has happened in the DAX world in 2019
Another year has gone by and it has now been 10 years since DAX was first introduced in late 2009. As usual, it is time to review the past year and to take a look at the year ahead. New DAX functions...
View ArticleWhy reports obtained with Analyze in Excel can be slower
This article describes the reasons why an Excel pivot table may be slow when using the Analyze in Excel feature of Power BI. Power BI uses the Analysis Services Tabular engine to process queries coming...
View Article