Forum Discussion
Kelsey024
8 years agoFrequent Visitor
DAX formula help for multiple IF statements
I am trying to create a calc column (“Meter Charges by Acct type and season”) to calculate out the metered charges based on consumption for a specific account depending on Account type AND season (su...
- 8 years ago
Hi Kelsey024
I think that this will do what you are looking for
Meter Charges by Acct type and Season = 'DETAIL WATER'[Consumption] * IF ( 'DETAIL WATER'[Season] = "Winter", IF ( 'DETAIL WATER'[Acct Type] = "IRR" || 'DETAIL WATER'[Acct Type] = "POOL" || 'DETAIL WATER'[Acct Type] = "FTN" || 'DETAIL WATER'[Acct Type] = "FNT", 1.06, IF ( 'DETAIL WATER'[Acct Type] = "BLDG" || 'DETAIL WATER'[Acct Type] = "DF", 2.31, .24 ) ), IF ( 'DETAIL WATER'[Acct Type] = "IRR" || 'DETAIL WATER'[Acct Type] = "POOL" || 'DETAIL WATER'[Acct Type] = "FTN" || 'DETAIL WATER'[Acct Type] = "FNT", 2.65, IF ( 'DETAIL WATER'[Acct Type] = "BLDG" || 'DETAIL WATER'[Acct Type] = "DF", 2.31, .24 ) ) )However I would suggest creating a rates table and using the lookup function. Rate Table like the following related to the other table by ACCT Type
Then the calculated column formula
Rate = LOOKUPVALUE(Rates[Rate],Rates[Season],'DETAIL WATER'[Season],Rates[ACCT Type],'DETAIL WATER'[Acct Type])
would get the correct rates and is easier to maintain if the rates change.
- 8 years ago
HI Kelsey024
Here is an alternative. Personally I'd put the weightings in a different table and join to that for the calcs
Acct Type Calc Rates = 'DETAIL WATER'[CONS] * SWITCH( TRUE() , 'DETAIL WATER'[ACCT TYPE]="IRR" && 'DETAIL WATER'[Season]="Winter" , 1.06 , 'DETAIL WATER'[ACCT TYPE]="IRR" , 2.65 , ---------------------------------------------------------------------------- 'DETAIL WATER'[ACCT TYPE]="FTN" && 'DETAIL WATER'[Season]="Winter" , 1.06 , 'DETAIL WATER'[ACCT TYPE]="FTN" , 2.65 , ---------------------------------------------------------------------------- 'DETAIL WATER'[ACCT TYPE]="FNT" && 'DETAIL WATER'[Season]="Winter" , 1.06 , 'DETAIL WATER'[ACCT TYPE]="FNT" , 2.65 , ---------------------------------------------------------------------------- 'DETAIL WATER'[ACCT TYPE]="BLDG" && 'DETAIL WATER'[Season]="Winter" , 2.31 , 'DETAIL WATER'[ACCT TYPE]="BLDG" , 2.31 , ---------------------------------------------------------------------------- 'DETAIL WATER'[ACCT TYPE]="DF" && 'DETAIL WATER'[Season]="Winter" , 2.31 , 'DETAIL WATER'[ACCT TYPE]="DF" , 2.31 , ---------------------------------------------------------------------------- 'DETAIL WATER'[ACCT TYPE]="IRR-R" && 'DETAIL WATER'[Season]="Winter" , 0.24 , 'DETAIL WATER'[ACCT TYPE]="IRR-R" , 0.24 , 1 )
Phil_Seamark
8 years agoMicrosoft Employee
HI Kelsey024
Here is an alternative. Personally I'd put the weightings in a different table and join to that for the calcs
Acct Type Calc Rates =
'DETAIL WATER'[CONS] *
SWITCH(
TRUE() ,
'DETAIL WATER'[ACCT TYPE]="IRR" && 'DETAIL WATER'[Season]="Winter" , 1.06 ,
'DETAIL WATER'[ACCT TYPE]="IRR" , 2.65 ,
----------------------------------------------------------------------------
'DETAIL WATER'[ACCT TYPE]="FTN" && 'DETAIL WATER'[Season]="Winter" , 1.06 ,
'DETAIL WATER'[ACCT TYPE]="FTN" , 2.65 ,
----------------------------------------------------------------------------
'DETAIL WATER'[ACCT TYPE]="FNT" && 'DETAIL WATER'[Season]="Winter" , 1.06 ,
'DETAIL WATER'[ACCT TYPE]="FNT" , 2.65 ,
----------------------------------------------------------------------------
'DETAIL WATER'[ACCT TYPE]="BLDG" && 'DETAIL WATER'[Season]="Winter" , 2.31 ,
'DETAIL WATER'[ACCT TYPE]="BLDG" , 2.31 ,
----------------------------------------------------------------------------
'DETAIL WATER'[ACCT TYPE]="DF" && 'DETAIL WATER'[Season]="Winter" , 2.31 ,
'DETAIL WATER'[ACCT TYPE]="DF" , 2.31 ,
----------------------------------------------------------------------------
'DETAIL WATER'[ACCT TYPE]="IRR-R" && 'DETAIL WATER'[Season]="Winter" , 0.24 ,
'DETAIL WATER'[ACCT TYPE]="IRR-R" , 0.24 ,
1
)