March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Dear Experts
I am beginner DAX user and I am trying to create filter that combine data from two columns containing names.
source data looks something like this:
Name1 | Name2 |
A | B |
A | C |
C | A |
B | A |
C | A |
I would like the filter to treat AB the same as BA. My idea was to create additional column using "Concatenatex" and sort result alphabetically. The problem is that function join data from all rows and I run out of ideas how to restrict context just for only one, current row.
For now, it looks like this:
Name1 | Name2 | New column |
A | B | AB AC AC AB AC |
A | C | AB AC AC AB AC |
C | A | AB AC AC AB AC |
B | A | AB AC AC AB AC |
C | A | AB AC AC AB AC |
Structure I would like to achieve is:
Name1 | Name2 | New column |
A | B | AB |
A | C | AC |
C | A | AC |
B | A | AB |
C | A | AC |
Or maybe there is other solution to this case? I would appreciate all your help.
Solved! Go to Solution.
I assume you use this DAX for the calculated column.
CONCATENATEX('Table',[Name1] & [Name2], " ")
But instead, you should use the following.
Column = IF([Name1]<[Name2], [Name1] & [Name2], [Name2] & [Name1])
If you wish to use a measure instead, use the following:
Measure = IF(MAX([Name1])<MAX([Name2]), MAX([Name1]) & MAX([Name2]), MAX([Name2]) & MAX([Name1]))
For measure, there is row context.
Measures are evaluated row by row, depending on the visuals.
If you are using a table, the current "row" will be showing one value,
so MAX() of that value of the "row" will always be that exact one value.
And please accept my asnwer a the solution so others with the same problem can look for this thread.
You can also use MIN(), AVERAGE(), etc. But by the time I was learning and/or asking, I found most people use MAX().
I assume you use this DAX for the calculated column.
CONCATENATEX('Table',[Name1] & [Name2], " ")
But instead, you should use the following.
Column = IF([Name1]<[Name2], [Name1] & [Name2], [Name2] & [Name1])
If you wish to use a measure instead, use the following:
Measure = IF(MAX([Name1])<MAX([Name2]), MAX([Name1]) & MAX([Name2]), MAX([Name2]) & MAX([Name1]))
Thank you!
I used your “column” solution, and It seems so obvious now.. but as a newbie I try to overcomplicate everything using build in functions.
On the other hand, I wouldn’t think of using “<” on text. 😉
And as regards our measure, what is the “MAX” used for? It seems like it would always return the same value. Or am I misunderstanding that?
For measure, there is row context.
Measures are evaluated row by row, depending on the visuals.
If you are using a table, the current "row" will be showing one value,
so MAX() of that value of the "row" will always be that exact one value.
And please accept my asnwer a the solution so others with the same problem can look for this thread.
You can also use MIN(), AVERAGE(), etc. But by the time I was learning and/or asking, I found most people use MAX().
Both already accepted. 🙂
Thank you very much for your time and support.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.
User | Count |
---|---|
124 | |
87 | |
85 | |
70 | |
51 |
User | Count |
---|---|
205 | |
153 | |
97 | |
79 | |
69 |