Giter VIP home page Giter VIP logo

optimus-py's People

Contributors

hermie64 avatar ivankulman avatar mariuswirtz avatar rclapp avatar rkvinoth avatar sven-bo avatar tomasfelcman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

optimus-py's Issues

optimus py unable to create csv

Hi when running optimus.py (on macOS) I get following error for the first cube reordered:
Traceback (most recent call last):
File "optimuspy.py", line 183, in
success = main(
File "optimuspy.py", line 150, in main
optimus_result.to_csv(view_name, RESULT_CSV.format(cube_name, view_name, TIME_STAMP))
File "/Users/tomasfelcman/Documents/Projects/TM1Py/optimus-py-master/results.py", line 91, in to_csv
os.makedirs(os.path.dirname(file_name), exist_ok=True)
File "/Applications/anaconda3/lib/python3.8/os.py", line 223, in makedirs
mkdir(name, mode)

Is there any prerequisite or limitation of optimus.py to the OS?
Thank you,
Tomas

Add original order in the command logs

Hi Marius,

In the command prompt, Optimupy currently shows the new order:
image

I think it would be helpful to write a line just before with the original order.

Cheers,

Vincent

Output csv or xlsx

The output format must be configurable. The user must be able to choose between CSV and XLSX.

Save results to csv and png in case of TM1 server crash

Unfavorable dimension orders can cause the TM1 server to run out of memory or crash.
Currently, Optimus aborts in those cases.

Optimus must save the results, that is has gathered so far, into CSV and PNG before aborting the execution.

TypeError: 'generator' object is not subscriptable

Hello, trying to run this with a small view but see this error:

2020-08-26 13:56:59,417 - optimuspy - INFO - Starting. Arguments retrieved from cmd: Namespace(cube_name='TestCube', executions='5', instance_name='tm1srv01', max_permutations='5', measure_dimension_only_numeric=1, mode='Best', view_names='view1')
2020-08-26 13:57:01,726 - optimuspy - ERROR - Fatal error
Traceback (most recent call last):
File "optimuspy.py", line 76, in main
permutation_results += original_order.execute()
File "C:\Cubewise\optimus-py-master\executors.py", line 90, in execute
return [self._evaluate_permutation(self.original_dimension_order, retrieve_ram=True)]
File "C:\Cubewise\optimus-py-master\executors.py", line 53, in _evaluate_permutation
ram_usage = self._retrieve_ram_usage()
File "C:\Cubewise\optimus-py-master\executors.py", line 68, in _retrieve_ram_usage
value = self.tm1.cubes.cells.execute_mdx_values(mdx=mdx)[0]
TypeError: 'generator' object is not subscriptable

Optimize all cubes in instance

Introduce a new execution mode that finds and activates the best dimension order (based on best execution mode) for every cube in the instance.

Mode 4: Smart Mode

Implement the SmartMode

Approach:

  • Measure how every dimension behaves as the first dimension. Find dimension that has the best query speed as the first dimension
  • then do the same thing for position 2 to n
  • Once the changes from n to n + 1 are becoming insignificant abort

Making Optimys Faster!

Hi Marius,

Great work on Optimus, I just tried it and it is working well.

I just tried it on a small cube and it took 5 min to run, I could see that after the 10th iteration, the Query time and Ram haven't changed much but Optimus still did 30 more iterations. It would be handy sometimes if you are short in time to have a parameter to enable a "fast" mode.

Something like python optimuspy.py -i=tm1srv01 -v=Optimus -e=15 -fast=true

If fast = true then Optimus will stop if the RAM Change < 1% and Query Time Change < 1% (or 5%)

Cheers,

Vincent

Adding Query Time Change % in results.csv

Hi Marius,

In the optimus result csv file, there is a column RAM change % that is very handy to see the impact on the RAM:
image

It would be convenient to have a new column for the query time, like Query Time Change %.

If you have this column/calculation, for ticket #9 , you could check if RAM Change % < 0.01 and Query Time Change % < 0.01 then stop Optimus!

Cheers,

Vincent

Do not skip cubes with dims with string elements

Hi,
Would it be possible not to skip cubes that have a dims with string elements? The expected behaviour is:
If the dim with strings is not the latest -> no string value is stored and thus any permutation can be run.
If the dim with strings is the latest, keep it latest (possible related ER) and run permutations of all the other dims.
Thank you

Support for multiple views

Unfortunately, to optimize for query speed, there is no silver bullet.
The query speed depends on the composition of the view.

Currently, Optimus is optimizing for one view only. It would be better if Optimus would take multiple views into account.
The new Query Time Compared To Orignal Order would be a weighted average over multiple views.

The iteration ID for each cube should restart from 1

Hi Marius,

It's great that optimus supports multi cubes. I can see that for the first cube Employee Reporting, Optimus did 30 iterations (ID 1-> 29) but then for the next cube General Ledger did also 30 iterations (ID 30 -> 58).

image

I think when doing iteration for a new cube the ID number should start back to 1, as you can see in the screenshot, it might be confusing as you would expect to find the first iteration as 1 in the chart for General Ledger but actually, it is 30.

If you have 5 or 10 cubes you want to optimize, the ID will quickly grow to 3 digits and it will be harder to read the chart.

Cheers,

Vincent

Number of Interation

I'm using the optimus-py in my system, and I have a cube with 6 dimension, when I use the optimus-py it tests 19 interations, but with 6 dimension we have a possible number of 6 factorial (720) interations, So Why it only tests 19, and how we know that the best is one of this 19 and not one of the other 701 the we do not have tested.

I get the TypeError 'NoneType' object is not subscriptable

After a few "Evaluated order" messages, the script aborts with the following error message:

Fatal error
Traceback (most recent call last):
File "C:/Users/qlikadm/IdeaProjects/optimus-py/optimus-py-master/optimuspy.py", line 167, in main
optimus_result = OptimusResult(cube_name, permutation_results)
File "C:\Users\qlikadm\IdeaProjects\optimus-py\optimus-py-master\results.py", line 127, in init
self.best_result = self.determine_best_result()
File "C:\Users\qlikadm\IdeaProjects\optimus-py\optimus-py-master\results.py", line 227, in determine_best_result
process_speed_range = [result.median_process_time(result.process_name) for result in self.permutation_results]
File "C:\Users\qlikadm\IdeaProjects\optimus-py\optimus-py-master\results.py", line 227, in
process_speed_range = [result.median_process_time(result.process_name) for result in self.permutation_results]
File "C:\Users\qlikadm\IdeaProjects\optimus-py\optimus-py-master\results.py", line 73, in median_process_time
median = statistics.median(self.process_times_by_process[process_name])
TypeError: 'NoneType' object is not subscriptable

strange optimal order results

Hi,
I have done some testing of the optimus py and there have been strange results for on of the cubes:

ID,Mode,Is Best,Mean Query Time,RAM,Dimension1,Dimension2,Dimension3,Dimension4

1,Original Order,False,0.09010518,4195328,MetrikaPL,Perioda,Verze,Rok
2,Iterations,False,0.08690834,4195328,Verze,Perioda,Rok,MetrikaPL
3,Iterations,False,0.08564043,4195328,MetrikaPL,Verze,Rok,Perioda
4,Iterations,True,0.08697665,2098688,MetrikaPL,Perioda,Verze,Rok
5,Iterations,False,0.08890033,4195328,MetrikaPL,Perioda,Rok,Verze
6,Iterations,False,0.08666933,2098688,MetrikaPL,Perioda,Verze,Rok
7,Iterations,False,0.08690453,2098688,Perioda,MetrikaPL,Verze,Rok
8,Iterations,False,0.15419602,2098688,Verze,Perioda,MetrikaPL,Rok

It looks like the optimal order is the original order - which should be correct as I run optimus againts the same view for multiple times. But the weird thing is the measures between the lines 1 and 4 differ highly in RAM.
It that because of the low overall RAM (2 MB - I have changed the scale in code)?

Thank you for any ideas...
T.

Leave certain positions untouched

There should be way to configure Optimus to leave certain positions in a dimension order of a cube untouched. E.g. dimension 1 must always be time.

Potentially incorrect statistics returned during Permutation Evaluation

OptimusPy reads from the }StatsByCube cube to report on memory usage as it evaluates each permutation.

