Find the ideal dimension order for your TM1 cubes
OptimusPy finds a better storage dimension order for a TM1 cube by applying real reorders on the server and measuring memory, query time and TI time for each. It reports the best order and can apply it for you. It supports TM1 v11 and v12 (PAoC/PAaaS).
-
Install. Either:
- download the Windows (
optimuspy-windows.zip) or Linux (optimuspy-linux.tar.gz, oroptimuspy-linux-arm64.tar.gzon ARM) bundle from the Releases page and unpack it. It holds the executable,config/config.ini.exampleandsamples/(example cube configs). No Python needed; - or, with Python 3.11 or later, clone the repository and run
pip install -e ., which adds theoptimuspycommand.
See Installation.
- download the Windows (
-
Connect to TM1. Copy
config/config.ini.exampletoconfig/config.iniand add a section for your instance. If you already keep aconfig.inifor RushTI or your scripts, link it on the UI's Settings page instead. See TM1 Connection.
optimuspy uiOr double-click the executable. The UI opens at http://127.0.0.1:8765. Then:
- Choose your instance in the sidebar.
- On the Optimize page, click a cube.
- On Configure, keep Greedy, pick a view and click Save & Start Optimization.
- When it ends, open the HTML report from the cube's Reports tab.
Describe the cube in a JSON file, like samples/optimize.json:
{
"instance": "tm1srv01",
"cube": "Sales",
"views": ["Optimus"],
"processes": [],
"executions": 10,
"fast": false,
"output": "csv",
"update": false,
"dimensions_to_exclude": [],
"predefined_orders": [],
"orders_to_ignore": []
}Then run it:
optimuspy optimize samples/optimize.jsonThe report is written to results/<instance>/. With "update": false the cube ends in its original order.
To find which cubes are worth optimizing, scan the instance. This lists the largest cubes, the ones that make up 60% of its memory, leaves out those already optimized, and writes a starter config for each into cube-configs/; add your views to each file before you run it:
optimuspy scan --instance tm1srv01 --output cube-configs/cubewise-code.github.io/optimus-py/docs
- New to OptimusPy? Start with the User Guide.
- What's new in 2.0.0, and how to upgrade from 1.x: CHANGELOG.md.
- Contributing, and how versions and releases are made: CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details
