2.2.9 Dimensions

A pivot table presents multidimensional data. A Dimension identifies the categories associated with each dimension.

Dimensions => int32[n-dims] Dimension*[n-dims]
Dimension =>
    Value[name] DimProperties
    int32[n-categories] Category*[n-categories]
DimProperties =>
    byte[x1]
    byte[x2]
    int32[x3]
    bool[hide-dim-label]
    bool[hide-all-labels]
    01 int32[dim-index]

name is the name of the dimension, e.g. Variables, Statistics, or a variable name.

The meanings of x1 and x3 are unknown. x1 is usually 0 but many other values have been observed. A writer may safely use 0 for x1 and 2 for x3.

x2 is 0, 1, or 2. For a pivot table with L layer dimensions, R row dimensions, and C column dimensions, x2 is 2 for the first L dimensions, 0 for the next R dimensions, and 1 for the remaining C dimensions. This does not mean that the layer dimensions must be presented first, followed by the row dimensions, followed by the column dimensions—on the contrary, they are frequently in a different order—but x2 must follow this pattern to prevent the pivot table from being misinterpreted.

If hide-dim-label is 00, the pivot table displays a label for the dimension itself. Because usually the group and category labels are enough explanation, it is usually 01.

If hide-all-labels is 01, the pivot table omits all labels for the dimension, including group and category labels. It is usually 00. When hide-all-labels is 01, show-dim-label is ignored.

dim-index is usually the 0-based index of the dimension, e.g. 0 for the first dimension, 1 for the second, and so on. Sometimes it is -1. There is no visible difference. A writer may safely use the 0-based index.