Data cube

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In computer programming contexts, a data cube (or datacube) is a multi-dimensional ("n-D") array of values. Typically, the term datacube is applied in contexts where these arrays are massively larger than the hosting computer's main memory; examples include multi-terabyte/petabyte data warehouses and time series of image data.

The data cube is used to represent data (sometimes called facts) along some measure of interest. For example, in OLAP such measures could be the subsidiaries a company has, the products the company offers, and time; in this setup, a fact would be a sales event where a particular product has been sold in a particular subsidiary at a particular time. In satellite image timeseries measures would be Latitude and Longitude coordinates and time; a fact would be a pixel at a given space/time coordinate as taken by the satellite (following some processing that is not of concern here). Even though it is called a cube (and the examples provided above happen to be 3-dimensional for brevity), a data cube generally is a multi-dimensional concept which can be 1-dimensional, 2-dimensional, 3-dimensional, or higher-dimensional. In any case, every dimension represents a separate measure whereas the cells in the cube represent the facts of interest. Sometimes cubes hold only few values with the rest being empty, i.e. undefined, sometimes most or all cube coordinates hold a cell value. In the first case such data are called sparse, in the second case they are called dense, although there is no hard delineation between both.


Multi-dimensional arrays have long been familiar in programming languages. Fortran offers 1-D arrays and arrays of arrays, which allows the construction higher-dimensional arrays. APL supports n-D arrays with a rich set of operations. All these have in common that arrays must fit into main memory and are available only while the particular program maintaining them (such as image processing software) is running.

A series of data exchange formats support storage and transmission of datacube-like data, often tailored towards particular application domains. Examples include MDX for statistical (in particular, business) data, Hierarchical Data Format for general scientific data, and TIFF for imagery.

In 1992, Peter Baumann introduced management of massive datacubes with high-level user functionality combined with an efficient software architecture.[1] Datacube operations include subset extraction, processing, fusion, and in general queries in the spirit of data manipulation languages like SQL.

Some years after, the datacube concept was applied to describe time-varying business data as datacubes by Jim Gray, et al.,[2] and by Venky Harinarayan, Anand Rajaraman and Jeff Ullman[3] which rank among the top 500 most cited computer science articles over a 25-year period.[4]

Around that time, a working group on Multi-Dimensional Databases ("Arbeitskreis Multi-Dimensionale Datenbanken") was established at German Gesellschaft für Informatik.[5][6]

Datacube Inc. was an image processing company selling hardware and software applications for the PC market in 1996, however without addressing datacubes as such.

The EarthServer initiative has established geo data cube service requirements.[7]


In 2018, the ISO SQL database language was extended with datacube functionality as "SQL -- Part 15: Multi-dimensional arrays (SQL/MDA)".[8]

Web Coverage Processing Service is a geo datacube analytics language issued by the Open Geospatial Consortium in 2008. In addition to the common data cube operations, the language knows about the semantics of space and time and supports both regular and irregular grid datacubes, based on the concept of coverage data.

An industry standard for querying business datacubes, originally developed by Microsoft, is MultiDimensional eXpressions.


Many high-level computer languages treat data cubes and other large arrays as single entities distinct from their contents. These languages, of which Fortran, APL, IDL, NumPy, PDL, and S-Lang are examples, allow the programmer to manipulate complete film clips and other data en masse with simple expressions derived from linear algebra and vector mathematics. Some languages (such as PDL) distinguish between a list of images and a data cube, while many (such as IDL) do not.

Array DBMSs (Database Management Systems) offer a data model which generically supports definition, management, retrieval, and manipulation of n-dimensional datacubes. This database category has been pioneered by the rasdaman system since 1994.[9]


Multi-dimensional arrays can meaningfully represent spatio-temporal sensor, image, and simulation data, but also statistics data where the semantics of dimensions is not necessarily of spatial or temporal nature. Generally, any kind of axis can be combined with any other into a datacube.


In mathematics, a one-dimensional array corresponds to a vector, a two-dimensional array resembles a matrix; more generally, a tensor may be represented as an n-dimensional data cube.

Science and engineering[edit]

For a time sequence of color images, the array is generally four-dimensional, with the dimensions representing image X and Y coordinates, time, and RGB (or other color space) color plane. For example, the EarthServer initiative[10] unites data centers from different continents offering 3-D x/y/t satellite image timeseries and 4-D x/y/z/t weather data for retrieval and server-side processing through the Open Geospatial Consortium WCPS geo datacube query language standard.

A data cube is also used in the field of imaging spectroscopy, since a spectrally-resolved image is represented as a three-dimensional volume. Earth observation data cubes combine satellite imagery such as Landsat_8 and Sentinel-2 with Geographic information system analytics.[11]

Business intelligence[edit]

In online analytical processing (OLAP), data cubes are a common arrangement of business data suitable for analysis from different perspectives through operations like slicing, dicing, pivoting, and aggregation.

See also[edit]


  1. ^ Baumann, Peter (April 1992). "Language Support for Raster Image Manipulation in Databases". Graphics Modeling and Visualization in Science and Technology. Int. Workshop on Graphics Modeling, Visualization in Science & Technology. Darmstadt, Germany: Springer (published 1993). pp. 236–245. doi:10.1007/978-3-642-77811-7_19.
  2. ^ Gray, Jim; Chaudhuri, Surajit; Bosworth, Adam; Layman, Andrew; Reichart, Don; Venkatrao, Murali; Pellow, Frank; Pirahesh, Hamid (January 1997). "Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Totals". Data Mining and Knowledge Discovery. 1 (1): 29–53. doi:10.1023/A:1009726021843. S2CID 12502175.
  3. ^ Harinarayan, Venky; Rajaraman, Anand; Ullman, Jeffrey D. (1996). "Implementing data cubes efficiently". Implementing Data Cubes Efficiently. pp. 205–216. CiteSeerX doi:10.1145/233269.233333. ISBN 978-0897917940. S2CID 3104453.
  4. ^ 500 Most Cited Computer Science Articles (501–600), CiteSeer. 12 June 2009. Retrieved 21 March 2017.
  5. ^ "dblp: Datenbank Rundbrief, Ausgabe 19, Mai 1997".
  6. ^ "dblp: Datenbank Rundbrief, Ausgabe 23, Mai 1999".
  7. ^ "The Database Manifesto". Retrieved 2017-09-21.
  8. ^ "ISO/IEC DIS 9075-15 Information technology -- Database languages -- SQL -- Part 15: Multi-dimensional arrays (SQL/MDA)". Retrieved 2018-05-27.
  9. ^ "Management of Multidimensional Discrete Data" (PDF). Retrieved 2017-09-21.
  10. ^ "EarthServer - Big Datacube Analytics at Your Fingertips". Retrieved 2017-03-31.
  11. ^ Kopp, Steve; Becker, Peter; Doshi, Abhijit; Wright, Dawn J.; Zhang, Kaixi; Xu, Hong (2019). "Achieving the Full Vision of Earth Observation Data Cubes". Data. 4 (3): 94. doi:10.3390/data4030094. Retrieved 24 November 2021.