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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
meozalp
Employee
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
Community Champion
Community Champion

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
Community Champion
Community Champion

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
Employee
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
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors