This is the sixth post in a series of posts detailing the capabilities of OLAP cubes in the Data Warehouse, a new feature that enables self-service reporting functionality added in SCSM 2012.
Deployment of cubes leverages the SCSM v1 deployment infrastructure and follows the same paradigm where a deployable returns a deployer with a collection of serializable resources which are used to create the cube in the AS DB. The following diagram illustrates the components involved and the sequence of steps taken to deploy a generic MP.
Figure: Sequence of steps by components to deploy a MP into the DW
For OLAP cubes, the name of the deployable is CubeDeployable for the SystemCenterCube element and CubeExtensionDeployable for the CubeExtension element. The deployer for both elements is CubeDeployer.
The dbo.Selector table in the DWStagingAndConfig DB contains an entry for both the SystemCenterCube and CubeExtension Nova MP Elements. This metadata is used by the deployment engine if additional deployment processing is necessary for an MP element when the MP is imported into the DW via MPSync.
Deployment will use the Analysis Management Objects (AMO) API to create and modify all the cube components in the AS DB. More specifically, AMO in disconnected mode is used since the CubeDeployable will not have a connection to the AS DB. Working with AMO in disconnected mode will allow the user to create the whole tree of AMO objects without establishing a connection to the server. We will then serialize the hierarchy of objects as stream resources and attach them to the deployer object that is passed back to the Deployment infrastructure. The deployer will deserialize these objects, establish a connection to the AS DB, and create the objects by sending the appropriate requests to the server.
Note that only “major objects” can be serialized. In AMO, major objects are considered classes that represent a complete object as a complete entity and not as part of another object. For example, major objects include Server, Cube, and Dimension which all are standalone entities. DimensionAttribute, however, is not a major object because it can only be created as part of a parent major object (Dimension). DimensionAttribute, therefore, is a minor object. Our design will be focused on creating all the major objects needed for cubes along with any dependent minor objects. These major objects are then the objects that will be serialized and eventually deserialized before the objects are created in the Analysis Services database.
Resources that wrap major objects must be created in a specific order in order for deployment to successfully complete to satisfy the dependency requirements of the OLAP cube elements. The two figures below illustrate the deployment sequence for the SystemCenterCube and CubeExtension elements respectively:
Figure: Deployment sequence for SystemCenterCube element resources returned by the CubeDeployable
Figure: Deployment sequence for CubeExtension element resources returned by the CubeExtensionDeployable