I would use a union to stack monthly .csv files before creating an extract. The downside with this is that you have to go through and add the new months file every month.
A in between solution is to use the command line to merge monthly csv files which would allow you to dump the files into a folder and merge them each month with a basic script which I have found to be easier when dealing with hundreds of files. Below is a basic summary that I found online of how this works.
Long term I would really question why the data can not be kept in a single historical table on the data base and cleaned. If this is not considered possible you have much bigger problems with outdated data base infrastructure or unqualified database admins. A script to pull in the most recent months data and clean it on a schedule followed by the tableau extract refreshing on a schedule (if you have Tableau server) would be ideal. This would give you a system that updates automatically without messing with monthly files.
I've upgraded to 9.3 last week and see that I can now use the built-in union feature to join .CSV files together in the Data Source screen. This will work perfectly for my purposes however I'm having an issue with the date field for the data I'm working with. Every record in the files have a date for the transaction which comes in as "Number(Whole)". When I try to build with this, I get strange values that don't make sense so I try to change them to "Date" which in turn brings me "Null" for every record's date.
I was reading up on this and it seems that I should be able to use the DATEPARSE( to correct this but when I use that I still am getting nonsense values that do not appear as the dates from my original files. Any further suggestions on that piece?