This was a good question. I like how it was written in the terms of a real problem to solve.
What other ways can you change the entire contents of a table and still have the reports available without dirty data?
I've thought of creating a view that points to the table. Then, you can populate another table with the new information and then update the view to point to the new table. Once all the queries are done running on the old dataset table, the old table can then be deleted. I've never tried this so I'm curious what the experts on this forum have to say about this. Does the view get locked if a query is running it? Any negative sides to my proposed solution?