The basis for real-time analytics is to have all resources at disposal in the 
moment they are called for . So far, special materialized data structures, called 
cubes, have been created to efficiently serve analytical reports. Such cubes are 
based on a fixed number of dimensions along which analytical reports can define 
their result sets. Consequently, only a particular set of reports can be served 
by one cube. If other dimensions are needed, a new cube has to be created or 
existing ones have to be extended. In the worst case, a linear increase in the 
number of dimensions of a cube can result in an exponential growth of its 
storage requirements. 
Extending a cube can result in a deteriorating performance 
of those reports already using it. The decision to extend a cube or build a new 
one has to be considered carefully. In any case, a wide variety of cubes may be 
built during the lifetime of a system to serve reporting, thus increasing 
storage requirements and also maintenance efforts.
Instead of working with a predefined set of reports, business 
users should be able to formulate ad-hoc reports. Their playground should be the 
entire set of data the company owns, possibly including further data from 
external sources. Assuming a fast in-memory database, no more pre-computed 
materialized data structures are needed. As soon as changes to data are 
committed to the database, they will be visible for reporting. The preparation 
and conversion steps of data if still needed for reports are done during query 
execution and computations take place on the fly. 
Computation on the fly during 
reporting on the basis of cubes that do not store data, but only provide the 
interface for reporting, solves a problem that has existed up to now and allows 
for performance optimization of all analytical reports likewise

