Tableau cannot do it out of the box, however, if you are using full extract refresh you can modify you queries to return with this kind of combination of aggregated and non-aggregated data. Like with the following custom select
SELECT CASE WHEN sales_date > sysdate - 90 then sales_date ELSE TRUNC( sales_date, 'MONTH' ) END sales_date, measures group by CASE WHEN sales_date > sysdate - 90 then sales_date ELSE TRUNC( sales_date, 'MONTH' ) END
The other solution is to use the tableau data extract API to build this custom space saver extract file and publish it to your server (from the ETL process for instance)
You can set data source filters on the extract, out of the box. I'm not sure if this helps in your situation, but its something to be aware of, and one of the few ways to limit an extract size from within Tableau.