MicroStrategy ONE
Processing Report Execution
Reports are perhaps the most common requests made of Intelligence Server. All report requests have the following pieces:
- A report instance is a container for all objects and information needed and produced during report execution including templates, filters, prompt answers, generated SQL, report results, and so on.
- A task list is a list of tasks that must be accomplished to complete a job. All jobs have a task list associated with them. Intelligence Server coordinates the report instance being passed from one internal Intelligence Server component to another as a report is executed.
The most prominent Intelligence Server components related to report job processing are listed here.
Component | Function |
Analytical Engine Server | Performs complex calculations on a result set returned from the data warehouse, such as statistical and financial functions. Also, sorts raw results returned from the Query Engine into a cross-tabbed grid suitable for display to the user. In addition, it performs subtotal calculations on the result set. Depending on the metric definitions, the Analytical Engine will also perform metric calculations that were not or could not be performed using SQL, such as complex functions. |
Metadata Server | Controls all access to the metadata for the entire project. |
Object Server | Creates, modifies, saves, loads and deletes objects from metadata. Also maintains a server cache of recently used objects. The Object Server does not manipulate metadata directly. The Metadata Server does all reading/writing from/to the metadata; the Object Server uses the Metadata Server to make any changes to the metadata. |
Query Engine | Sends the SQL generated by the SQL Engine to the data warehouse for execution. |
Report Server | Creates and manages all server reporting instance objects. Maintains a cache of executed reports. |
Resolution Server | Resolves prompts for report requests. Works in conjunction with Object Server and Element Server to retrieve necessary objects and elements for a given request. |
SQL Engine Server | Generates the SQL needed for the report. |
Below is a typical scenario of a report's execution within Intelligence Server. The diagram shows the report processing steps. An explanation of each step follows the diagram.
- Intelligence Server receives the request.
- The Resolution Server checks for prompts. If the report has one or more prompts, the user must answer them. For information about these extra steps, see Processing Reports with Prompts.
- The Report Server checks the internal cache, if the caching feature is turned on, to see whether the report results already exist. If the report exists in the cache, Intelligence Server skips directly to the last step and delivers the report to the client. If no valid cache exists for the report, Intelligence Server creates the task list necessary to execute the report. For more information on caching, see Result Caches.
Prompts are resolved before the Server checks for caches. Users may be able to retrieve results from cache even if they have personalized the report with their own prompt answers.
- The Resolution Server obtains the report definition and any other required application objects from the Object Server. The Object Server retrieves these objects from the object cache, if possible, or reads them from the metadata via the Metadata Server. Objects retrieved from metadata are stored in the object cache.
- The SQL Generation Engine creates the optimized SQL specific to the RDBMS being used in the data warehouse. The SQL is generated according to the definition of the report and associated application objects retrieved in the previous step.
- The Query Engine runs the SQL against the data warehouse. The report results are returned to Intelligence Server.
- The Analytical Engine performs additional calculations as necessary. For most reports, this includes cross-tabbing the raw data and calculating subtotals. Some reports may require additional calculations that cannot be performed in the database via SQL.
- Depending on the analytical complexity of the report, the results might be passed back to the Query Engine for further processing by the database until the final report is ready (in this case, steps 5–7 are repeated).
- Intelligence Server's Report Server saves or updates the report in the cache, if the caching feature is turned on, and passes the formatted report back to the client, which displays the results to the user.
Processing Reports with Prompts
If the report has prompts, these steps are inserted in the regular report execution steps detailed here:
- Intelligence Server sends the job to the Resolution Server component. The Resolution Server discovers that the report definition contains a prompt and tells Intelligence Server to prompt the user for the necessary information.
- Intelligence Server puts the job in a sleep mode and tells the Result Sender component to send a message to the client application prompting the user for the information.
- The user completes the prompt, and the client application sends the user's prompt selections back to Intelligence Server.
- Intelligence Server performs the security and governing checks and updates the statistics. It then wakes up the sleeping job, adds the user's prompt reply to the job's report instance, and passes the job to the Resolution Server again.
- This cycle repeats until all prompts in the report are resolved.
A sleeping job times out after a certain period or if the connection to the client is lost. If the prompt reply comes back after the job has timed out, the user sees an error message.
All regular report processing resumes from the point at which Intelligence Server checks for a report cache, if the caching feature is turned on.
Processing Personal Intelligent Cube Reports
Personal Intelligent Cube reports are initially processed the same as a regular report, and the report instance is held in Intelligence Server's memory. If the user manipulates the report and that manipulation does not cause the base report's SQL to change, the Analytical Engine component services the request and sends the results to the client. No additional processing from the data warehouse is required.
Reports can also connect to Intelligent Cubes that can be shared by multiple reports. These Intelligent Cubes also allow the Analytical Engine to perform additional analysis without requiring any processing on the data warehouse.
For information on personal Intelligent Cubes and Intelligent Cubes, see the In-memory Analytics Help.
Processing Graph Reports
When processing graph reports, Intelligence Server performs the regular report processing detailed here. Depending on the connection, the following happens:
- In a three-tier connection, Intelligence Server sends the report to Developer, which creates the graph image.
- In a four-tier connection, Intelligence Server uses the graph generation component to create the graph image and sends it to the client.