This assumes the rows are sorted by timestamp which I don't think is a fair assumption, and will be confusing. I think it would be better to have a Map of Interval to dimensionValueMultisets, unusableDimensions for each granular interval so we can update whichever one is appropriate as data comes in from the firehose.