Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Weighted Average of RTY

Hi all,

 

I've been trying to compute a weighted average of Roll Throughput Yield (RTY) using a DAX Measure, this would ideally compute at aggregations across multiple days and production lines.  I'm sure this is possible, but I haven't been able to make it work yet.  The particular problem I'm seeing is forcing the correct order of operations in the Measure.  I have tried using SUMMARIZE inside the measure to pre-aggregate the calculations as well as also working from the Quick Measure Weighted average, but I've not been able to make either method work.

The desired result is like in the Excel screenshot below:

  1. FPY is pre-computed for each operation, line, day
  2. The products of those Line / Days FPY are calculated to determine the daily line RTY
    1. Ex. I2 = PRODUCT(H2:H4)
  3. The RTY are weighted by the TOTAL where KEY_STATION is TRUE
  4. Weighted RTY aggregations are computed based on filtering dynamically such as by date, month, year, line, etc.
    1. Ex. J2 =(I2*E4+I5*E7)/(E4+E7)
    2. Ex.  K2 = (I2*E4+I5*E7+I8*E10+I11*E13)/(E4 + E7 + E10 + E13)  

      I've added a table of the data above.

      DATE              LINE              OPERATION  PASS       TOTAL         KEY_STATION
      1-JanLine1A2525 
      1-JanLine1B2326 
      1-JanLine1C2025TRUE
      2-JanLine1A2025 
      2-JanLine1B2325 
      2-JanLine1C2424TRUE
      1-JanLine2A2327 
      1-JanLine2B2326 
      1-JanLine2C2024TRUE
      2-JanLine2A2025 
      2-JanLine2B2326 
      2-JanLine2C2123TRUE

      Update:  Added formula to examples.
  • Anonymous's avatar
    Anonymous
    4 years ago

    I was ultimately able to determine the right function.  You need to pre-calculate the table then group by and calculate.  That will ensure the correct order of operations.

     

    RTY Summary = 
    
    var opSummary = 
        SUMMARIZE(
            FTT
            ,[LINE],[OPERATIONNAME],[DATE],[Key Station]
            ,"FPY",DIVIDE(SUMX(FTT,[PASS]),SUMX(FTT,[TOTAL]),0)
            ,"TOTAL",sumx(ftt,[TOTAL])
            ,"KEY_TOTAL",sumx(FILTER(ftt,[Key Station]=True),[TOTAL])
        )
    
    var lineSummary = 
        GROUPBY(opSummary,[LINE],[DATE]
            ,"RTY",PRODUCTX(CURRENTGROUP(),[FPY])
            ,"LINE_TOTAL",SUMX(CURRENTGROUP(),[KEY_TOTAL])
    )
    
    return 
    
    CALCULATE(
        DIVIDE(
            SUMX(lineSummary,[RTY]*[LINE_TOTAL]),
            SUMX(lineSummary,[LINE_TOTAL])
        )
    )

     

     

3 Replies

  • Anonymous , How you have done calculations for I, J, and K are very clear. can you explain with an example 

    • Anonymous's avatar
      Anonymous
      Not applicable

      I've added the formula examples now.  Thanks!

  • Anonymous's avatar
    Anonymous
    Not applicable

    I was ultimately able to determine the right function.  You need to pre-calculate the table then group by and calculate.  That will ensure the correct order of operations.

     

    RTY Summary = 
    
    var opSummary = 
        SUMMARIZE(
            FTT
            ,[LINE],[OPERATIONNAME],[DATE],[Key Station]
            ,"FPY",DIVIDE(SUMX(FTT,[PASS]),SUMX(FTT,[TOTAL]),0)
            ,"TOTAL",sumx(ftt,[TOTAL])
            ,"KEY_TOTAL",sumx(FILTER(ftt,[Key Station]=True),[TOTAL])
        )
    
    var lineSummary = 
        GROUPBY(opSummary,[LINE],[DATE]
            ,"RTY",PRODUCTX(CURRENTGROUP(),[FPY])
            ,"LINE_TOTAL",SUMX(CURRENTGROUP(),[KEY_TOTAL])
    )
    
    return 
    
    CALCULATE(
        DIVIDE(
            SUMX(lineSummary,[RTY]*[LINE_TOTAL]),
            SUMX(lineSummary,[LINE_TOTAL])
        )
    )