Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

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 itemThen this is what I did to find out the target stock value for each oneI then do a SUMX against the unit valuesThis 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 ones

  • Anonymous's avatar
    Anonymous
    6 years ago

    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's avatar
    Anonymous
    6 years ago

    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 )

     

     

4 Replies

  • Anonymous's avatar
    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's avatar
      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!

    • Anonymous's avatar
      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's avatar
        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 )