2. Measures and Calculated Columns

If you wish to follow along, you can find PBIX/Excel files at the bottom of the article. 


Krešimir Ledinski

Krešimir Ledinski

Microsoft certified expert in the field of Business Intelligence. His biggest passions are DAX, M, and data modeling.

Kristian Radoš

Kristian Radoš

Experienced data analyst. Advanced in SQL, PowerApps and M language.

DAX Demystified

DAX is a functional language. It consists of more than 250 functions. This seems like a lot right? Learning how to properly use 250+ functions seems like a daunting job, but here is the secret. You do not need to learn by heart all of them but instead try a different approach.

DAX Functions receive inputs and have an output. focus on those elements first! Do you know how many different types of inputs can DAX function receive? 3.
These are:

If the function receives a column as input, then most times you can only reference native data model column reference.

If a function receives table or expression input, that input can be either reference to a data model object/value, or any other function which returns a table or expression as a result.

to accelerate your DAX training, you should start looking at it from the point of functions with 3 types of inputs and a single output. Unless input is a column reference, you can use any other DAX function/combination of functions that will output a proper table or scalar expression. Now the complexity of 250 different functions falls into a range of understanding of what each function receives and which data transformations they produce.

To further lower the overwhelming feeling of needing to learn many DAX functions prior to writing code, know this. Like in many other situations in life, you can apply Pareto principle to learning DAX functions. Most of the time you will use 20% of functions to produce 80% of code results. In this guide, we will cover all the most important ones. the other 80% of functions are problem specific. Once you’ll need them, you will find their description online and check their input requirements.

DAX Objects

When the data is imported into a data model, you can further enrich it with the following most important object types:

  • Measures
  • Calculated columns
  • Calculated tables
  • calculation groups (Items)

You can think of these objects as containers for your DAX code. Some of these containers are materialized in your data model, such as calculated tables and columns. The other ones produce results based on different sets of filters. These are called Measures.

Calculation groups are special type of table objects. There is also a newly introduced object in DAX called Field Parameters, which we will cover in later additions to the guide. We also plan to release a cheatsheet on calculation groups.

Let’s focus on the first 2 types. They have different purposes in a data model, and you need to understand the differences before using them properly.

We wish to create the best possible content!

If you are a novice looking for a better explanation of any element of the topic, feel free to comment on the part you didn't quite understand!

If you are an expert in DAX and believe certain topic lacks important internals, your comments are more than welcomed!


Notify of
Inline Feedbacks
View all comments


Prefer live training or consultations?

Table of Content

Table of Content


Receive the latest updates on all business analyst news across all platforms.

By subscribing you are agreeing to our Privacy Policy.

Related blog posts


Variables are used in almost every measure you will create. The reason we introduce them last is that they use all other parts of DAX code to produce faster, more powerful and maintainable code. Variables are like containers of a part of the DAX code which can be used throughout...

Read more


Explanation ALLSELECTED is one of the most complex functions in DAX. When used improperly it can lead to unexpected results. As a rule of thumb, you should not use it in iterative functions. It is preferable to use it only as a CALCULATE filter remover, not as a table function....

Read more

6.7 Lineage

What is Lineage? Lineage is a part of DAX mechanics that enables us to use tables as filter arguments for the CALCULATE function. It’s also used in row2filter context transition and other aspects of the data model that involve filter propagation throughout the model. We can state that lineage is...

Read more

6.6 Crossfilter

Crossfilter is a feature of DAX when it filters the underlying dataset even though there aren’t any visual filters present. Introduction In this example, we will explain a very important feature of CALCULATE filter arguments. We will also explain why you should always prefer the combination of ALL/REMOVEFILTER + VALUES...

Read more
Would love your thoughts, please comment.x
Scroll to Top