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
PowerWhy
Helper III
Helper III

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)
)
1 ACCEPTED SOLUTION
DataInsights
Super User
Super User

@PowerWhy,

 

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
        )
)

 





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

Proud to be a Super User!




View solution in original post

2 REPLIES 2
PowerWhy
Helper III
Helper III

Thank you @DataInsights 

DataInsights
Super User
Super User

@PowerWhy,

 

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
        )
)

 





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

Proud to be a Super User!




Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Fabric Monthly Update - May 2024

Check out the May 2024 Fabric update to learn about new features.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.