Bidirectional relationships and ambiguity in DAX
Activating bidirectional cross-filter in a Tabular data model might create ambiguous paths in the chain of relationships, resulting in very dangerous models as numbers become unpredictable. This...
View ArticlePreparing a data model for Sankey Charts in Power BI
This article describes how to correctly shape a data model and prepare data to use a Sankey Chart as a funnel, considering events related to a customer (contact, trial, subscription, renewal, and...
View ArticleNew DirectQuery modules in the Optimizing DAX video course
The DirectQuery over SQL section of the Optimizing DAX video course is now available! In May 2023, we released the second edition of Optimizing DAX, which was completed for the first three sections:...
View ArticleUsing join functions in DAX
This article describes the practical uses of NATURALLEFTOUTERJOIN and NATURALINNERJOIN in DAX. These functions are not commonly used in DAX because they do not have the same flexibility as the...
View ArticleReplacing relationships with join functions in DAX
This article describes how to join tables in DAX when there are no relationships in the data model. The data lineage plays an essential role in this scenario. In a previous article, we saw several...
View ArticleWhat happened in the DAX world in 2023
Our end-of-the-year tradition is to recap what happened in the DAX and SQLBI world and look at what is coming next. New DAX functions in 2023 Microsoft released 58 new DAX functions: LINEST, LINESTX:...
View ArticleUsing tuple syntax in DAX expressions
This article describes the use of the tuple syntax in DAX expressions to simplify comparisons involving two or more columns. The DAX language has a tuple syntax commonly used in table constructors....
View ArticleDifferences between DATEADD and PARALLELPERIOD in DAX
This article describes the difference between the results of DATEADD and PARALLELPERIOD in DAX. These differences also impact many other time intelligence functions that are syntax sugar of these two....
View ArticleAnnouncing SQLBI Days: more options to improve your DAX knowledge!
At SQLBI, Alberto Ferrari and I spend most of our time sharing our knowledge and expertise in DAX. We have been doing this for years, navigating through conferences, workshops, and videos, encountering...
View ArticleOptimizing time intelligence in DirectQuery
This article describes how to optimize time intelligence calculations with DirectQuery over SQL in Power BI by avoiding time intelligence DAX functions. NOTE: this article is an excerpt of the...
View ArticleDAX limitations with inactive relationships and row-level security (RLS)
When you apply row-level security to a semantic model, there are limitations in using the USERELATIONSHIP function. This article shows the issues, provides a workaround, and its restrictions....
View ArticleWhere are Visual Calculations and DirectLake?
The right title for this blog post should be “Guidelines for SQLBI content publishing”, but it would be too boring. And, at the time of writing, the more common questions we receive about articles that...
View ArticleWelcome, Kurt Buhler!
I am glad to announce that Kurt Buhler has started to work with us at SQLBI – we just published his first article and video, Improving data labels with format strings. Now that the cat is out of the...
View ArticleUnderstanding blank row and limited relationships
DAX creates a blank row to guarantee that results are accurate even if a regular relationship is invalid. The blank row is not created for limited relationships. This article shows the effect of not...
View ArticleImproving data labels with format strings
This article describes the different approaches to format your DAX measures in Power BI semantic models using format custom and dynamic format strings. Format strings greatly improve the usefulness of...
View ArticleWhen the new thing is not new but still good
We did it again! Yesterday, as an April Fool, we published an article written by ChatGPT-4 (Revolutionizing Power BI: Introducing the Ultimate Formula Language), which described better than I could...
View ArticleRevolutionizing Power BI: Introducing the Ultimate Formula Language
Exciting news has just landed in the Power BI universe, and it’s set to transform the way we write formulas forever! UPDATE 2023-04-02: You are reading an April Fool written by ChatGPT-4! Read When the...
View ArticleUnderstanding Context Transition
The context transition in DAX is the transformation of row contexts into an equivalent filter context performed by CALCULATE and CALCULATETABLE. Managing this behavior is the next step in learning DAX...
View ArticleCompatibility levels and engine supported by Power BI Desktop
If you use Power BI Desktop and want to know the version of the engine that you use and/or the compatibility levels supported, you can run the following DMV query: SELECT * FROM...
View ArticleUsing the SELECTEDVALUE function in DAX
This article describes how the SELECTEDVALUE DAX function simplifies the syntax required in many scenarios where you need to read a single value selected in the filter context. UPDATE 2020-01-28: The...
View Article