Forum Discussion
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:
- FPY is pre-computed for each operation, line, day
- The products of those Line / Days FPY are calculated to determine the daily line RTY
- Ex. I2 = PRODUCT(H2:H4)
- The RTY are weighted by the TOTAL where KEY_STATION is TRUE
- Weighted RTY aggregations are computed based on filtering dynamically such as by date, month, year, line, etc.
- Ex. J2 =(I2*E4+I5*E7)/(E4+E7)
- 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_STATION1-Jan Line1 A 25 25 1-Jan Line1 B 23 26 1-Jan Line1 C 20 25 TRUE 2-Jan Line1 A 20 25 2-Jan Line1 B 23 25 2-Jan Line1 C 24 24 TRUE 1-Jan Line2 A 23 27 1-Jan Line2 B 23 26 1-Jan Line2 C 20 24 TRUE 2-Jan Line2 A 20 25 2-Jan Line2 B 23 26 2-Jan Line2 C 21 23 TRUE
Update: Added formula to examples.
- Anonymous4 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
- amitchandakSuper User
Anonymous , How you have done calculations for I, J, and K are very clear. can you explain with an example
- AnonymousNot applicable
I've added the formula examples now. Thanks!
- AnonymousNot 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]) ) )