InterSystems IRIS Data Platform 2019.2  /  Implementing InterSystems IRIS Business Intelligence  /  How the Analytics Engine Works

Implementing InterSystems IRIS Business Intelligence
Engine Steps
Previous section           Next section
InterSystems: The power behind what matters   

Engine Steps
To process an MDX query, the Analytics Engine performs the following steps:
  1. Preparation, which occurs in process (that is, this step is not launched as a background process). In this phase:
    1. The engine parses the query and converts it to an object representation, the parse tree.
      In the parse tree, each axis of the query is represented separately. One axis represents the overall filtering of the query.
    2. The engine converts the parse tree to a normalized version of the query text.
      In this normalized version, for example, all %FILTER clauses have been combined into a single, equivalent WHERE clause.
    3. The engine generates a hash that is based on the normalized query text. the engine uses this hash value as the query key. The query key enables the engine to look up results for this query in the globals discussed in this appendix.
    4. If the engine finds that it is possible to reuse previous results for this query (from ^DeepSee.Cache.Results), the engine does so and skips the following steps.
  2. Execute axes, which also occurs in process. In this phase:
    1. The engine executes any subqueries.
    2. The engine examines the slicer axis (the WHERE clause), merges in any relevant filtering (such as from a subject area filter), and updates ^DeepSee.Cache.Axis with information about this axis.
    3. The engine examines each of the remaining axes and updates ^DeepSee.Cache.Axis.
  3. Execute cells, which occurs in the background (in multiple parallel processes). In this phase, the engine obtains intermediate values for each cell of the results, separately for each bucket, as follows:
    1. First the engine checks to see if ^DeepSee.Cache.Cell contains a value for the cell for the given bucket.
      If so, the engine uses that value.
    2. Otherwise, the engine uses the applicable nodes of ^DeepSee.Index to obtain the bitmap indices that it needs. The engine combines these bitmap indices and then uses the result to find the applicable records in the source table.
      If the cache uses buckets, the engine adds nodes to ^DeepSee.Cache.Cell for use by later queries.
  4. Consolidation, which occurs in process. In this phase:
    1. For each slicer axis, the engine examines each result cell for that axis.
      For each result cell, the engine finds all the nodes in ^DeepSee.Cache.Cell that contain values for this cell.
      It then combines those values.
    2. For each result cell, the engine then combines the results across the slicer axes and obtains a single value.
      For information, see the next section.
    The engine evaluates the CURRENTMEMBER function during the consolidation phase. In contrast, it evaluates other functions earlier in the processing.

Previous section           Next section
Send us comments on this page
View this book as PDF   |  Download all PDFs
Copyright © 1997-2019 InterSystems Corporation, Cambridge, MA
Content Date/Time: 2019-10-17 05:24:16