Axis Rowsets

There is one rowset for every axis. This rowset has at least 5n+1 columns where n is the number of dimensions projected along the axis (because there are five default properties that are available for each axis, and one more column for the TUPLE_ORDINAL). In addition to this, there may be provider-specific default properties, or the application may have selected additional properties by using the DIMENSION PROPERTIES clause. Because of this, it is possible that the number of columns corresponding to a dimension is more than five. The field rgcColumns in the MDAXISINFO structure for this axis points to an array containing the number of columns in the axis rowset for this dimension.

The axis rowset has columns in the following order:

The five default properties for each dimension, in order of their occurrence in the axis rowset, are:

To distinguish these column names, they are prefixed by dimension_name. For example, the column names for the SalesRep dimension are: “[SalesRep].[MEMBER_UNIQUE_NAME]”, “[SalesRep].[MEMBER_CAPTION]”, “[SalesRep].[LEVEL_UNIQUE_NAME]”, “[SalesRep].[LEVEL_NUMBER]”, “[SalesRep].[DISPLAY_INFO]”.

The data types for TUPLE_ORDINAL and the five mandatory properties are:

The data types of provider-specific properties and properties selected by using the DIMENSION PROPERTIES clause are available in the PROPERTIES schema rowset. This information is also available by calling IColumnsInfo on the Rowset object corresponding to an axis rowset.

An Example

Consider a dataset that looks like this:

This dataset has two axes, x and y (0 and 1).

The x-axis has the following elements:

The y-axis has the following elements:

The MDAXISINFO structure for the x-axis has:

The MDAXISINFO structure for the y-axis has:

The axis rowset for the x-axis is shown in the table below. (The value of DISPLAY_INFO is shown in the form “x, y, z” where z = number of children, y = MDDISPINFO_DRILLED_DOWN and x = MDDISPINFO_SAME_PARENT_AS_PREV.)



TUPLE_
ORDINAL
[SalesRep].
[MEMBER_
UNIQUE_
NAME]

[SalesRep].
[MEMBER_
CAPTION]
[SalesRep].
[LEVEL_
UNIQUE_
NAME]

[SalesRep].
[LEVEL_
NUMBER]

[SalesRep].
[DISPLAY_
INFO]
0 [SalesRep].
[Venkatrao]
Venkatrao RepName 1 0, 0, 0
1 [SalesRep].
[Venkatrao]
Venkatrao RepName 1 0, 0, 0
2 [SalesRep].
[Venkatrao]
Venkatrao RepName 1 0, 0, 0
3 [SalesRep].
[Venkatrao]
Venkatrao RepName 1 0, 0, 0
4 [SalesRep].
[Netz]
Netz RepName 1 0, 0, 0
5 [SalesRep].
[Netz]
Netz RepName 1 0, 0, 0
6 [SalesRep].
[Netz]
Netz RepName 1 0, 0, 0
7 [SalesRep].
[Netz]
Netz RepName 1 0, 0, 0

 (This is the same table continued.)

[Geography].
[MEMBER_
UNIQUE_
NAME]

[Geography].
[MEMBER_
CAPTION]
[Geography].
[LEVEL_
UNIQUE_
NAME]

[Geography].
[LEVEL_
NUMBER]

[Geography].
[DISPLAY_
INFO]
[The World].
[North America].
[USA].
[USA_North].
[Seattle]
Seattle City 5 0, 0, 0
[The World].
[North America].
[USA].
[USA_North].
[Boston]
Boston City 5 1, 0, 0
[The World].
[North America].
[USA].
[USA_South]
Southern Region, USA Region 3 0, 0, 25
[The World].
[Asia].
[Japan]
Japan Country 2 0, 0, 12
[The World].
[North America].
[USA].
[USA_North].
[Seattle]
Seattle City 5 0, 0, 0
[The World].
[North America].
[USA].
[USA_North].
[Boston]
Boston City 5 1, 0, 0
[The World].
[North America].
[USA].
[USA_South]
Southern Region, USA Region 3 0, 0, 25
[The World].
[Asia].
[Japan]
Japan Country 2 0, 0, 12

The axis rowset for the y-axis is as shown below. (The value of DISPLAY_INFO is shown in the form “x, y, z” where z = number of children, y = MDDISPINFO_DRILLED_DOWN, and x = MDDISPINFO_ SAME_PARENT_AS_PREV.)



TUPLE_
ORDINAL
[Quarters].
[MEMBER_
UNIQUE_
NAME]

[Quarters].
[MEMBER_
CAPTION]
[Quarters].
[LEVEL_
UNIQUE_
NAME]

[Quarters].
[LEVEL_
NUMBER]

[Quarters].
[DISPLAY_
INFO]
0 Jan January Month 2 0, 0, 31
1 Feb February Month 2 1, 0, 29
2 Mar March Month 2 1, 0, 31
3 Qtr2 Quarter 2 Quarter 1 0, 0, 3
4 Qtr3 Quarter 3 Quarter 1 1, 0, 3
5 Oct October Month 2 0, 0, 31
6 Nov November Month 2 1, 0, 30
7 Dec December Month 2 1, 0, 31

Note   In this example, it is assumed that the members of the SalesRep and Geography dimensions need to be qualified and members from all other dimensions need not be qualified (for ensuring uniqueness). It is also assumed that all level names are unique without qualification.

Effect of DIMENSION PROPERTIES Clause on Axis Rowsets

If the MDX expression contains a DIMENSION PROPERTIES clause that selects properties of members, these properties are available in the axis rowset. Each property appears as a column in the axis rowset, whose name is <level_name>.<property_name>, where <level_name> is the unique name of the level to which the property belogs. The property columns (if any) come after the mandatory columns (MEMBER_UNIQUE_NAME, MEMBER_CAPTION, LEVEL_UNIQUE_NAME, LEVEL_NUMBER, and DISPLAY_INFO) for each dimension.

Note   As mentioned before, MEMBER_UNIQUE_NAME, MEMBER_CAPTION, LEVEL_UNIQUE_NAME, LEVEL_NUMBER, and DISPLAY_INFO are always available in the axis rowset. If these properties are specified in the DIMENSION PROPERTIES clause, they are ignored. The effect is as if they were not in the DIMENSION PROPERTIES clause.

Mandatory Member Properties

All providers are required to support the following mandatory properties for each member:

The meanings of these properties are the same as the respective columns of the MEMBERS rowset. (See “MEMBERS Rowset” in this chapter.)

The consumer can include any of these properties in the axis rowset by specifying them on the DIMENSION PROPERTIES clause.

Axis Rowsets and Calculated Members

Calculated members have well-defined values for all the mandatory member properties. They have a name, a unique name (which can be the qualified name or a different unique name generated by the provider), and so on. Most of these are derived from the member definition in the WITH clause or in the CREATE clause.

The following properties need special mention:

The values of the nonmandatory member properties, if any, are provider-defined.