Performance is often quite complex to optimize.
The list of what can potentially cause bad performance is long and often it turns up that it's maybe a combination of things that causes the performance problems.
However, there are things that you can do, that at least optimizes the parts that you control as a TARGIT Developer - let's look at 8 things that you can do to improve performance:
- Upgrade to the latest version of TARGIT
Between all the new features there is always performance tuning going on in every version that TARGIT releases.
So before anything else - we advice you to upgrade to the latest version.
- Avoid huge tables with a lot of "nested" dimensions (attributes placed on the same axis)
Try to challenge the users sometimes - and ask them why they need everything in one table - maybe they would actually be ok with splitting data up in smaller tables, which would be much better for performance - but also easier to overview in many cases.
Sometimes the big table is needed because the data is supposed to be exported to excel at some point. In that case you can create an alternative version of the dashboard only meant for export purposes.
Consider if the data could be pre-rendered, using the new functionality, where you can schedule an export to a TARGIT folder in PDF, Excel or Image format. This will of course only be an option if they don't need to filter data
- Make sure that data is filtered as much as possible before showing the dashboard
In the classic TARGIT Portal, you show the data at an aggregated level, where they can be filtered, and then offer triggers to a more detailed level of data
- Use required criteria to avoid creating long, detailed lists until they are filtered down and ready for use
So before showing a long list of invoices or something similar - you should require a date filter or some other suitable filtering
- Clean out the unused objects
When you decide to delete a barchart or a text box or anything else from your dashboard, it's still not quite gone. It's in a list of unused objects, which you can see in the object list on the left hand side of your dashboard when you are in designer mode.
It's a little like the recycle bin in Windows. If you expand the Unused objects you will see the 3 objects (in this case) that has been deleted.
Now you can right click one of them and choose to Delete all
- Exchange Dynamic Text with Criteria
If you have created text boxes to reflect time criteria as an example - the text box could look like below when you do properties.
This will generate a query - just like a data object. And it's actually not a small query.
It would be better to add dynamic content which just picks up the criteria in the document.
In the dynamic content diaglogue it would look like this (notice we're on the Criteria tab on the left hand side instead of the members tab):
In the properties of the text box it looks like this:
And the final result will look like this (almost exactly like before):
This should be done everywhere you use dynamic text to reflect criteria - the performance gain can be quite significant.
- All textboxes that do NOT contain dynamic content should be replaced by labels
(design ribbon) which are "light" textboxes that can only contain static text
If you have text boxes to show static images, these should also be replaced by images (design ribbon)
- Use Data Discovery for loading data from prebuilt x-tabs in special cases
If you build a high-level dashboard with a lot of KPIs that is not meant for filtering, but just to show the KPIs, you typically load a lot of data runtime just to show these high level numbers. Maybe then you need to add calculations and visibility agents to hide all the details (which will also be executed runtime).
To avoid all this runtime load of huge datasets, you can built a crosstab with the numbers for a certain KPI - save it in a folder that's not meant for the end users, and then add it as a data source in Data Discovery with the type TARGIT Analysis - make cube in Data Discovery and use that cube for the KPI.
First you connect, and then you can browse your way to the right document and the right object:
Notice that this data source will be refreshed only once a day (you can set it differently if you like) - but in this way a limited dataset that has been pre-fetched can be used for your final KPI.
You just need to make a cube from this source and then you are ready.
Please comment or ask questions regarding this article (or maybe add your own best performance boosting tip).