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 ArticleIntroducing VISUAL SHAPE for visual calculations in Power BI
This article introduces the VISUAL SHAPE clause, which defines a hierarchical structure for a table used in visual calculations. Visual calculations, introduced as a preview feature with the February...
View ArticleUnderstanding Visual Calculations in DAX
Visual calculations are a new feature in DAX that aims to simplify the use of DAX for users by introducing calculations at the visual level rather than at the model level. This whitepaper is a draft....
View ArticleVpax-Obfuscator: a library to obfuscate VPAX files
Last week, we released the first open-source library to obfuscate VPAX files: the Vpax-Obfuscator, also available as a NuGet package and as a command line tool (CLI). While the VPAX file contains only...
View ArticleIntroducing EXPAND and COLLAPSE for visual calculations in Power BI
This article introduces the two basic visual context navigation functions: EXPAND and COLLAPSE. In a previous article, we introduced VISUAL SHAPE, the table modifier that adds a hierarchical structure...
View ArticleUsing EXPAND and COLLAPSE in visual calculations
This article provides examples of visual calculations where the use of EXPAND and COLLAPSE is required to obtain the correct result. In previous articles, we introduced the concepts of visual context,...
View ArticleUsing scatterplots to find details in reports
This article describes how you can use a scatterplot visual to make more effective Power BI reports. In many reports, it is common to find large tables or matrixes with a lot of information. Business...
View ArticleDirect Lake vs. Import mode in Power BI
What is the right choice between Direct Lake and Import mode in Power BI? At SQLBI, we do not publish content until we have had enough time to experiment with and collect data about new features. We...
View ArticleWindow Functions in DAX
Learn how to use the new DAX window functions (INDEX, OFFSET, and WINDOW) to manipulate tables by sorting and partitioning data. This whitepaper is a draft. The functionalities described are currently...
View ArticleThe second edition of Optimizing DAX is complete
Almost a year ago, we announced the release of three sections (core concepts, formula engine, and VertiPaq); in November 2023, we released the DirectQuery over SQL section; now, in April 2024, we...
View ArticleAuthor’s responsibility
Digital media content creators have an ethical responsibility to journalistic integrity. All of them do; all of us… including myself. At the last few international conferences I attended (SqlBits and...
View Article