Forum Discussion
PowerWhy
3 years agoHelper IV
Variables within a loop?
Hello,
Please can you tell me if it's possible to have variables within a loop?
Below I am calculating Output and Net Production twice whereas I thought it would be more efficient to use variables, and re-use them.
Thank you for any help,
PW
Output =
// loop through all customers
sumx('Customers, by Fiscal Year',
if(
calculate(if (round([Output (using calculated field)],2) <> 0, round([Net Production (USING CALCLATED FIELD)],2) / round([Output (using calculated field)],2), sign(round([Net Production (USING CALCLATED FIELD)],2))),
ALL('Dim_Calendar'[Fiscal Period]),
ALL('Dim_Calendar'[Fiscal Quarter])
) < 0.39999999999,
'Calculations'[Output (using calculated field)], 0)
)
Yes, you can use variables in a loop (iterator). Here's an example. I used the DIVIDE function instead of "/" (avoids division by 0 errors).
Output = // loop through all customers SUMX ( 'Customers, by Fiscal Year', VAR vOutput = ROUND ( [Output (using calculated field)], 2 ) VAR vNetProd = ROUND ( [Net Production (USING CALCLATED FIELD)], 2 ) RETURN IF ( CALCULATE ( IF ( vOutput <> 0, DIVIDE ( vNetProd, vOutput ), SIGN ( vNetProd ) ), ALL ( 'Dim_Calendar'[Fiscal Period] ), ALL ( 'Dim_Calendar'[Fiscal Quarter] ) ) < 0.39999999999, 'Calculations'[Output (using calculated field)], 0 ) )
2 Replies
- DataInsightsSuper User
Yes, you can use variables in a loop (iterator). Here's an example. I used the DIVIDE function instead of "/" (avoids division by 0 errors).
Output = // loop through all customers SUMX ( 'Customers, by Fiscal Year', VAR vOutput = ROUND ( [Output (using calculated field)], 2 ) VAR vNetProd = ROUND ( [Net Production (USING CALCLATED FIELD)], 2 ) RETURN IF ( CALCULATE ( IF ( vOutput <> 0, DIVIDE ( vNetProd, vOutput ), SIGN ( vNetProd ) ), ALL ( 'Dim_Calendar'[Fiscal Period] ), ALL ( 'Dim_Calendar'[Fiscal Quarter] ) ) < 0.39999999999, 'Calculations'[Output (using calculated field)], 0 ) ) - PowerWhyHelper IV
Thank you DataInsights