Cubes – Lightweight OLAP and Pluggable Data Warehouse

Stefan Urbanek, Robin Thomas

Audience level:


Cubes is a light-weight Python OLAP framework for small to middle data warehouses. It enables users to quickly build and serve multi-dimensional view of their (mostly categorical) data. Features: pluggable data warehouse, multidimensional data modeling, concept hierarchies, aggregation and drill-down, external cubes provided by other services, multiple backends (SQL, MongoDB, ...), localizable.


Cubes is a light-weight Python OLAP and multi-dimensional data modeling framework for building dynamic reporting and data analysis applications. It enables users to quickly build and serve multi-dimensional view of mostly categorical data. The functionality is provided in two forms: as Slicer server with JSON HTTP interface or pure Python API. Thanks to the modular architecture the framework is very extensible. Built-in backends include: SQL (many dialects, including PostgreSQL, Oracle, MySQL), MongoDB, Slicer Server (you can reuse/group/plug-in external servers) and Mixpanel. Core features are: * **Multidimensional Model** – metadata, description of the (categorical) data from analyst's perspective: facts, dimensions, concept hierarchies, measures and their aggregates. * **Aggregation Browser** – processes aggregation queries, does slicing-and-dicing, drills-down. Browsers are backend provided and extensible. * **Analyital Workspace** – combines cubes, shared dimensions, data stores, model providers and model metadata. Provides appropriate aggregation browsers and maintains database connections. * **Slicer** – a Flask HTTP server with JSON interface that can be easily used in a HTML/JavaScript web application or plugged into another Flask application as a blueprint. * **Data Stores** – extensible backend–specific storage of data such as SQL (ROLAP), MongoDB, Mixpanel. Custom backends for other databases or aggregation engines can be added. * **Model Providers** – generates logical model from a simple JSON file or an external source. Custom model providers can load models from other analytical services. * **Authentication and Authorization** – provides access rights on per-cube basis or can provide access just to certain part of the cube (like region, years, categories, ...). application. Links: * [Project]( * [Github]( * [Example open-data site using Cubes](