At a prior firm, I designed a solution to deal with updating numbers during the day. I had a small cube and added a dimension called "Iteration". It had 2 members Iteration-1 and Iteration-2. While the partition into the main cube went against Iteration-1, I would clear, load and calc data in Iteration-2. When the process was complete, I had a script that would switch the partition over to show the user the new data. The next time new data came in, it would use the other iteration member. The deal worked pretty well and the numbers would never disappear for the users. I liked the solution and so did the users.
The only issue with this process was when the partition wouldn't update because a user was pulling data. I wrote a script that would test for this and keep trying to reset the partition until it was successful. It rarely had to try more than once.
Well I'm faced with the same situation again and rather resorting to this methodology, I'm going to create an ASO cube. In theory I'll be able to clear and load the data quickly enough that the users won't even notice anything has happened. We'll see what happens.