MOLAP is a Multidimensional, Open-Source, In-Memory, Object-Oriented, and Embeddable API for aggregating data through computationally efficient multidimensional cubes developed by Macrofocus. It supports the usual drill-down, drill-up, slicing, dicing, and pivot operations, alongside a wide choice of built-in aggregation functions, with the following distinctive features:
- Indexed data structured similarly to R and Pandas dataframe
- Arbitrary group by without the need to describe the cube structure
- Automatic optimization of the cheapest aggregation path
- Just-in-time calculation of aggregates
- Drill-across queries
- Expressive programming style through fluent interfaces
- Custom aggregation functions
- Java implementation
Conceptually it works by:
- Proving the input data as a table (DataFrame interface)
- Creating a data cube (Cube interface, with InMemoryDataCube providing the default implementation)
- Grouping the data into cuboids (Cuboid interface) along some nested dimensions (Dimensions interface)
- Drilling-down (Cuboid.drillDown()), Drilling-up (Cuboid.drillUp()), Slicing (Cuboid.slice())and dicing (Cuboid.dice()) the cuboids
- Defining how the data should be aggregated (Aggregation interface)
- Extracting data from the cube through by placing queries (Query interface)
Future plans includes:
- Parallel and distributed processing
- Creation and aggregation of time series
- Aggregation of geospatial objects
- Real-time and incremental updates made to the input table
- Persistance of the data cube
- Query language (potentially with MDX query parser and support for DAX expressions)
- XML/A Server
- Port to other languages (e.g. JavaScript)
May 2, 2014
MOLAP v. 1.0rc1 is now available! You can find it in the download area.