Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be 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

Reply
meozalp
Microsoft Employee
Microsoft Employee

DAX formula to provide variation within the same values of a single column

Hello,

 

This is my dataset:

Test ScenarioTestCategory 1Test Category 2
Test1510
Test269
Test378
Test434
Test51012
Test656
Test7910

 

I want to have a slicer and once either of the two test scenarios are selected, present the variation in results.

 

Test ScenarioTestCategory 1Test Category 2
Test1510
Test269
Variation20%-10%

 

How can I write a DAX measure that will calculate the Variation tab within the same column?

 

Thank you.

3 ACCEPTED SOLUTIONS
JustJan
Responsive Resident
Responsive Resident

Hi @meozalp ,

 

A measure like this gets the result:

 

Value1 = 
var r = DISTINCTCOUNT('Table'[Test Scenario])
var v1 = SELECTEDVALUE('Table'[TestCategory 1])

var x1 = sumx(filter('Table', 'Table'[Test Scenario] = MIN('Table'[Test Scenario])),'Table'[TestCategory 1])
var x2 = sumx(filter('Table', 'Table'[Test Scenario] = Max('Table'[Test Scenario])),'Table'[TestCategory 1])

var result =
switch ( TRUE(),
r=1, v1,
r=2, FORMAT(DIVIDE(x1-x2,x1), "0%"),
"Too many tests selected")

return result

 

2020-07-18 02_02_48-Untitled - Power BI Desktop.png

So the assumption here is that the test with the lower number is the 100%, for value2 just copy the measure and change the [Test Category1] in [Category 2]

 

Jan

if this is a solution for you, don't forget to mark it as such. thanks

View solution in original post

JustJan
Responsive Resident
Responsive Resident

Hello @meozalp 

 

The brackets in the formula are not in the right place.

 

var x1 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MIN('TestResultNtttcp'[TestScenario])),'TestResultNtttcp'[cpu])
var x2 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MAX('TestResultNtttcp'[TestScenario])),'TestResultNtttcp'[cpu])
 
Regards,
 
Jan

View solution in original post

AntrikshSharma
Super User
Super User

Download the PBI file from here: https://drive.google.com/file/d/1DSD_wjlDUu9Oibx8FSfwwreAHYrZMMd1/view?usp=sharing

I added an index column to do the calculations.

 

1.PNG

View solution in original post

5 REPLIES 5
AntrikshSharma
Super User
Super User

Download the PBI file from here: https://drive.google.com/file/d/1DSD_wjlDUu9Oibx8FSfwwreAHYrZMMd1/view?usp=sharing

I added an index column to do the calculations.

 

1.PNG

@AntrikshSharma @JustJan Thanks a lot for your help.

JustJan
Responsive Resident
Responsive Resident

Hello @meozalp 

 

The brackets in the formula are not in the right place.

 

var x1 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MIN('TestResultNtttcp'[TestScenario])),'TestResultNtttcp'[cpu])
var x2 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MAX('TestResultNtttcp'[TestScenario])),'TestResultNtttcp'[cpu])
 
Regards,
 
Jan
meozalp
Microsoft Employee
Microsoft Employee

Hi @JustJan ,

 

Thanks a lot for the prompt reply.

I am getting an error: Too few arguments were passed to the SUMX function. Could you please help reviewing it?

 

Value1 =
var r = DISTINCTCOUNT('TestResultNtttcp'[TestScenario])
var v1 = SELECTEDVALUE('TestResultNtttcp'[cpu])
var x1 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MIN('TestResultNtttcp'[TestScenario],'TestResultNtttcp'[cpu])))
var x2 = SUMX(FILTER('TestResultNtttcp','TestResultNtttcp'[TestScenario] = MAX('TestResultNtttcp'[TestScenario],'TestResultNtttcp'[cpu])))

var result =
SWITCH( TRUE(),
r=1, v1,
r=2, FORMAT(DIVIDE(x1-x2,x1), "0%"),
"Too many tests selected")

return result

 

Melih

JustJan
Responsive Resident
Responsive Resident

Hi @meozalp ,

 

A measure like this gets the result:

 

Value1 = 
var r = DISTINCTCOUNT('Table'[Test Scenario])
var v1 = SELECTEDVALUE('Table'[TestCategory 1])

var x1 = sumx(filter('Table', 'Table'[Test Scenario] = MIN('Table'[Test Scenario])),'Table'[TestCategory 1])
var x2 = sumx(filter('Table', 'Table'[Test Scenario] = Max('Table'[Test Scenario])),'Table'[TestCategory 1])

var result =
switch ( TRUE(),
r=1, v1,
r=2, FORMAT(DIVIDE(x1-x2,x1), "0%"),
"Too many tests selected")

return result

 

2020-07-18 02_02_48-Untitled - Power BI Desktop.png

So the assumption here is that the test with the lower number is the 100%, for value2 just copy the measure and change the [Test Category1] in [Category 2]

 

Jan

if this is a solution for you, don't forget to mark it as such. thanks

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.