A data cube is an $n$-dimensional data storage solution. The data cube allows data to be modeled and viewed in multiple dimensions (e.g., time, product, store, location). The data cube supports [[OLAP]] operations including
- roll-up or summarization/aggregation
- drill-down
- slice and dice
- pivot/rotate
- visualization
- drill-across (join many fact tables)
- drill-through (join to back-end relational tables)
## cuboids
Data cubes can be aggregated into cuboids. A cuboid is simply a join across one or more dimension and fact tables.
All possible cuboids can be visualized in the **lattice of cuboids**.
Pre-computation of cuboids is called [[materialization]].
## multi-way array aggregation
Full [[materialization]] can be computed with multi-way array aggregation.
## bottom-up aggregation
Confusingly, bottom-up aggregation (defined by Beyer & Ramakrishnan) is actually a top down [[materialization]] of cubes. Staring from the combination of all cubes, partition until the next partition is no longer needed. This better supports pruning so only necessary cubes are pre-computed.