diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/algorithm/BPUSCalculator.java b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/algorithm/BPUSCalculator.java index ea91c6cb810..6316858d583 100755 --- a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/algorithm/BPUSCalculator.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/algorithm/BPUSCalculator.java @@ -60,15 +60,15 @@ private Map initCuboidAggCostMap() { cuboidAggCostMap.put(cuboid, getCuboidCost(cuboid)); } } - Set mandatoryCuboidSetWithStats = cuboidAggCostMap.keySet(); + //Initialize stats for selection cuboids long baseCuboidCost = getCuboidCost(cuboidStats.getBaseCuboid()); for (Long cuboid : cuboidStats.getAllCuboidsForSelection()) { long leastCost = baseCuboidCost; - for (Long cuboidTarget : mandatoryCuboidSetWithStats) { - if ((cuboid | cuboidTarget) == cuboidTarget) { - if (leastCost > cuboidAggCostMap.get(cuboidTarget)) { - leastCost = cuboidAggCostMap.get(cuboidTarget); + for (Map.Entry cuboidTargetEntry : cuboidAggCostMap.entrySet()) { + if ((cuboid | cuboidTargetEntry.getKey()) == cuboidTargetEntry.getKey()) { + if (leastCost > cuboidTargetEntry.getValue()) { + leastCost = cuboidTargetEntry.getValue(); } } } @@ -106,9 +106,9 @@ public CuboidBenefitModel.BenefitModel calculateBenefitTotal(Set cuboidsTo } double totalCostSaving = 0; int benefitCount = 0; - for (Long cuboid : cuboidAggCostMapCopy.keySet()) { - if (cuboidAggCostMapCopy.get(cuboid) < processCuboidAggCostMap.get(cuboid)) { - totalCostSaving += processCuboidAggCostMap.get(cuboid) - cuboidAggCostMapCopy.get(cuboid); + for (Map.Entry entry : cuboidAggCostMapCopy.entrySet()) { + if (entry.getValue() < processCuboidAggCostMap.get(entry.getKey())) { + totalCostSaving += processCuboidAggCostMap.get(entry.getKey()) - entry.getValue(); benefitCount++; } } diff --git a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java index 357747663d7..4c71fea0114 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/gridtable/CubeCodeSystem.java @@ -168,13 +168,13 @@ public MeasureAggregator[] newMetricsAggregators(ImmutableBitSet columns, Str // deal with holistic distinct count if (dependentMetricsMap != null) { - for (Integer child : dependentMetricsMap.keySet()) { - if (columns.get(child)) { - Integer parent = dependentMetricsMap.get(child); + for (Map.Entry childEntry : dependentMetricsMap.entrySet()) { + if (columns.get(childEntry.getKey())) { + Integer parent = childEntry.getValue(); if (columns.get(parent) == false) throw new IllegalStateException(); - int childIdx = columns.trueBitIndexOf(child); + int childIdx = columns.trueBitIndexOf(childEntry.getKey()); int parentIdx = columns.trueBitIndexOf(parent); result[childIdx].setDependentAggregator(result[parentIdx]); }