Databases Reference
In-Depth Information
1. Analysis Services analyzes the request and detects the type of the request: It checks
the types of dimensions included in a measure group and detects whether at least
one of the dimensions included in the request is an indirect dimension. (For more
information about indirect dimensions, see Chapter 8, “Advanced Modeling.”) In
this stage, Analysis Services forms a data structure called a MapQuery . The MapQuery
contains the requested subcube, additional information about the request (such as
the type of the request), and a placeholder where the result will be accumulated.
2. Analysis Services analyzes partition slices of all the measure group's partitions and
constructs a list of partitions that might contain requested data. (For more informa-
tion about partition slices, see Chapter 20, “Physical Data Model,” and Chapter 21,
“Dimension and Partition Processing.”) At this stage, Analysis Services creates the
Query Partition jobs that it will use in the later stages to read data from partitions.
3. Analysis Services starts the execution of Query Partition jobs. Each job creates a
query plan that defines the strategy to optimize retrieval of data from the partition.
4. Analysis Services iterates over partition segments and uses the bitmap indexes to
build a list of pages in a segment that it will scan later to retrieve query results. (For
more information about indexes, see Chapters 20 and 21.)
5. Analysis Services reads the pages from disk and passes data to the data decoder,
which uses decoding tables (see Chapter 20 for more information about data decod-
ing) to decode attributes necessary to generate the response. The data decoder opti-
mizes the data decoding and filters out not requested data.
6. Analysis Services merges results from all the partitions into a single Datacache
object. It aggregates data to the level defined by the request subcube. For example, if
the partition has Date as a granularity attribute but a user has requested data about
sales in January, Analysis Services aggregates the value of all the records that contain
days in January into a record that contains aggregated values for the whole month
of January. Aggregation can be very simple for regular measure groups and can be
complex for measure groups that include a many-to-many dimension or measure
with AggregateFunction DISTINCT_COUNT . We discuss all these types of aggregations
later in this chapter.
Search WWH ::




Custom Search