HI ALL:
I read the src code of kylin 2.2, and find:
In class CubeDes, if hierarchyDims contain jointDims will throw exception.
public void validateAggregationGroups() {
...
if (CollectionUtils.containsAny(hierarchyDims, jointDims)) {
logger.error("Aggregation group " + index + " hierarchy
dimensions overlap with joint dimensions");
throw new IllegalStateException(
"Aggregation group " + index + " hierarchy dimensions
overlap with joint dimensions: "
+
ensureOrder(CollectionUtils.intersection(hierarchyDims, jointDims)));
}
But in class AggregationGroup will replace the hierarchy dim with the joint
dims witch contain it.
private void buildHierarchyMasks(RowKeyDesc rowKeyDesc) {
.....
for (int i = 0; i < hierarchy_dims.length; i++) {
TblColRef hColumn =
cubeDesc.getModel().findColumn(hierarchy_dims[i]);
Integer index = rowKeyDesc.getColumnBitIndex(hColumn);
long bit = 1L << index;
// combine joint as logic dim
if (dim2JointMap.get(bit) != null) {
bit = dim2JointMap.get(bit);
}
mask.fullMask |= bit;
allMaskList.add(mask.fullMask);
dimList.add(bit);
}
}
do i understand in a wrong way?