Why cubes?

Purpose is to provide a framework for giving analyst or any application end-user understandable and natural way of reporting using concept of data Cubes – multidimensional data objects.

It is meant to be used by application builders that want to provide analytical functionality.


  • logical view of analysed data - how analysts look at data, how they think of data, not not how the data are physically implemented in the data stores
  • OLAP and aggregated browsing (default backend is for relational databse - ROLAP)
  • hierarchical dimensions (attributes that have hierarchical dependencies, such as category-subcategory or country-region)
  • multiple hierarchies in a dimension
  • localizable metadata and data (see Localization)
  • authentication and authorization of cubes and their data
  • pluggable data warehouse – plug-in other cube-like (multidimensional) data sources

The framework is very extensible.

Cube, Dimensions, Facts and Measures

The framework models the data as a cube with multiple dimensions:


a data cube

The most detailed unit of the data is a fact. Fact can be a contract, invoice, spending, task, etc. Each fact might have a measure – an attribute that can be measured, such as: price, amount, revenue, duration, tax, discount, etc.

The dimension provides context for facts. Is used to:

  • filter queries or reporst
  • controls scope of aggregation of facts
  • used for ordering or sorting
  • defines master-detail relationship

Dimension can have multiple hierarchies, for example the date dimension might have year, month and day levels in a hierarchy.

Feature Overview

Core cube features:

  • Workspace – Cubes analytical workspace (see docs, reference)
  • Model - Description of data (metadata): cubes, dimensions, concept hierarchies, attributes, labels, localizations. (see docs, reference)
  • Browser - Aggregation browsing, slicing-and-dicing, drill-down. (see docs, reference)
  • Backend - Actual aggregation implementation and utility functions. (see docs, reference)
  • Server - WSGI HTTP server for Cubes (see docs, reference)
  • Formatters - Data formatters (see docs, reference)
  • slicer - Command Line Tool - command-line tool


Logical model describes the data from user’s or analyst’s perspective: data how they are being measured, aggregated and reported. Model is independent of physical implementation of data. This physical independence makes it easier to focus on data instead on ways of how to get the data in understandable form.

More information about logical model can be found in the chapter Logical Model and Metadata.

See also developer’s reference.


Core of the Cubes analytics functionality is the aggregation browser. The browser module contains utility classes and functions for the browser to work.

More information about browser can be found in the chapter Slicing and Dicing. See also programming reference.


Backends provide the actual data aggregation and browsing functionality. Cubes comes with built-in ROLAP backend which uses SQL database using SQLAlchemy.

Framework has modular nature and supports multiple database backends, therefore different ways of cube computation and ways of browsing aggregated data.

Multiple backends can be used at once, even multiple sources from the same backend might be used in the analytical workspace.

More about existing backends can be found in the backends documentation. See also the backends programming reference reference.


Cubes comes with built-in WSGI HTTP OLAP server called slicer - Command Line Tool and provides json API for most of the cubes framework functionality. The server is based on the Werkzeug WSGI framework.

More information about the Slicer server requests can be found in the chapter OLAP Server. See also programming reference of the server module.

See also

Schemas and Models
Example database schemas and use patterns with their respective models.