AutoExist and Normalization
The autoexist feature used by MDX queries sent to an Analysis Services or Power Pivot data models can have different behaviors depending on the normalization level. This article describes these...
View ArticleAll the secrets of SUMMARIZE
SUMMARIZE is a function that looks quite simple, but its functionality hides some secrets that might surprise even seasoned DAX coders. In this article, we analyze the behavior of SUMMARIZE, in order...
View ArticleVariables in DAX
In this article, you learn a new feature in DAX 2015: variables. The 2015 version of the DAX language has many new functions, but none of them is a game changer for the language as variables are....
View ArticleUnderstanding ALLSELECTED
ALLSELECTED looks like a special function that is able to understand what the user selected in the pivot table, retrieving the original filter context under which the pivot table is running. However,...
View ArticleRow Context and Filter Context in DAX
Understanding the difference between row context and filter context is important to use DAX correctly. This article introduces you to these two concepts. Row Context DAX expressions operate on columns,...
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 ArticleTransition Matrix Using Calculated Tables
In the 2015 September update, Power BI introduced calculated tables, which are computed using DAX expressions instead of being loaded from a data source. This article shows the usage of calculated...
View ArticleQuerying in DAX
DAX is not only an expression language, but also a query language and, when it comes to performance, the xVelocity in-memory engine is second to none. Scanning fact tables and performing leaf-level...
View ArticleAdvanced 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...
View ArticleBudgeting with PowerPivot
Power BI offers new features for creating dashboards on the cloud. In this session, you will learn how to create data models, display visualizations and synchronize cloud data with on premise data...
View ArticleDAX 101
In this two-hours workshop you learn the basics of the DAX language. Alberto will introduce you to the concept of calculated columns, measures, basic data modeling with some practical examples that you...
View ArticleAdvanced DAX
This session is a natural continuation of DAX 101 and aims to teach you some of the advanced features of DAX. Alberto will explain in detail the concepts of filter context and row context, which are...
View ArticleRELATED in a Query
In DAX, columns have lineage. Knowing when lineage is maintained in a DAX expression and when it is not, is an important skill to write effective code. As a general rule, column references maintain...
View ArticleComputing New Customers in DAX
In this article, Alberto Ferrari describes a new efficient way to compute returning customers in DAX thanks to an idea suggested by a student attending an Optimizing DAX workshop. Computing new and...
View ArticleUsing ALLEXCEPT versus ALL and VALUES
This article describes the semantic difference between ALLEXCEPT and the joint use of ALL and VALUES, showing practical examples of the different results in Power BI and SSAS 2016. If you are a loyal...
View ArticleAnalyzing events with a duration in DAX
This article analyzes how to efficiently work with events that lasts over time, such as the duration of an order considering the distance between order date and ship date. Whenever we speak about...
View ArticleVertiPaq Analyzer 1.7
VertiPaq Analyzer is useful to analyze VertiPaq storage structures for a data model in Analysis Services Tabular. Learn how to connect VertiPaq Analyzer to Power BI and to SSAS Tabular, and see quick...
View ArticleDirectQuery in Analysis Services 2016
Coming soon: This page will link a whitepaper about DirectQuery in Analysis Services 2016 published by MS and written by Marco Russo and Alberto Ferrari. Summary: DirectQuery transforms the Microsoft...
View ArticleContext Transition and Expanded Tables
This article describes how table expansion and filter context propagation are important DAX concepts to understand and fix small glitches in DAX expressions. I keep on telling my students how important...
View ArticleFiltering Tables in DAX
This article describes a number of techniques available to filter tables in DAX, showing possible pitfalls that you can avoid once you know them, in particular using bidirectional filters. One of the...
View ArticleHow to compute index numbers at top speed
This article presents different techniques to compute a rownumber column in DAX based on a specific ranking, comparing slow and optimized approaches. In several data models, you need to assign an index...
View ArticleOptimizing multi-billion row tables in Tabular
Tabular is a great engine that is capable of tremendous performance. That said, when your model gets bigger, you need to use the most sophisticated tools and techniques to obtain the best performance...
View Article