private void buildHierarchyMasks() { this.hierarchyMasks = new ArrayList<HierarchyMask>(); for (DimensionDesc dimension : this.cubeDesc.getDimensions()) { HierarchyDesc[] hierarchies = dimension.getHierarchy(); if (hierarchies == null || hierarchies.length == 0) continue; HierarchyMask mask = new HierarchyMask(); ArrayList<Long> allMaskList = new ArrayList<Long>(); for (int i = 0; i < hierarchies.length; i++) { TblColRef hColumn = hierarchies[i].getColumnRef(); Integer index = getColumnBitIndex(hColumn); long bit = 1L << index; if ((tailMask & bit) > 0) continue; // ignore levels in tail, they don't participate // aggregation group combination anyway mask.fullMask |= bit; allMaskList.add(mask.fullMask); } mask.allMasks = new long[allMaskList.size()]; for (int i = 0; i < allMaskList.size(); i++) mask.allMasks[i] = allMaskList.get(i); this.hierarchyMasks.add(mask); } }
private static RowKeyColInfo extractRowKeyInfo(CubeDesc cubeDesc) { RowKeyDesc rowKeyDesc = cubeDesc.getRowkey(); RowKeyColInfo info = new RowKeyColInfo(); info.hierachyColBitIndice = new ArrayList<List<Integer>>(); info.nonHierachyColBitIndice = new ArrayList<Integer>(); HashSet<Integer> heirachyIndexSet = new HashSet<Integer>(); for (DimensionDesc dim : cubeDesc.getDimensions()) { if (dim.getHierarchy() != null) { LinkedList<Integer> hlist = new LinkedList<Integer>(); for (HierarchyDesc hierarchyDesc : dim.getHierarchy()) { int index = rowKeyDesc.getColumnBitIndex(hierarchyDesc.getColumnRef()); hlist.add(index); heirachyIndexSet.add(index); } info.hierachyColBitIndice.add(hlist); } } for (int i = 0; i < rowKeyDesc.getRowKeyColumns().length; ++i) { if (!heirachyIndexSet.contains(i)) { info.nonHierachyColBitIndice.add(i); } } return info; }
private void sortDimAndMeasure() { sortDimensionsByID(); sortMeasuresByID(); for (DimensionDesc dim : dimensions) { sortHierarchiesByLevel(dim.getHierarchy()); } }
dim.getHierarchy()[i].setColumnRef(dimCols.get(i));
private void buildHierarchyMasks() { this.hierarchyMasks = new ArrayList<HierarchyMask>(); for (DimensionDesc dimension : this.cubeDesc.getDimensions()) { HierarchyDesc[] hierarchies = dimension.getHierarchy(); if (hierarchies == null || hierarchies.length == 0) continue; HierarchyMask mask = new HierarchyMask(); ArrayList<Long> allMaskList = new ArrayList<Long>(); for (int i = 0; i < hierarchies.length; i++) { TblColRef hColumn = hierarchies[i].getColumnRef(); Integer index = getColumnBitIndex(hColumn); long bit = 1L << index; if ((tailMask & bit) > 0) continue; // ignore levels in tail, they don't participate // aggregation group combination anyway mask.fullMask |= bit; allMaskList.add(mask.fullMask); } mask.allMasks = new long[allMaskList.size()]; for (int i = 0; i < allMaskList.size(); i++) mask.allMasks[i] = allMaskList.get(i); this.hierarchyMasks.add(mask); } }
private static RowKeyColInfo extractRowKeyInfo(CubeDesc cubeDesc) { RowKeyDesc rowKeyDesc = cubeDesc.getRowkey(); RowKeyColInfo info = new RowKeyColInfo(); info.hierachyColBitIndice = new ArrayList<List<Integer>>(); info.nonHierachyColBitIndice = new ArrayList<Integer>(); HashSet<Integer> heirachyIndexSet = new HashSet<Integer>(); for (DimensionDesc dim : cubeDesc.getDimensions()) { if (dim.getHierarchy() != null) { LinkedList<Integer> hlist = new LinkedList<Integer>(); for (HierarchyDesc hierarchyDesc : dim.getHierarchy()) { int index = rowKeyDesc.getColumnBitIndex(hierarchyDesc.getColumnRef()); hlist.add(index); heirachyIndexSet.add(index); } info.hierachyColBitIndice.add(hlist); } } for (int i = 0; i < rowKeyDesc.getRowKeyColumns().length; ++i) { if (!heirachyIndexSet.contains(i)) { info.nonHierachyColBitIndice.add(i); } } return info; }
private void sortDimAndMeasure() { sortDimensionsByID(); sortMeasuresByID(); for (DimensionDesc dim : dimensions) { sortHierarchiesByLevel(dim.getHierarchy()); } }
dim.getHierarchy()[i].setColumnRef(dimCols.get(i));
HierarchyDesc[] hierarchies = dimension.getHierarchy(); boolean found = false; long result = 0;