Where a permutation is tested and completes in less than a minute, there is a risk that the statistics are incorrect as "LATEST" is only updated each minute. Any tests completed before "LATEST" is updated will show the same memory usage.

To mitigate this, the run time of each test should be calculated and a if it took less than a minute wait until at least a minute has passed before reading the statistics from "LATEST".

There is a TM1s.cfg parameter called StatisticalSamplingPeriodMS but this does not seem to be effective when setting to something like 5000 with the expectation that "LATEST" may be updated every 5 seconds rather than every 60.

Avoiding password in config.ini

Hi,
Would it be possible to enable password saving to the config.ini file? It is purely for safety reasons.
e.g. Add parameter to prompt for password...?
Thank you

RuntimeError: Performance Monitor must be activated

Hi Marius,

Currently if Performance monitor is not on, OptimusPy will try to get the RAM 4 times before generating the python error below:

Failed to retrieve RAM consumption. Waiting 15s before retry
Failed to retrieve RAM consumption. Waiting 15s before retry
Failed to retrieve RAM consumption. Waiting 15s before retry
Failed to retrieve RAM consumption. Waiting 15s before retry
Fatal error
Traceback (most recent call last):
  File "optimuspy.py", line 120, in main
    permutation_results += original_order.execute(reset_counter=True)
  File "C:\TM1py\optimus\executors.py", line 106, in execute
    return [self._evaluate_permutation(
  File "C:\TM1py\optimus\executors.py", line 69, in _evaluate_permutation
    ram_usage = self._retrieve_ram_usage()
  File "C:\TM1py\optimus\executors.py", line 92, in _retrieve_ram_usage
    raise RuntimeError("Performance Monitor must be activated")
RuntimeError: Performance Monitor must be activated

Screenshot below:
image

Instead of waiting for 4*15sec and generating an error, it would be great if OptimusPy could check first if the parameter PerformanceMonitor = True:
image

If it is not True, OptimusPy should not even start and just ends with a message like. OptimusPy requires PerformanceMonitor = True, please update the tm1s.cfg file before running OptimysPy again*

Cheers,

Vincent

Wrong Iteration chosen as the optimal solution

Hi,
Here is the report that shows the wrong row as the optimal solution. Meanwhile I can see the better iteration in the report file:

<style> </style>
ID Mode Is Best Mean Query Time Query Ratio Mean Process Time Process Ratio RAM RAM in GB Dimension1 Dimension2 Dimension3 Dimension4 Dimension5 Dimension6 Dimension7 Dimension8 Dimension9 Dimension10 Dimension11 Dimension12 Dimension13 Dimension14
1 Original Order FALSE 1.498994 0 0 0 1233114112 1.14842701 Currency Region CELegalEntity CEGroupAccount Account Yardi CEDepartmentProject CEBusinessUnit CECostType CERelatedParty CEStatAccount CEMeasures Period Year Version
2 Iterations FALSE 3220.113 2147.183 0 0 1577046754 1.468739244 CEMeasures Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
3 Iterations FALSE 3953.821 2636.65 0 0 5393860225 5.023423792 Version CEMeasures Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Year
4 Iterations FALSE 255.9697 169.761 0 0 6148834318 5.726548208 Version Year CEMeasures Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Period
5 Iterations FALSE 288.112 191.2036 0 0 4932487168 4.593736649 Version Year Period CEMeasures Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Currency
6 Iterations FALSE 193.5955 128.1503 0 0 5477746235 5.101548727 Version Year Period Currency CEMeasures CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Region
7 Iterations FALSE 91.88144 60.29541 0 0 5335140018 4.968736337 Version Year Period Currency Region CEMeasures CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi CELegalEntity
8 Iterations FALSE 70.37135 45.94572 0 0 4689217738 4.367174337 Version Year Period Currency Region CELegalEntity CEMeasures CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi CEBusinessUnit
9 Iterations FALSE 30.93562 19.63759 0 0 5544855043 5.164048675 Version Year Period Currency Region CELegalEntity CEBusinessUnit CEMeasures CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi CECostType
10 Iterations FALSE 24.79314 15.53986 0 0 4999595976 4.656236597 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEMeasures CERelatedParty CEStatAccount CEGroupAccount Account Yardi CEDepartmentProject
11 Iterations FALSE 11.98843 6.997649 0 0 4563388722 4.249986934 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CEMeasures CEStatAccount CEGroupAccount Account Yardi CERelatedParty
12 Iterations FALSE 2.638944 0.760477 0 0 4840212557 4.50779922 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEMeasures CEGroupAccount Account Yardi CEStatAccount
13 Iterations FALSE 2.472142 0.649201 0 0 4068461261 3.789049817 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEMeasures Account Yardi CEGroupAccount
14 Iterations FALSE 2.636186 0.758637 0 0 3800026028 3.539050024 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Account Yardi
15 Iterations FALSE 2.374834 0.584285 0 0 3732917220 3.476550076 Version Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi CEMeasures
16 Iterations FALSE 1192.329 794.4195 0 0 1711264371 1.59373914 Year CEMeasures Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
17 Iterations FALSE 675.5533 449.6712 0 0 1560269552 1.453114257 Period Year CEMeasures Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
18 Iterations FALSE 560.6443 373.0137 0 0 1178160819 1.097247768 Currency Year Period CEMeasures Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
19 Iterations FALSE 141.3596 93.30299 0 0 1159055383 1.079454443 Region Year Period Currency CEMeasures CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
20 Iterations FALSE 72.4534 47.33469 0 0 1139949946 1.061661119 CELegalEntity Year Period Currency Region CEMeasures CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
21 Iterations FALSE 43.43371 27.97524 0 0 1114476031 1.037936686 CEBusinessUnit Year Period Currency Region CELegalEntity CEMeasures CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
22 Iterations FALSE 31.45915 19.98685 0 0 1069896678 0.996418929 CECostType Year Period Currency Region CELegalEntity CEBusinessUnit CEMeasures CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
23 Iterations FALSE 15.95616 9.644583 0 0 1057159721 0.984556713 CEDepartmentProject Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEMeasures CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
24 Iterations FALSE 14.155 8.443001 0 0 1133581467 1.055730011 CERelatedParty Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CEMeasures CEStatAccount CEGroupAccount Account Yardi Version
25 Iterations FALSE 15.55773 9.378782 0 0 1069896678 0.996418929 CEStatAccount Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEMeasures CEGroupAccount Account Yardi Version
26 Iterations FALSE 8.82861 4.88969 0 0 999843410.6 0.931176739 CEGroupAccount Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEMeasures Account Yardi Version
27 Iterations FALSE 2.829703 0.887735 0 0 917053185.1 0.854072333 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
28 Iterations FALSE 2857.692 1905.406 0 0 1197266256 1.115041092 CEMeasures Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Account Yardi Version
29 Iterations FALSE 1071.164 713.5887 0 0 931742190.6 0.867752536 Account Yardi CEMeasures Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Year Version
30 Iterations FALSE 97.9054 64.31408 0 0 1124850602 1.047598759 Account Yardi Year CEMeasures Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Period Version
31 Iterations FALSE 81.90021 53.63679 0 0 984847003.7 0.917210247 Account Yardi Year Period CEMeasures Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Currency Version
32 Iterations FALSE 63.39202 41.28971 0 0 1076573499 1.002637203 Account Yardi Year Period Currency CEMeasures CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount Region Version
33 Iterations FALSE 20.17192 12.45697 0 0 970363872.9 0.90372178 Account Yardi Year Period Currency Region CEMeasures CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CELegalEntity Version
34 Iterations FALSE 15.69058 9.467405 0 0 970363872.9 0.90372178 Account Yardi Year Period Currency Region CELegalEntity CEMeasures CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEBusinessUnit Version
35 Iterations FALSE 7.373231 3.918786 0 0 926914480.4 0.86325638 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CEMeasures CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CECostType Version
36 Iterations FALSE 6.860962 3.577045 0 0 830360274.8 0.773333269 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEMeasures CERelatedParty CEStatAccount CEGroupAccount CEDepartmentProject Version
37 Iterations FALSE 4.534425 2.024979 0 0 728978358.9 0.678914002 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CEMeasures CEStatAccount CEGroupAccount CERelatedParty Version
38 Iterations FALSE 2.828187 0.886723 0 0 786910882.3 0.732867869 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEMeasures CEGroupAccount CEStatAccount Version
39 Iterations FALSE 2.822367 0.882841 0 0 743461489.8 0.692402469 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEMeasures CEGroupAccount Version
40 Iterations FALSE 2.886691 0.925752 0 0 695184387 0.647440913 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
41 Iterations FALSE 2.715984 0.811871 0 0 695184387 0.647440913 Account Yardi Year Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
42 Iterations FALSE 4.050731 1.7023 0 0 695184387 0.647440913 Account Yardi Period Year Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
43 Iterations FALSE 4.144146 1.764619 0 0 695184387 0.647440913 Account Yardi Currency Period Year Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
44 Iterations FALSE 2.535424 0.691417 0 0 695184387 0.647440913 Account Yardi Region Period Currency Year CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
45 Iterations FALSE 1.033421 -0.31059 0 0 695184387 0.647440913 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
46 Iterations FALSE 1.658071 0.106122 0 0 680701256.1 0.633952446 Account Yardi CEBusinessUnit Period Currency Region CELegalEntity Year CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
47 Iterations FALSE 8.413411 4.612706 0 0 671045835.6 0.624960135 Account Yardi CECostType Period Currency Region CELegalEntity CEBusinessUnit Year CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
48 Iterations FALSE 12.66806 7.451041 0 0 666218125.3 0.62046398 Account Yardi CEDepartmentProject Period Currency Region CELegalEntity CEBusinessUnit CECostType Year CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
49 Iterations FALSE 20.98609 13.00012 0 0 656562704.7 0.611471669 Account Yardi CERelatedParty Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject Year CEStatAccount CEGroupAccount CEMeasures Version
50 Iterations FALSE 10.72231 6.153007 0 0 555180788.9 0.517052402 Account Yardi CEStatAccount Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Year CEGroupAccount CEMeasures Version
51 Result TRUE 5.49528 2.665979 0 0 487592845 0.454106224 Account Yardi CEGroupAccount Period Currency Region CELegalEntity CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
52 Iterations FALSE 1.753364 0.169694 0 0 492420555.3 0.458602379 Account Yardi CELegalEntity Period Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
53 Iterations FALSE 0.738751 -0.50717 0 0 608285602 0.566510113 Account Yardi CELegalEntity CEGroupAccount Currency Region Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Period CEMeasures Version
54 Iterations FALSE 1.207218 -0.19465 0 0 680701256.1 0.633952446 Account Yardi CELegalEntity Period CEGroupAccount Region Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Currency CEMeasures Version
55 Iterations FALSE 1.113444 -0.25721 0 0 719322938.4 0.669921691 Account Yardi CELegalEntity Period Currency CEGroupAccount Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Region CEMeasures Version
56 Iterations FALSE 1.652393 0.102335 0 0 695184387 0.647440913 Account Yardi CELegalEntity Period Currency Region Year CEGroupAccount CECostType CEDepartmentProject CERelatedParty CEStatAccount CEBusinessUnit CEMeasures Version
57 Iterations FALSE 1.078679 -0.2804 0 0 690356676.7 0.642944758 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CEGroupAccount CEDepartmentProject CERelatedParty CEStatAccount CECostType CEMeasures Version
58 Iterations FALSE 1.005241 -0.32939 0 0 656562704.7 0.611471669 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CECostType CEGroupAccount CERelatedParty CEStatAccount CEDepartmentProject CEMeasures Version
59 Iterations FALSE 0.880587 -0.41255 0 0 617941022.5 0.575502424 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CECostType CEDepartmentProject CEGroupAccount CEStatAccount CERelatedParty CEMeasures Version
60 Iterations FALSE 0.998623 -0.3338 0 0 690356676.7 0.642944758 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEGroupAccount CEStatAccount CEMeasures Version
61 Iterations FALSE 1.032358 -0.3113 0 0 695184387 0.647440913 Account Yardi CELegalEntity Period Currency Region Year CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount CEGroupAccount CEMeasures Version
62 Iterations FALSE 1.705081 0.137483 0 0 492420555.3 0.458602379 Account Yardi CELegalEntity Period Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
63 Iterations FALSE 1.604216 0.070195 0 0 492420555.3 0.458602379 Account Yardi CELegalEntity Currency Period Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
64 Iterations FALSE 1.603975 0.070034 0 0 487592845 0.454106224 Account Yardi CELegalEntity Region Currency Period CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
65 Iterations FALSE 1.450314 -0.03247 0 0 482765134.7 0.449610068 Account Yardi CELegalEntity CEBusinessUnit Currency Region CEGroupAccount Period CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
66 Iterations FALSE 1.593652 0.063148 0 0 477937424.4 0.445113913 Account Yardi CELegalEntity CECostType Currency Region CEGroupAccount CEBusinessUnit Period CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
67 Iterations FALSE 1.446314 -0.03514 0 0 477937424.4 0.445113913 Account Yardi CELegalEntity CEDepartmentProject Currency Region CEGroupAccount CEBusinessUnit CECostType Period CERelatedParty CEStatAccount Year CEMeasures Version
68 Iterations FALSE 1.789643 0.193896 0 0 477937424.4 0.445113913 Account Yardi CELegalEntity CERelatedParty Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject Period CEStatAccount Year CEMeasures Version
69 Iterations FALSE 0.969522 -0.35322 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
70 Iterations FALSE 1.629875 0.087313 0 0 487592845 0.454106224 Account Yardi CELegalEntity CEGroupAccount Currency Region Period CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEStatAccount Year CEMeasures Version
71 Iterations FALSE 0.980738 -0.34574 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
72 Iterations FALSE 1.711593 0.141828 0 0 482765134.7 0.449610068 Account Yardi CELegalEntity CEStatAccount Period Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Currency Year CEMeasures Version
73 Iterations FALSE 1.58166 0.055148 0 0 492420555.3 0.458602379 Account Yardi CELegalEntity CEStatAccount Currency Period CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Region Year CEMeasures Version
74 Iterations FALSE 3.855788 1.572251 0 0 482765134.7 0.449610068 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount Period CECostType CEDepartmentProject CERelatedParty CEBusinessUnit Year CEMeasures Version
75 Iterations FALSE 1.324645 -0.11631 0 0 473109714.1 0.440617757 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit Period CEDepartmentProject CERelatedParty CECostType Year CEMeasures Version
76 Iterations FALSE 1.306356 -0.12851 0 0 468282003.9 0.436121601 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit CECostType Period CERelatedParty CEDepartmentProject Year CEMeasures Version
77 Iterations FALSE 1.051874 -0.29828 0 0 453798873 0.422633135 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject Period CERelatedParty Year CEMeasures Version
78 Iterations FALSE 1.753401 0.169719 0 0 487592845 0.454106224 Account Yardi CELegalEntity CEStatAccount Currency Region Period CEBusinessUnit CECostType CEDepartmentProject CERelatedParty CEGroupAccount Year CEMeasures Version
79 Iterations FALSE 1.144532 -0.23647 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount Currency Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
80 Iterations FALSE 0.983464 -0.34392 0 0 444143452.5 0.413640824 Account Yardi CELegalEntity CEStatAccount Region Currency CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
81 Iterations FALSE 0.983457 -0.34392 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount Currency CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
82 Iterations FALSE 1.189918 -0.20619 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CECostType Region CEGroupAccount CEBusinessUnit Currency CEDepartmentProject CERelatedParty Period Year CEMeasures Version
83 Iterations FALSE 1.179821 -0.21292 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEDepartmentProject Region CEGroupAccount CEBusinessUnit CECostType Currency CERelatedParty Period Year CEMeasures Version
84 Iterations FALSE 1.564018 0.043379 0 0 458626583.3 0.42712929 Account Yardi CELegalEntity CEStatAccount CERelatedParty Region CEGroupAccount CEBusinessUnit CECostType CEDepartmentProject Currency Period Year CEMeasures Version
85 Iterations FALSE 1.031682 -0.31175 0 0 444143452.5 0.413640824 Account Yardi CELegalEntity CEStatAccount CEGroupAccount Region Currency CEBusinessUnit CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
86 Iterations FALSE 1.150001 -0.23282 0 0 453798873 0.422633135 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount CERelatedParty CECostType CEDepartmentProject Currency Period Year CEMeasures Version
87 Iterations FALSE 1.119727 -0.25301 0 0 463454293.6 0.431625446 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CERelatedParty CEGroupAccount Currency CECostType CEDepartmentProject Region Period Year CEMeasures Version
88 Iterations FALSE 1.084779 -0.27633 0 0 453798873 0.422633135 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount Currency CERelatedParty CEDepartmentProject CECostType Period Year CEMeasures Version
89 Iterations FALSE 1.063359 -0.29062 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount Currency CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
90 Iterations FALSE 1.053226 -0.29738 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount Currency CECostType CEDepartmentProject CERelatedParty Period Year CEMeasures Version
91 Iterations FALSE 1.128245 -0.24733 0 0 458626583.3 0.42712929 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CERelatedParty Currency CECostType CEDepartmentProject CEGroupAccount Period Year CEMeasures Version
92 Iterations FALSE 1.007682 -0.32776 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Currency CEGroupAccount Region CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
93 Iterations FALSE 1.079408 -0.27991 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit Region CEGroupAccount Currency CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
94 Iterations FALSE 1.119714 -0.25302 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CECostType CEGroupAccount Currency Region CERelatedParty CEDepartmentProject Period Year CEMeasures Version
95 Iterations FALSE 1.120627 -0.25241 0 0 458626583.3 0.42712929 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CERelatedParty CEGroupAccount Currency CECostType Region CEDepartmentProject Period Year CEMeasures Version
96 Iterations FALSE 0.977651 -0.3478 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Region Currency CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
97 Iterations FALSE 1.043255 -0.30403 0 0 453798873 0.422633135 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Region CERelatedParty CECostType Currency CEDepartmentProject Period Year CEMeasures Version
98 Iterations FALSE 1.115838 -0.25561 0 0 458626583.3 0.42712929 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount CERelatedParty Currency CECostType Region CEDepartmentProject Period Year CEMeasures Version
99 Iterations FALSE 1.077947 -0.28089 0 0 453798873 0.422633135 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Region Currency CERelatedParty CECostType CEDepartmentProject Period Year CEMeasures Version
100 Iterations FALSE 1.002818 -0.33101 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Region Currency CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
101 Iterations FALSE 1.020745 -0.31905 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Currency Region CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
102 Iterations FALSE 1.124706 -0.24969 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount Region Currency CECostType CERelatedParty CEDepartmentProject Period Year CEMeasures Version
103 Iterations FALSE 1.057986 -0.2942 0 0 448971162.7 0.418136979 Account Yardi CELegalEntity CEStatAccount CEBusinessUnit CEGroupAccount CECostType Currency Region CERelatedParty CEDepartmentProject Period Year CEMeasures Version

Incorrect Padding Error

I installed TM1py and MatPlotLib, tested the Check.py script to ensure that I can connect to my environment. I also updated the CONFIG.ini file to match my environment and ran the code and received the following error code:

c:\Users\User\AppData\Local\Programs\Python\Python310\Scripts\optimus-py-master>python optimuspy.py -i="tm1" -v="Global_Balance Sheet Trend - ACT" -e="10" -f="False" -o="csv" -u=True
Starting. Arguments retrieved from cmd: Namespace(instance_name='tm1', view_name='Global_Balance Sheet Trend - ACT', executions='10', fast='False', output='csv', update='True', password=None, process_name=None)
Traceback (most recent call last):
  File "c:\Users\User\AppData\Local\Programs\Python\Python310\Scripts\optimus-py-master\optimuspy.py", line 276, in <module>
    success = main(
  File "c:\Users\User\AppData\Local\Programs\Python\Python310\Scripts\optimus-py-master\optimuspy.py", line 134, in main
    with TM1Service(**tm1_args) as tm1:
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\TM1py\Services\TM1Service.py", line 15, in __init__
    self._tm1_rest = RestService(**kwargs)
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\TM1py\Services\RestService.py", line 200, in __init__
    self._start_session(
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\TM1py\Services\RestService.py", line 354, in _start_session
    self.b64_decode_password(password) if decode_b64 else password,
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\TM1py\Services\RestService.py", line 442, in b64_decode_password
    return b64decode(encrypted_password).decode("UTF-8")
  File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\base64.py", line 87, in b64decode
    return binascii.a2b_base64(s)
binascii.Error: Incorrect padding

I tested the code against other views and received the same issue. Is this related to a cloud implementation of TM1/PA?

Thank you in advance!

Error when RESULT order is the ORIGINAL order

Hi, I have been playing around with optimus-py and I was getting an error in some intermittent case:

Traceback (most recent call last):
  File "/_install_pathPython/optimus-py-master/optimuspy.py", line 300, in <module>
    success = main(
  File "/_install_pathPython/optimus-py-master/optimuspy.py", line 221, in main
    optimus_result.to_png(
  File "/_install_pathPython/optimus-py-master/results.py", line 187, in to_png
    df = self.to_dataframe(view_name, process_name)
  File "/_install_pathPython/optimus-py-master/results.py", line 146, in to_dataframe
    rows.append(result.to_row(view_name, process_name, self.original_order_result))
  File "/_install_pathPython/optimus-py-master/results.py", line 96, in to_row
    original_median_query_time = float(original_order_result.median_query_time(view_name))
AttributeError: 'NoneType' object has no attribute 'median_query_time'

I traced it back to the case when optimal order is the original orded. IMHO it is due to replacement of permutation_result.mode:
results.py: line 140: permutation_result.mode = executors.ExecutionMode.RESULT

I think sufficient would be to add condition for result not being ORIGINAL_ORDER:
if permutation_result.permutation_id == self.best_result.permutation_id **and permutation_result.mode != executors.ExecutionMode.ORIGINAL_ORDER**: permutation_result.is_best = True permutation_result.mode = executors.ExecutionMode.RESULT

I will create Pull request for that...

Thanks,
Tomas

Feature: Add TI Run Time Test

Just making a note for a new feature that I plan on implementing when I have a moment.

  1. Add TI run time to test, ideally intended to test write back speed, but could test anything
  2. change graph to 3D scatter plot
  3. Add flags to control what tests to run

Cheers

Configparser error

Hello Marius,

I am trying to run the tool on a model on my own laptop. However, the connection to TM1 cannot be establised. Would you happen to have an idea what it could be ? See the picture please (if that works). It's the one in Notepad++, the one in Notepad is the example file. Login in my TM1 model is also admin-apple
configparser error

long-running views (> 1000 secs) seems to roll back

For certain large views, the process seems to roll back:

2021-03-05 12:56:51,872 - optimuspy - INFO - Skipping cube 'group_le_planning' since view '____long_opening_view' does not exist
2021-03-05 12:56:52,047 - optimuspy - INFO - Starting analysis for cube 'group_planning'
2021-03-05 12:56:52,074 - optimuspy - INFO - Original dimension order for cube 'group_planning' is: '['scaling', 'group_view', 'group_layer', 'group_account', 'group_function', 'group_performance_segment', 'group_region', 'gs_gaap_code', 'group_scenario', 'projection_type', 'submission_version', 'currency', 'period', 'value']'

stuck here

I believe that the code that is retriggered is

self.tm1.cells.create_cellset_from_view(cube_name=self.cube_name, view_name=view_name, private=False)

Is there a time limit to this function?

Dependency missing for xlsxwriter

There is no mention of xlsxwriter being utilized in the Readme, nor in the prerequisites.
It would be nice to have it mentioned as optional in case of Excel exports.

Thank you!
T.

AttributeError: 'TM1Service' object has no attribute 'cells'

Hello Marius,

I am currently trying to test optimus-py, however I get an error as soon as a cube is found that contains the view referenced in the command line call an error message occurs:

Skipping cube 'FCST Seasonality' since view 'z_Optimise' does not exist
Traceback (most recent call last):
File "optimuspy.py", line 184, in
success = main(
File "optimuspy.py", line 105, in main
original_vmm, original_vmt = retrieve_vmm_vmt(tm1, cube_name)
File "optimuspy.py", line 88, in retrieve_vmm_vmt
return tm1.cells.execute_mdx_values(mdx)
AttributeError: 'TM1Service' object has no attribute 'cells'

Show New Order in the result.csv

Hi Marius,

When looking at the result.csv, it is hard to tell which order is the one OptimusPy used to reorder the cube. As in the Mode column we can see Original Order, it would be great to have New Order for the ideal order:

image

Cheers,

Vincent

Duplicates logs output

Hi Marius,

As you can see in the screenshot below, all logs in the command prompt are duplicated, for example:
image

Do you know why all outputs appear twice? For example:
Skipping cube 'Product' since view 'Optimus' does not exist
Skipping cube 'Product' since view 'Optimus' does not exist

Cheers,

Vincent

Question re. errors

I gave OptimusPy a try today, but I run into errors at the end.
Any idea what could be wrong? Am I missing a package or something (I did check requirements.txt)?

Completed analysis for cube '011_PnL'
Updated dimension order for cube '011_PnL' to ['Function_PL', 'Cost_element', 'Data_source', 'Reporting_entity', 'Currency', 'Product_group', 'Period', 'Version_Master', 'PnL_measure']
Traceback (most recent call last):
File "C:/TM1py/tm1py-samples-master/optimus-py-master/optimuspy.py", line 253, in
output=cmd_args.output)
File "C:/TM1py/tm1py-samples-master/optimus-py-master/optimuspy.py", line 197, in main
RESULT_PATH / RESULT_PNG.format(cube_name, view_name, TIME_STAMP))
File "C:\TM1py\tm1py-samples-master\optimus-py-master\results.py", line 166, in to_png
plt.savefig(file_name, dpi=400)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 689, in savefig
res = fig.savefig(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\figure.py", line 2094, in savefig
self.canvas.print_figure(fname, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 88, in print_figure
super().print_figure(*args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 2075, in print_figure
**kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 521, in print_png
cbook.open_file_cm(filename_or_obj, "wb") as fh:
File "C:\ProgramData\Anaconda3\lib\contextlib.py", line 112, in enter
return next(self.gen)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\cbook_init_.py", line 407, in open_file_cm
fh, opened = to_filehandle(path_or_file, mode, True, encoding)
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\cbook_init_.py", line 392, in to_filehandle
fh = open(fname, flag, encoding=encoding)
FileNotFoundError: [Errno 2] No such file or directory: 'results\011_PnL_Optimus_2020-12-02_19-09-39.png'

It would be nicer to have more logging.

For medium/ bigger size cubes, no logging is done between

Starting analysis for cube '***'
Original dimension order for cube '***' is 

and

Completed analysis for cube '***'
Updated dimension order for cube '***' to [

Once they are hooked up for analysis it would be nicer to have logs written for every update_storage_dimension_order with the result.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.