Processing options
The type element in the process command specifies the type of processing to be done. this is also referred to as the "processing option ". choosing the right processing option is very important since it typically affects large volumes of data. this section describes the different processing options for each type of object.
Following are the types of analysis services objects that can be processed:
- Database
- Dimension
- Cube
- Measure Group
- Partition
- Mining Structure
- Mining Model
before we look at the processing options, we first need to understand what exactly processing is doing. processing generally sends queries to the relational data source and uses the results to populate the analysis services object. following are the storage contents that are built by processing for each object type. A complete discussion of the analysis server storage format is beyond the scope of this document.
- database
- none (a database is just a container of dimensions, cubes, and mining structures; it has no data storage of its own)
- dimension
- attribute stores
- hierarchy stores
- Bitmap indexes
- cube
- measure Group
- none (a measure group is just a container of partitions; it has no data storage of its own)
- Partition
- fact data
- aggregation data
- Bitmap indexes
- mining structure
- Mining Model
When an object is processed, the processing option specifies what part of the storage content of the object is to be built and how. the following table contains the list of all processing options and which objects they apply.
| Processing Option |
Database |
Dimension |
Cube |
Measure Group |
Partition |
Mining Structure |
Mining Model |
| Processfull |
X |
X |
X |
X |
X |
X |
X |
| Processclear |
X |
X |
X |
X |
X |
X |
X |
| Processdefault |
X |
X |
X |
X |
X |
X |
X |
| Processdata |
|
X |
X |
X |
X |
|
|
| Processindexes |
|
X |
X |
X |
X |
|
|
| Processupdate |
|
X |
|
|
|
|
|
| Processadd |
|
X |
|
|
X |
|
|
| Processstructure |
|
|
X |
|
|
X |
|
| Processscriptcache |
|
|
X |
|
|
|
|
| Processclearstructureonly |
|
|
|
|
|
X |
|
Processfull
ProcessfullApplies to all objects. It discards the storage contents of the object and rebuilds them. processfull is recursively applied to all descendants of the object as well.
Processclear
ProcessclearApplies to all objects. It discards the storage contents of the object. processclear is recursively applied to all descendants of the object as well.
Processdefault
ProcessdefaultApplies to all objects. it does the bare minimum required to bring the object to a fully processed state. in other words, it builds only the storage contents that are not currently built. for example, if a partition has fact and aggregation data, then processdefault will only build the bitmap indexes.
The only exception to the above rule is bindings. when you change the bindings of an object (e.g ., keycolumns of a dimension attribute), the object retains its data, but remembers that the bindings have changed. processdefault on the object will discard all the storage contents and rebuild them.
The server handles processdefault by analyzing the object and dynamically converting it to another processing option such as processfull,Processindexes, Etc. processdefault is recursively applied to all descendants of the object as well.
Processdata
ProcessdataApplies only to the OLAP objects, I. e. dimension, cube, measure group and partition. it discards the storage contents of the object and rebuilds only the "data ". for dimensions, it builds only the attribute and hierarchy stores. for partitions, it builds only the fact data.
Essential tially processdata builds the bare minimum required for the object to be available for queries. indexes are considered optional and affect only the query performance. processdata is already applied to all descendants of the object as well.
Processindexes
Processindexes applies only to the OLAP objects, I. E ., dimension, cube, measure group, and partition. it requires that the object must already have its "data" built; otherwise, it raises an error. processindexes preserves the data and rebuilds the "indexes ". for dimensions, it builds the bitmap indexes. for partitions, it builds the aggregation data and bitmap indexes. processindexes is recursively applied to all descendants of the object as well.
Processupdate
ProcessupdateApplies only to dimensions. It is the equivalent of incremental dimension processing in Analysis Services 2000. It sends SQL queries to read the entire dimension table and applies the changes-member updates, additions, deletions.
Since processupdate reads the entire dimension table, it begs the question, "How is it different from processfull? "The difference is that processupdate does not discard the Dimension Storage contents. it applies the changes in a "smart" manner that preserves the fact data in dependent partitions. processfull, on the other hand, does an implicit processclear on all dependent partitions. processupdate is inherently slower than processfull since it is doing additional work to apply the changes.
Depending on the nature of the changes in the dimension table, processupdate can affect dependent partitions. if only new members were added, then the partitions are not affected. but if members were deleted or if member relationships changed (e.g ., A customer moved from Redmond to Seattle), then some of the aggregation data and bitmap indexes on the partitions are dropped. the Cube is still available for queries, albeit with lower performance.
Processadd
ProcessaddApplies only to dimensions and partitions.
Processadd is a new processing option for dimensions that did not exist in Analysis Services 2000. it essentially optimizes processupdate for the scenario where only new members are added. processadd never deletes or updates existing members. it only adds new members. the user can restrict the dimension table so that processadd reads only the new rows.
Processadd for partitions is the equivalent of incremental partition processing in Analysis Services 2000. the user typically specifies an alternate fact table or a filter condition pointing to the new rows. processadd internally creates a temporary partition, processes it with the specified fact data, and merges it into the target partition.
See the out of line bindings section for details on how to specify the new rows for processadd.
Processstructure
ProcessstructureApplies only to cubes and mining structures.
Processstructure for cubes is the equivalent of the Analysis Services 2000 processing option,Processbuildstructure, In DSO. it discards the storage contents of the cube and Its partitions. it implicitly does a processdefault on all dimensions of the cube and marks the Cube as processed. at this point, the cube is available to queries but it will not return any fact data. this is supported mostly for backward-compatibility reasons. it was useful in Analysis Services 2000 for Parallel Processing utilities. once the "structure" of a cube is processed, its partitions can be processed in parallel by multiple client sessions without running into locking conflicts.
Processstructure on a mining structure discards its storage contents (training data) and rebuilds them. It does not affect the contents of the mining models under the mining structure.
Processscriptcache
ProcessscriptcacheApplies only to cubes. The MDX script in a cube can contain cache statements. processscriptcache evaluates the script and persists the results for the cache statements.
Processclearstructureonly
ProcessclearstructureonlyApplies only mining structures. It clears the storage contents (training data) of the mining structure while preserving the contents of its mining models.
Partition Processing Command
When you need to process a partition, a partition processing command is issued. Each partition Processing Command creates one or more jobs to perform the required operations.
Provides the following Partition processing commands:
• Processfull
• Processdata
• Processindexes
• Processadd
• Processclear
• Processclearindex
Processfull will discard the storage content of the partition and regenerate them. In the background, processfull executes processdata and processindexes jobs.
Processdata will discard the storage content of the object and only regenerate the fact data.
Processindexes requires a partition to generate its data. Processindexes retains the data created during processdata and creates new aggregation and bitmap based on the data.
Processadd creates a temporary partition internally, processes the partition data using the target fact, and merges the partition with the existing partition. Note that processadd is the name of the xmla command. In business intelligence development studio and SQL Server Management studio, this command is made public as processincremental.
Processclear deletes all data in the partition. Note that processclear is the name of the xmla command. In business intelligence development studio and SQL Server Management studio, this command is made public as unprocess.
Processclearindexes deletes all indexes and aggregation in the partition. This makes the status of the partition as if processclear was just run after processdata. Note that processclearindexes is the name of the xmla command. This command cannot be used in business intelligence development studio or SQL Server Management studio.