Discussions
Categories
Groups
Community Home
Categories
INTERNAL ENABLEMENT
POPULAR
THRUST SERVICES & TOOLS
CLOUD EDITIONS
Quick Links
MY LINKS
HELPFUL TIPS
Back to website
Home
Intelligence (Analytics)
Caching query results to support multiple calls from bound objects
rdpeterson
<p>I am looking for a way to re-use or cache the rows returned by a query in a report for Maximo 7.5 so that each object bound to the data set (table, cross-tab, chart, etc.) does not re-run the query against the database. I would prefer that subsequent calls to the data set returned by the query be against some kind of cached data set, array, etc. </p>
<p> </p>
<p>Most of the reports in my library for Maximo use a single query producing a data set. The data set in many of these reports is used more than once (bound to more than one object). It seems that when these reports are run in the BIRT designer on my desktop, the query is run once and the data set rows are cached and reused by the report objects. I believe this because the average time to execute the report query externally in a database tool like Oracle SQL*Plus is about the same as the total report execution time in BIRT. When the same report is run in Maximo with few or no other reports in the processing queue, it takes a lot longer. The report run log files both in BIRT and in Maximo confirm the query is being executed once for each bound object in the report when the query returns rows.</p>
<p> </p>
<p>Best practice of course dictates that report queries should be optimized before deployment, but some queries are inescapably more complex and take longer. I can also minimize repeat calls to the data set in some, but not all reports. That leaves me with the need to find a way to re-use data sets without re-querying the database each time.</p>
<p> </p>
<p>Any suggestions would be greatly appreciated.</p>
Find more posts tagged with
Comments
micajblock
<p>BIRT will do this automatically. The exceptions are:</p>
<ol><li>Elements have filters that can be pushed down to the data source (which is never the case with Maximo as it uses a scripted data source).</li>
<li>Data set has parameters and they don’t evaluate to identical values for each object</li>
</ol>
rdpeterson
<p>Thanks for the reply. Can you expand on your second statement about parameters that don't evaluate to "identical values for each object"? I'm not sure what that last clause means.</p>
micajblock
<p>Lets say you have a data set with a query parameter. On a table to can assign a value to that parameter via Data Set Parameter Binding (see image). Now if I have 2 tables and each table is bound to a different parameter the data set will be executed twice.</p>
<p> </p>
rdpeterson
<p>All of the reports in our Maximo library use global parameters that apply to all tables. I've never defined parameters at the individual table level. I'm not sure how that would even work in Maximo as it's not in the IBM official BIRT report development guide for Maximo.</p>
micajblock
<p>Then they <strong>should </strong>be only executed once. It could have something to do with the way Maximo implements its scripted data set. Unfortunately you will need to ask IBM.</p>
rdpeterson
<p>Yes, I'm in discussion with them. Thanks for your prompt responses!</p>
micajblock
<p>Let us know what IBM says.</p>