After you have defined the set of tuples for each axis, you need to specify which set is projected on which axis. In the syntax shown in Parts of an MDX Query, there is an <axis_specification> value for each axis in the dataset.
The breakdown of the <axis_specification> syntax is:
<axis_specification> ::= <set> ON <axis_name>
<axis_name> ::= COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS | AXIS(<index>)
Each axis is associated with a number: 0 for the x-axis, 1 for the y-axis, 2 for the z-axis, and so on. To project a set on an axis, use the syntax AXIS(<index>). The <index> value is the axis number. For the first five axes, COLUMNS, ROWS, PAGES, SECTIONS, and CHAPTERS can be used in place of AXIS(0), AXIS(1), AXIS(2), AXIS(3), and AXIS(4), respectively.
An MDX query cannot skip axes. That is, a query that includes one or more <axis_name> values must not exclude lower-numbered or intermediate axes. For example, a query cannot have a ROWS axis without a COLUMNS axis, or have COLUMNS and PAGES axes without a ROWS axis.
However, you can specify a SELECT clause with no axes (that is, an empty SELECT clause). In this case, all dimensions are slicer dimensions, and the MDX query selects one cell.
Note OLAP Services supports a maximum of 63 dimensions in a cube. A 63-dimension cube can also contain a measures dimension. Therefore, MDX queries on OLAP Services cubes are limited to 64 axes maximum.