Forum Discussion
Max & Min Dates Only Filter (top1/bottom1)
HI,
I have a dataset like follows:
| Date | Value |
| 2019/08/01 | 10 |
| 2019/08/01 | 20 |
| 2019/08/01 | 30 |
| 2019/08/01 | 40 |
| 2019/08/01 | 50 |
| 2019/07/01 | 100 |
| 2019/07/01 | 200 |
| 2019/07/01 | 300 |
| 2019/06/01 | 1 |
| 2019/06/01 | 2 |
| 2019/06/01 | 3 |
| 2019/06/01 | 4 |
| 2019/05/01 | 1000 |
| 2019/05/01 | 2000 |
What I would like to do is be able to filter on the max and minimum dates so the result would be:
| Date | Value |
| 2019/08/01 | 10 |
| 2019/08/01 | 20 |
| 2019/08/01 | 30 |
| 2019/08/01 | 40 |
| 2019/08/01 | 50 |
| 2019/05/01 | 1000 |
| 2019/05/01 | 2000 |
I could achieve the same effect by manually ticking the 'Date' basic filter but I would have to change it every time the dataset updates. Similarly I could do topN filters for top and bottom dates but can't apply both at the same time AFAIK.
Any help is appeciated, thanks.
Hi SiroPW ,
The formula in your measure is missing another condition:
Return IF(MAX('Table'[Date])=maxd||MAX('Table'[Date])=mind,"Yes","No")I attached my pbix here for your reference, also please share yours if you are still stuck in it.
6 Replies
- AnthonyTilley
Solution Sage
i would use a calculated colunm to check if the date is equal to the max or min date and then filter on this colunm
example colunm below
MAX&MIN =-- first get the max date as a veriablevar Maxd = max('Table'[Date])-- next get the min date as a veriablevar mind = min('Table'[Date])-- get the date in the rowvar d= 'Table'[Date]-- check if the date is equal to eaither of the two dates and if it is return TRUE if not RETURN FALSEreturn if(or(d = Maxd,d =mind),TRUE, FALSE)this colunm can then be used as a filter in the table to display only those that are true- SiroPW
Helper I
Thanks for the reply.
Do you know how I could modify this to work with only the filtered/selected values?
I tried ALLSELECTED like below but I'm getting an error "The MAX function only accepts a column reference as an argument".
MAX&MIN =-- first get the max date as a veriable
var Maxd = max(ALLSELECTED('Table'[Date]))-- next get the min date as a veriablevar mind = min(ALLSELECTED('Table'[Date]))-- get the date in the rowvar d= 'Table'[Date]-- check if the date is equal to eaither of the two dates and if it is return TRUE if not RETURN FALSEreturn if(or(d = Maxd,d =mind),TRUE, FALSE)- v-diye-msft
Community Support
Hi SiroPW ,
You can take try of this one:
MAX&MIN = var maxd = MAXX(ALLSELECTED('Table'),[Date]) var mind = MINX(ALLSELECTED('Table'),[Date]) Return IF(MAX('Table'[Date])=maxd||MAX('Table'[Date])=mind,1,0)When the date were filtered, it still works: