private static boolean checkAggregationGroup(RowKeyDesc rowkey, long cuboidID) { long cuboidWithoutMandatory = cuboidID & ~rowkey.getMandatoryColumnMask(); long leftover; for (AggrGroupMask mask : rowkey.getAggrGroupMasks()) { if ((cuboidWithoutMandatory & mask.uniqueMask) != 0) { leftover = cuboidWithoutMandatory & ~mask.groupMask; return leftover == 0 || leftover == mask.leftoverMask; } } leftover = cuboidWithoutMandatory & rowkey.getTailMask(); return leftover == 0 || leftover == rowkey.getTailMask(); }
public static int mathCalcCuboidCount(CubeDesc cube) { int result = 1; // 1 for base cuboid RowKeyDesc rowkey = cube.getRowkey(); AggrGroupMask[] aggrGroupMasks = rowkey.getAggrGroupMasks(); for (int i = 0; i < aggrGroupMasks.length; i++) { boolean hasTail = i < aggrGroupMasks.length - 1 || rowkey.getTailMask() > 0; result += mathCalcCuboidCount_aggrGroup(rowkey, aggrGroupMasks[i], hasTail); } return result; }
private static boolean checkAggregationGroup(RowKeyDesc rowkey, long cuboidID) { long cuboidWithoutMandatory = cuboidID & ~rowkey.getMandatoryColumnMask(); long leftover; for (AggrGroupMask mask : rowkey.getAggrGroupMasks()) { if ((cuboidWithoutMandatory & mask.uniqueMask) != 0) { leftover = cuboidWithoutMandatory & ~mask.groupMask; return leftover == 0 || leftover == mask.leftoverMask; } } leftover = cuboidWithoutMandatory & rowkey.getTailMask(); return leftover == 0 || leftover == rowkey.getTailMask(); }
public static int mathCalcCuboidCount(CubeDesc cube) { int result = 1; // 1 for base cuboid RowKeyDesc rowkey = cube.getRowkey(); AggrGroupMask[] aggrGroupMasks = rowkey.getAggrGroupMasks(); for (int i = 0; i < aggrGroupMasks.length; i++) { boolean hasTail = i < aggrGroupMasks.length - 1 || rowkey.getTailMask() > 0; result += mathCalcCuboidCount_aggrGroup(rowkey, aggrGroupMasks[i], hasTail); } return result; }
long bit = 1L << index; if ((rowkey.getTailMask() & bit) > 0) continue; // ignore levels in tail, they don't participate leftover = cuboidWithoutMandatory & rowkey.getTailMask(); if (leftover == 0) { cuboidID = cuboidID | rowkey.getTailMask(); return cuboidID;