The chunk expression is created from the interleaving of the
h-surrogate specifications. The depicted chunk expression 0|3|2|*.*|*|6|P.*|*|*|*
is built from the interleaving of the aforementioned h-surrogate specifications, plus
the h-surrogate specification for the CUSTOMER dimension, which is *.P.*, since
this dimension is left unrestricted in the query of Figure 4 (???P??? denotes a pseudolevel).
The interleaving order is DATE, PRODUCT, LOCATION, and CUSTOMER
and was chosen arbitrarily.
The MDRangeSelect will access the CUBE File in order to efficiently retrieve the
relevant detailed data (described in the CX). Each sales value retrieved will be augmented
with two h-surrogates, one corresponding to the DATE dimension and the
other to LOCATION, which are dynamically computed from the corresponding data
cell chunk-id (which is not stored along with the measure values, since the chunks
are essentially multidimensional arrays, but retrieved from the current position/data
point in the cube??™s data space). This provides the ???impression??? of tuples coming out
of the MDRangeSelect operator.
Furthermore, these tuples will need to be joined with the DATE dimension in order
to retrieve the Month values required in the final result. This join is implemented
by a physical operator named IndexResJoin in the figure. Essentially, this is an
index-based join that utilizes the primary organization of the dimension tables to
efficiently retrieve the single join tuple from the dimension side.
Pages:
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300