Tabular format response format for MDX statements

An XMLA response in tabular format means to flatten a dataset to produce a rowset.

A dataset contains a set of tuples from the COLUMNS axis, a set of tuples from the ROWS axis and CELLS. A rowset contains a number of column names and data (rows).

Column names

The column name is created based on the tuples from the COLUMNS axis and ROWS axis.

For tuples from the ROWS axis: A column name is created by concatenating the level unique name of the member's dimensionality with a dimension property, separated by a period (.) to yield compound names. If there is no DIMENSION PROPERTIES clause in the MDX statement, the dimension property MEMBER_CAPTION is used. For every dimension, determine the lowermost level and the levels above up to root level. For every level and every dimension property, create the column name based on above rule.

For tuples from the COLUMNS axis: A column name is created by concatenating the unique name of the members in the tuple, separated by a period (.) to yield compound names. For every tuple, create the column name based on above rule.

Data

A row represents column values which value is retrieved from the ROWS axis and CELLS.

For columns that are created based on ROWS axis: The column value is the dimension property value of a member. By default, is the MEMBER_CAPTION's value. For each member in the ROWS axis's tuple, get its ancestors and put them in each column (which represents level).

For columns that are created based on COLUMNS axis: The column value is the cell property VALUE of a cell. For each cell, retrieve the cell directly from CELLS.