Skip to main content

Engine Steps

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 page.

    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 indexes that it needs. The engine combines these bitmap indexes 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.

FeedbackOpens in a new tab