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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
augustindelaf
Impactful Individual
Impactful Individual

IF formula with multiple conditions

Hi,

 

I would like to create a DAX formula with a IF statement.

my formula would be :

 

 IF('DATA'[Work Stream ] ="WS 1.1";SUM('DATA'[KPI 2 Monthly Actual]);

 IF('DATA'[Work Stream ] ="WS 2.1";SUM('DATA'[KPI 2 Monthly Actual]);

 IF('DATA'[Work Stream ] ="WS 2.2";AVERAGE('DATA'[KPI 2 Monthly Actual]);

 IF('DATA'[Work Stream ] ="WS 3.1";SUM('DATA'[KPI 2 Monthly Actual]);

 IF('DATA'[Work Stream ] ="WS 3.4";SUM('DATA'[KPI 2 Monthly Actual]);

 IF('DATA'[Work Stream ] ="WS 3.5";AVERAGE('DATA'[KPI 2 Monthly Actual])

 

Maybe it is possible with a look up Table ? (1st field : Work Stream, 2nd field : aggregation type) 

anyway, even without look up Table it can be great !

Thank you for your Quick answer!

 

1 ACCEPTED SOLUTION

@v-qiuyu-msft,

 

a lady from the MS support gave me a solution that seems ok :

 

---

"

Hi Augustin,

 

Here are the measures that you will need:

 

  1. SelectedValue = IF (ISFILTERED ( Example[Indicator1] ) && HASONEVALUE ( Example[Indicator1] );LASTNONBLANK ( Example[Indicator1]; 0 );"a default value");
  2. SumValues = SUM(Example[Values]);
  3. VarKPI2MonthlyTGTR = IF([SelectedValue]="WS"; AVERAGE(Example[Values]); [SumValues]);

 

In will need to substitute what is in orange with your dimensions.

 

And here are some interesting documentation:

 https://msdn.microsoft.com/en-us/library/ee634396.aspx;
http://www.sqlbi.com/articles/calculated-columns-and-measures-in-dax/;

 

"

---

 

 

View solution in original post

14 REPLIES 14
Shafi293
Frequent Visitor

Try This if u want ...

CalculatedColumn= SWITCH(
TRUE(),
TableName[ColumnName] = "A",
Value(123),
TableName[ColumnName] = "B",
Value(124),
TableName[ColumnName] = "C",
Value(125),
TableName[ColumnName] = "D",
Value(126),
TableName[ColumnName] = "E",
Value(127),
TableName[ColumnName] = "F",
Value(128),
TableName[ColumnName] = "G",
Value(129),
TableName[ColumnName] = "H",
Value(130),
TableName[ColumnName] = "I",
Value(131),
TableName[ColumnName] = "J",
Value(132),
TableName[ColumnName] = "K",
Value(134),
TableName[ColumnName]= "L",
Value(135),
TableName[ColumnName] = "M",
Value(136),

-1)

bbdiver526
Frequent Visitor

I'm relatively new to PowerBI and DAX and I'm having a problem with a similar issue (not as complicated I think). I need to use the volume if it is current YTD, Actuals and ITA otherwise 0.

 

These are the two DAX statements I have tried:

_CurrentYearITA = IF('AMER DBP Retail Bookings'[DTF_Current_ITA_YTD] = "Y"||'AMER DBP Retail Bookings'[PL_PlanCode] = "ACTUALS"|| 'AMER DBP Retail Bookings'[CO_Company] = "ITA";'AMER DBP Retail Bookings'[_Volume];0)

 

and

 

_CurrentYearITA = IF(AND('AMER DBP Retail Bookings'[DTF_Current_ITA_YTD] = "Y",'AMER DBP Retail Bookings'[PL_PlanCode] = "ACTUALS",'AMER DBP Retail Bookings'[CO_Company] = "ITA"),'AMER DBP Retail Bookings'[_Volume],0)

 

The first one gives a bad syntax error starting with the semi-colon after "ITA" and the second one says too many arguments for AND function.

 

Any assistance would be appreciated.

v-qiuyu-msft
Community Support
Community Support

Hi @augustindelaf,

 

Please try to create a measure like below to see if it meet your requirement:

 

Measure = SWITCH(TRUE(),MAX('DATA(Update KPIs)'[Work Stream ])="WS 1.1" || MAX('DATA(Update KPIs)'[Work Stream ])="WS2.1" || MAX('DATA(Update KPIs)'[Work Stream ])="WS 3.1" || MAX('DATA(Update KPIs)'[Work Stream ])="WS 3.4",SUM('DATA(Update KPIs)'[KPI 2 Monthly Actual]),
 MAX('DATA(Update KPIs)'[Work Stream ])="WS 2.2" || MAX('DATA(Update KPIs)'[Work Stream ])="WS 3.5",AVERAGE('DATA(Update KPIs)'[KPI 2 Monthly Actual]))

 

Best Regards,
Qiuyun Yu

Community Support Team _ Qiuyun Yu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-qiuyu-msft,

 

a lady from the MS support gave me a solution that seems ok :

 

---

"

Hi Augustin,

 

Here are the measures that you will need:

 

  1. SelectedValue = IF (ISFILTERED ( Example[Indicator1] ) && HASONEVALUE ( Example[Indicator1] );LASTNONBLANK ( Example[Indicator1]; 0 );"a default value");
  2. SumValues = SUM(Example[Values]);
  3. VarKPI2MonthlyTGTR = IF([SelectedValue]="WS"; AVERAGE(Example[Values]); [SumValues]);

 

In will need to substitute what is in orange with your dimensions.

 

And here are some interesting documentation:

 https://msdn.microsoft.com/en-us/library/ee634396.aspx;
http://www.sqlbi.com/articles/calculated-columns-and-measures-in-dax/;

 

"

---

 

 

MFelix
Super User
Super User

Hi @augustindelaf,

 

I believe that the Switch function will work much better than the IF, try this.

 

 

SWITCH(
		TRUE();
		'DATA'[Work Stream ] = "WS 1.1";
				SUM('DATA'[KPI 2 Monthly Actual]);
		'DATA'[Work Stream ] ="WS 2.1";
				SUM('DATA'[KPI 2 Monthly Actual]);
		'DATA'[Work Stream ] ="WS 2.2";
				AVERAGE('DATA'[KPI 2 Monthly Actual]);
		'DATA'[Work Stream ] ="WS 3.1";
				SUM('DATA'[KPI 2 Monthly Actual]);
		'DATA'[Work Stream ] ="WS 3.4";
				SUM('DATA'[KPI 2 Monthly Actual]);
		'DATA'[Work Stream ] ="WS 3.5";
				AVERAGE('DATA'[KPI 2 Monthly Actual]);
		0)

 

You can change the final 0 by the default value you want.

 

Regards

 

MFelix


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



augustindelaf
Impactful Individual
Impactful Individual

FYI : 

 

it must be row by row operation,

 

then it has to be a calculated column, and not a measure.

thank you

Hi @augustindelaf,

 

Try below formula

 

Formula = IF(AND('DATA'[Work Stream ] ="WS 1.1", 'DATA'[Work Stream ] ="WS 2.1"),SUM('DATA'[KPI 2 Monthly Actual]),
IF(AND('DATA'[Work Stream ] ="WS 3.1", 'DATA'[Work Stream ] ="WS 3.4"),SUM('DATA'[KPI 2 Monthly Actual]),
IF(AND('DATA'[Work Stream ] ="WS 2.2", 'DATA'[Work Stream ] ="WS 3.5"),AVERAGE('DATA'[KPI 2 Monthly Actual]),0)))

 

Hope it work

 

Thanks,

Anupam

 

Hi,

 

@anupampandey@MFelix, thanks for your solution.

 

I will keep the SWITCH solution, which to me is the easiest one.

just one problem : it does not act within the current filter context, but doing sums or averages without any filtering. 

 

and i have some filters applied (owner, action ID, Region...) but the results appear as if filters were not applied.

can you tell me how to do it to the current filter context?

it is a calculated column, not a measure, btw

 

thanks !

Hi @augustindelaf,

 

How did you set filters (owner, action ID, Region...)? If you use the calculated column to return results, filters will not affect the value in this column. I think you might need to create a measure which can be filtered.

 

Please share the sample table about 'DATA'[Work Stream ], 'DATA'[KPI 2 Monthly Actual], 'DATA'[KPI 2 Monthly Actual] and owner, action ID, Region. And show us which filtered results you want, so that we can try to create a measure to achieve your requirements.

 

By the way, regarding measures and calculated columns, please take a look at below:

Measures in Power BI Desktop

Tutorial: Create calculated columns in Power BI Desktop

 

Best Regards,
Qiuyun Yu

Community Support Team _ Qiuyun Yu
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

hI @v-qiuyu-msft,

 

Thank you for answering me and proposing me to send a sample.

I don't really know Measures and how for values to act in the current filter context.

 

link to the file is here :

https://filetea.me/n3wVarFBmlySNqeM61cTuQJrg

 

please go to the 1st Tab (Monthly), you will see filters on the Top. (blue ribbon)

according to some values I need some fields   to be in average or sums.

 

thanks !

 

 

 

 

if 1st link doesn't work, I put the file on google drive :

 

https://drive.google.com/file/d/0B0os9aXobQDBLWJhQkM4dzg3alk/view?usp=sharing

 

@v-qiuyu-msft, any news ?

 

I would be happy if you could help me.

thanks in advance !

Since you are aggregating, wouldn't you want to create it as a measure? Then you have a visual with [Workstream] as an axis or rows and you place the measure in as values

Maybe I don't understand enough the difference between a Measure and a Calc Column.

 

But my question is : 

 

-how to make that sum &  average work  IN the current filter context ? 

if a measure can solve that, then I will do a measure.

 

thanks

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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