private static boolean checkHierarchy(RowKeyDesc rowkey, long cuboidID) { List<HierarchyMask> hierarchyMaskList = rowkey.getHierarchyMasks(); // if no hierarchy defined in metadata if (hierarchyMaskList == null || hierarchyMaskList.size() == 0) { return true; } hier: for (HierarchyMask hierarchyMasks : hierarchyMaskList) { long result = cuboidID & hierarchyMasks.fullMask; if (result > 0) { // if match one of the hierarchy constrains, return true; for (long mask : hierarchyMasks.allMasks) { if (result == mask) { continue hier; } } return false; } } return true; }
private static int mathCalcCuboidCount_combination(RowKeyDesc rowkey, long colMask) { if (colMask == 0) // no column selected return 0; int count = 1; for (HierarchyMask hierMask : rowkey.getHierarchyMasks()) { long hierBits = colMask & hierMask.fullMask; if (hierBits != 0) { count *= Long.bitCount(hierBits) + 1; // +1 is for all-zero case colMask &= ~hierBits; } } count *= Math.pow(2, Long.bitCount(colMask)); return count; } }
private long eliminateHierarchyAggregation(long id) { List<HierarchyMask> hierarchyMaskList = cube.getRowkey().getHierarchyMasks(); if (hierarchyMaskList != null && hierarchyMaskList.size() > 0) { for (HierarchyMask hierMask : hierarchyMaskList) { long[] allMasks = hierMask.allMasks; for (int i = allMasks.length - 1; i > 0; i--) { long bit = allMasks[i] ^ allMasks[i - 1]; if ((inputID & bit) != 0) { id &= ~allMasks[i - 1]; } } } } return id; }
private static boolean checkHierarchy(RowKeyDesc rowkey, long cuboidID) { List<HierarchyMask> hierarchyMaskList = rowkey.getHierarchyMasks(); // if no hierarchy defined in metadata if (hierarchyMaskList == null || hierarchyMaskList.size() == 0) { return true; } hier: for (HierarchyMask hierarchyMasks : hierarchyMaskList) { long result = cuboidID & hierarchyMasks.fullMask; if (result > 0) { // if match one of the hierarchy constrains, return true; for (long mask : hierarchyMasks.allMasks) { if (result == mask) { continue hier; } } return false; } } return true; }
private static int mathCalcCuboidCount_combination(RowKeyDesc rowkey, long colMask) { if (colMask == 0) // no column selected return 0; int count = 1; for (HierarchyMask hierMask : rowkey.getHierarchyMasks()) { long hierBits = colMask & hierMask.fullMask; if (hierBits != 0) { count *= Long.bitCount(hierBits) + 1; // +1 is for all-zero case colMask &= ~hierBits; } } count *= Math.pow(2, Long.bitCount(colMask)); return count; } }
private long eliminateHierarchyAggregation(long id) { List<HierarchyMask> hierarchyMaskList = cube.getRowkey().getHierarchyMasks(); if (hierarchyMaskList != null && hierarchyMaskList.size() > 0) { for (HierarchyMask hierMask : hierarchyMaskList) { long[] allMasks = hierMask.allMasks; for (int i = allMasks.length - 1; i > 0; i--) { long bit = allMasks[i] ^ allMasks[i - 1]; if ((inputID & bit) != 0) { id &= ~allMasks[i - 1]; } } } } return id; }