Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to tackle the "Curse of Dimensionality"? #1441

Open
xiaobao520123 opened this issue Jan 5, 2025 · 1 comment
Open

How to tackle the "Curse of Dimensionality"? #1441

xiaobao520123 opened this issue Jan 5, 2025 · 1 comment

Comments

@xiaobao520123
Copy link

xiaobao520123 commented Jan 5, 2025

When Mondrian connects to a JDBC, it becomes an ROLAP, meaning it computes MDX resultset on the fly.
This behavior leads to a serious problem, which is called "Curse of Dimensionality".

We have many dimensions in our schema design. When adding >2 dimensions, our BI frontend, Excel, stucks in the process and essentially becomes unusable.

One solution to this, according to Mondrian's docs, is using Aggregation Table. Yet designing and building Agg Tables is hard.

Does anyone have any experience you would like to share when facing dimension explosion?

Recently I've been trying using Apache Kylin as a middleware which can help me build and manage Agg Tables. It actually uses Mondrian as a MDX query engine.

@julianhyde
Copy link
Contributor

The curse of dimensionality afflicts you if you try to materialize every combination of dimensions. The materialized aggregates become larger than the raw data.

The solution is to not materialize. Use a parallel DB with good I/O throughput (aided by compression) so that you can read all of the data within the target response time.

Add caching on top of that, if you wish. And build a few summary tables for combinations of dimensions that you know are commonly used.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants