Forum Discussion
hnsbhat
Helper I
8 years agoHow to get previous Nth record Value from the specific date
I have a table which has Date, Stock symbol, Open, high, low , close. I have data for only for week days and in some cases week days also doesn't have data because of market holiday. What I am trying to do is get the previous nth day close price in the measure. For eg. if reference date is 11/10/2017 for Stock XYZ, I need Close value for the 25th previous record which is dated 10/5/2017 for the same stock. I tried using CALCULATE(sum(tblHistData[Close]), DATEADD(tblHistData[Date],-25,DAY)) but it goes back based on all the dates and not based on available data. I thought of trying some workday related functions, but then also there will be market holidays which creates issues. So only way is to refer to the previous 25th record for particular stock. Not sure if it is more efficient to do it in calculated columns instead of Measure. Thank you in advance for any help on this.
12 Replies
- Zubair_Muhammad
Community Champion
Hi hnsbhat
Please try this MEASURE
Please see the attached file here
Previous_25th_Price = VAR Noofrecords = COUNTROWS ( FILTER ( ALL ( Table1 ), Table1[Dates] < SELECTEDVALUE ( Table1[Dates] ) ) ) RETURN CALCULATE ( VALUES ( Table1[Price] ), EXCEPT ( TOPN ( Noofrecords - 24, ALL ( Table1[Dates] ), Table1[Dates], ASC ), TOPN ( Noofrecords - 25, ALL ( Table1[Dates] ), Table1[Dates], ASC ) ) )- Zubair_Muhammad
Community Champion
Hi hnsbhat
Similarly you can get the previous 25th date using the MEASURE below
Previous_25th_Date = VAR Noofrecords = COUNTROWS ( FILTER ( ALL ( Table1 ), Table1[Dates] < SELECTEDVALUE ( Table1[Dates] ) ) ) RETURN CALCULATE ( MAX ( Table1[Dates] ), EXCEPT ( TOPN ( Noofrecords - 24, ALL ( Table1[Dates] ), Table1[Dates], ASC ), TOPN ( Noofrecords - 25, ALL ( Table1[Dates] ), Table1[Dates], ASC ) ) )- hnsbhat
Helper I
Thanks for your reply, I tried it, but since I was trying it in excel 2016 powerpivot, it seems it doesn't have function SELECTEDVALUE. I searched for alternative and found this - IF ( HASONEVALUE ( Table[column] ), VALUES ( Table[column] ) ). But even with this I am not getting any values but only Blank.
- Ashish_Mathur
Super User
Hi,
Can you share a dataset and also show the expected result.
- hnsbhat
Helper I
Hi, Below is the data and expected result, I have tried to put three measures - Close -1, Close -3 and Close-4 to make clear what I am expecting. Thanks!
Date Symbol Open High Low Close 11/3/2017 ABC 118.20 126.45 117.65 123.60 11/3/2017 XYZ 1,776.00 1,789.35 1,767.00 1,772.00 11/4/2017 ABC 143.20 151.45 142.65 148.60 11/4/2017 XYZ 1,801.00 1,814.35 1,792.00 1,797.00 11/7/2017 ABC 149.75 152.30 141.20 147.95 11/7/2017 XYZ 1,809.85 1,816.15 1,776.35 1,781.00 11/8/2017 XYZ 1,798.90 1,808.35 1,775.30 1,776.00 11/8/2017 ABC 148.05 158.40 146.40 151.30 11/9/2017 XYZ 1,787.00 1,794.35 1,754.25 1,758.00 11/9/2017 ABC 151.85 155.90 149.10 155.40 11/10/2017 ABC 154.35 158.25 151.80 156.60 11/10/2017 XYZ 1,754.85 1,775.05 1,745.00 1,755.00 Result Expected: Date Symbol Close -1 Close -3 Close - 4 11/10/2017 ABC 155.40 147.95 148.60 11/10/2017 XYZ 1,758.00 1,781.00 1,797.00 11/9/2017 ABC 151.30 148.60 1,772.00 11/9/2017 XYZ 1,776.00 1,797.00 123.60