Steve Rowe wrote:
Also I don't think there is a way of setting a cell back to undefined once it has contained a value, even if you set the cell to 0 and relaunch the server.
Sorry Steve, I just don't see how that could be possible. The only way would be if the hypothesis about the zero values being stored in the .cub file held true, and I just don't believe that happens.
Try the following test (which I did on 9.4):
- Create a dummy cube with lots of cells. I created one which had 3 dimensions of 101 elements each plus a consolidation of those elements. That's 1,030,301 cells (at N level), agreed?
- Check the size of the .cub file on disk. Mine was 4,289 bytes, with a size on disk of 8,192 bytes.
- Do a spread into all leaf cells at the top level consolidations. If you have performance Monitor running, you should now see number of populated cells for that cube at the aforementioned 1,030,301. I spread the value 1000 into the top level consolidations for all of the dimensions.
- Do a data save. Check the size of the .cub file. Mine was now 14,469,711 bytes, 14,471,168 bytes on disk.
- Blow away the numbers by zeroing them out. I did this by data spreading since I didn't need an undo.
- Do a data save. Check the size of the .cub data file.
My numbers? Back to 4,289 bytes, with a size on disk of 8,192 bytes.
Every single cell in the cube had had a non-zero value entered into it, and every one of those values had been zeroed out and yet the .cub file size was
identical, to the byte, compared to the virgin cube size if you'll pardon the expression.
If the .cub file is storing a record of those cells
ever having been populated and reset to zero, then Applix has come up with the most remarkable file compression algorithm since Charles Babbage said to Ada "Hey babe, let's do lunch". Somehow it has managed to store over a million pieces of information without consuming one extra byte.
And if that's
not the case, then I simply can't see how a freshly launched server could ever distinguish between a cell that had a value in a previous session and was reset to zero before the data save at shutdown occurred, and one which never had a value in the first place. The only conclusion would be that a cell is undefined if it didn't have a value at server startup, and hasn't had a value entered to it at any time during the current session, regardless of what may have happened in any previous session.