Forum Discussion
Variable instead of IF Statement?
Hi,
Is it possible to alter this code and use variables instead?
Deferral WD's =
if(Deferrals[Calcuation Method] = 1,CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[Case Start],Deferrals[actualstart]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),
if(Deferrals[Calcuation Method] = 2,CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[actualstart.1]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),
if(Deferrals[Calcuation Method] = 3,CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[Case End]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),0)))
Or is this fine left as it is?
Thanks
Hi ArchStanton ,
Please try:
Deferral WD's = VAR _a = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[Case Start], Deferrals[actualstart] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) VAR _b = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[actualend], Deferrals[actualstart.1] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) VAR _c = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[actualend], Deferrals[Case End] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) RETURN SWITCH ( TRUE (), Deferrals[Calcuation Method] = 1, _a, Deferrals[Calcuation Method] = 2, _b, Deferrals[Calcuation Method] = 3, _c, 0 )Best Regards,
Jianbo Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
4 Replies
- Greg_Deckler
Community Champion
ArchStanton Sure:
Deferral WD's = VAR __CalcMethod = Deferrals[Calculation Method] RETURN if(__CalcMethod = 1,CALCULATE( COUNTROWS('Date Dimension'), DATESBETWEEN('Date Dimension'[Date],Deferrals[Case Start],Deferrals[actualstart]),'Date Dimension'[Is Working Day] = TRUE(), ALL('Date Dimension') ), if(__CalcMethod = 2,CALCULATE( COUNTROWS('Date Dimension'), DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[actualstart.1]),'Date Dimension'[Is Working Day] = TRUE(), ALL('Date Dimension') ), if(__CalcMethod = 3,CALCULATE( COUNTROWS('Date Dimension'), DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[Case End]),'Date Dimension'[Is Working Day] = TRUE(), ALL('Date Dimension') ),0)))And if you do that, you could switch to a SWITCH statement instead of nested IF statements which would be way cleaner code.
- ArchStanton
Power Participant
Hi,
That makes sense but I'm not 100% sure how to achieve this. Using previous examples I have something like this I know its incorrect:
Deferral WD's =
VAR __CalcMethod1 = CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[Case Start],Deferrals[actualstart]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),
VAR__CalcMethod2 = CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[actualstart.1]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),
VAR__CalcMethod = 3,CALCULATE(
COUNTROWS('Date Dimension'),
DATESBETWEEN('Date Dimension'[Date],Deferrals[actualend],Deferrals[Case End]),'Date Dimension'[Is Working Day] = TRUE(),
ALL('Date Dimension')
),0)))
RETURN
SWITCH(
TRUE,
__CalcMethod1
__CalcMethod2
__CalcMethod3)
- v-jianboli-msft
Community Support
Hi ArchStanton ,
Please try:
Deferral WD's = VAR _a = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[Case Start], Deferrals[actualstart] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) VAR _b = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[actualend], Deferrals[actualstart.1] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) VAR _c = CALCULATE ( COUNTROWS ( 'Date Dimension' ), DATESBETWEEN ( 'Date Dimension'[Date], Deferrals[actualend], Deferrals[Case End] ), 'Date Dimension'[Is Working Day] = TRUE (), ALL ( 'Date Dimension' ) ) RETURN SWITCH ( TRUE (), Deferrals[Calcuation Method] = 1, _a, Deferrals[Calcuation Method] = 2, _b, Deferrals[Calcuation Method] = 3, _c, 0 )Best Regards,
Jianbo Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- ArchStanton
Power Participant
Fantastic, thank you so much!