This tutorial will talk about a common scenario that’s frequently asked in the Enterprise DNA support forum. You’re going to learn how to work out the most recent or the last value in your data using the MAXX and FILTER DAX functions in Power BI.
For this example, there’s a list of data and within that list the customer is referenced multiple times. So, you want to work out the recent value for that particular customer name.
The example presented in the forums was in the form of a survey data. You want to work out the most recent or the last time that a particular customer took the survey.
There are a couple of ways to solve this. You can perform the solution using calculated columns or measures.
Using a Calculated Column gives more aesthetic while using a Measure allows your models to be more dynamic.
Here’s how to work out the most recent date for any dimension in your data set using two solutions.
Solution #1: Using Calculated Columns
Here’s how to solve the problem using Calculated Columns.
1. Create A New Column
The first step is to create a new column in the table that was given as an example in the forums. This new column will contain the Max Date.
This is the logic used on the formula for the Max Date:
Whenever you encounter problems in Power BI that require the maximum date or number, the MAXX DAX function is the best one to use.
This function is the key in creating the solution for this example.
2. Create A Variable
Now, you need to create a new variable using the VAR function. In this example, the new variable is called CurrentName.
For each different row, you want to work out the name of each person. This part is quite easy since you simply need to reference the column name in a Calculated Column.
At every single row, you only want to isolate the people with the same name as the current row.
Looking at the table, you can see that it has three different names with two entries for each name.
You need to isolate those names and then work out the maximum date that a particular person has transacted with you. The transaction could be in terms of completing a purchase or survey.
3. Create A FILTER Statement
To isolate the names, you first need to use the FILTER and ALL function.
This will remove all the filters within the table. This will also iterate through every single row regardless of context.
Then, you need to work out if the Name in the Survey Data is equal to the CurrentName variable.
4. Use The MAXX Function
Now, the MAXX DAX function is going to get a table containing only two rows. This is the result of filtering and iterating through each row to find out if the name is equal to the current name. In this case, the current name is John Smith.
You then need to evaluate the max. The MAXX DAX function calculates the max for you. So, all you need to do is put the column in the formula:
When you change the Max Date column’s format into a date, you’ll see that the max date for John Smith is February 23.
The max date for Nancy Jones is September 25, while it’s September 22 for Elaine Anderson.
This is a very simple technique and its logic can be applied to different scenarios. You can use this to find out the last purchase or sale amount.
Solution #2: Using A Measure
Here’s how to solve this problem using Measures.
Using measures allows you to work out the last date and then branch out into other calculations.
This is the best way to run any calculations in Power BI.
1. Create A Table
First, you need to create a table.
This table only contains two columns. The information contained in the other columns are irrelevant for this calculation.
2. Create A New Measure
You then need to create a new measure.
This measure has the same formula that was used in the calculated columns solution. However, you need to change the Survey table to Survey Data.
And instead of simply referencing the column name, you need to use the SELECTEDVALUE function.
This captures what context you’re in.
SELECTEDVALUE enables you to grab the text value from its context.
This technique is also very dynamic compared to other calculations since you can take out the date column and only retain the Max Date for each customer.
Solutions don’t have to be difficult. They can be done using simple ways.
For this example, you can either go for the Calculated Columns solution, or use Measures.
Hopefully, you understood the concept of how to manipulate the virtual table within the MAXX DAX function.
You can also use the FILTER function to iterate through information and then adjust the virtual table based on the parameter you put into the FILTER statement. MAXX will then do the work from here.
All the best,
***** Learning Power BI? *****
FREE COURSE – Ultimate Beginners Guide To Power BI
FREE COURSE – Ultimate Beginners Guide To DAX
FREE – 60 Page DAX Reference Guide Download
FREE – Power BI Resource
Enterprise DNA Membership
Enterprise DNA Online
Enterprise DNA Events
***** Related Support Forum Posts *****
Calculate The Most Recent Value With DAX In Power BI
Return Value Based On Most Recent Date
Date Of Last Sale With Calculated Sale Price
For more calculate recent value support queries to review see here….