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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Performance Issue Advice

Hi guys!

 

I am suffering with a performance issue for a measure.

It is derived from several others, so I'll paste all the ones that are calculated for the last one to exist.

All the previous are not affecting the performance when brought in a table (for instance).

 

Do you have any advices to save processing, maybe using different syntaxes...

 

This is what I did to calculate the average use for the next 30 days of every itemThis is what I did to calculate the average use for the next 30 days of every itemThen this is what I did to find out the target stock value for each oneThen this is what I did to find out the target stock value for each oneI then do a SUMX against the unit valuesI then do a SUMX against the unit valuesThis is how I calculate what I current have in StockThis is how I calculate what I current have in StockAnd finally this is the Measure that is causing the performance impact, when I have to calculate the Excess Stock existent based on all the previous onesAnd finally this is the Measure that is causing the performance impact, when I have to calculate the Excess Stock existent based on all the previous ones

2 ACCEPTED SOLUTIONS
Anonymous
Not applicable

@Anonymous,

You can use variable to avoid double calculation in your measure:

Excess Stock =
VAR result = [Valid Stock Value] - [TargetStockValue] - [No Future Use]
RETURN
    IF ( result < 0, 0, result )

View solution in original post

Anonymous
Not applicable

@Anonymous, 

Same principle applies. You want to avoid repeating measure because it calculates every time you mention it. Use variable so the result is stored in the memory

Stock OK =
VAR validStock = [Valid Stock Value]
VAR targetStock = [TargetStockValue]
RETURN
    SWITCH ( TRUE (); validStock >= targetStock; targetStock; validStock )

 

 

View solution in original post

4 REPLIES 4
Anonymous
Not applicable

@Anonymous,

You can use variable to avoid double calculation in your measure:

Excess Stock =
VAR result = [Valid Stock Value] - [TargetStockValue] - [No Future Use]
RETURN
    IF ( result < 0, 0, result )
Anonymous
Not applicable

@Anonymous 
This one is still a bit slow, though... any ideas about it?

Stock OK = SWITCH(TRUE();
[Valid Stock Value]>=[TargetStockValue];[TargetStockValue];
[Valid Stock Value])
Anonymous
Not applicable

@Anonymous, 

Same principle applies. You want to avoid repeating measure because it calculates every time you mention it. Use variable so the result is stored in the memory

Stock OK =
VAR validStock = [Valid Stock Value]
VAR targetStock = [TargetStockValue]
RETURN
    SWITCH ( TRUE (); validStock >= targetStock; targetStock; validStock )

 

 

Anonymous
Not applicable

@Anonymous 


@Anonymous wrote:

@Anonymous,

You can use variable to avoid double calculation in your measure:

Excess Stock =
VAR result = [Valid Stock Value] - [TargetStockValue] - [No Future Use]
RETURN
    IF ( result < 0, 0, result )


Awesome! This reduced the calculation time from 4 minutes to 10 secs. Thanks!

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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