public MeasureAggregators(MeasureDesc... measureDescs) { descLength = measureDescs.length; aggs = new MeasureAggregator[descLength]; Map<String, Integer> measureIndexMap = new HashMap<String, Integer>(); for (int i = 0; i < descLength; i++) { FunctionDesc func = measureDescs[i].getFunction(); aggs[i] = func.getMeasureType().newAggregator(); measureIndexMap.put(measureDescs[i].getName(), i); } // fill back dependent aggregator for (int i = 0; i < descLength; i++) { String depMsrRef = measureDescs[i].getDependentMeasureRef(); if (depMsrRef != null) { int index = measureIndexMap.get(depMsrRef); aggs[i].setDependentAggregator(aggs[index]); } } }
@Override public MeasureAggregator<?>[] newMetricsAggregators(ImmutableBitSet columns, String[] aggrFunctions) { assert columns.trueBitCount() == aggrFunctions.length; MeasureAggregator<?>[] result = new MeasureAggregator[aggrFunctions.length]; for (int i = 0; i < result.length; i++) { int col = columns.trueBitAt(i); result[i] = MeasureAggregator.create(aggrFunctions[i], info.getColumnType(col)); } // deal with holistic distinct count if (dependentMetricsMap != null) { for (Map.Entry<Integer, Integer> childEntry : dependentMetricsMap.entrySet()) { if (columns.get(childEntry.getKey())) { Integer parent = childEntry.getValue(); if (columns.get(parent) == false) throw new IllegalStateException(); int childIdx = columns.trueBitIndexOf(childEntry.getKey()); int parentIdx = columns.trueBitIndexOf(parent); result[childIdx].setDependentAggregator(result[parentIdx]); } } } return result; }
public MeasureAggregators(MeasureDesc... measureDescs) { descLength = measureDescs.length; aggs = new MeasureAggregator[descLength]; Map<String, Integer> measureIndexMap = new HashMap<String, Integer>(); for (int i = 0; i < descLength; i++) { FunctionDesc func = measureDescs[i].getFunction(); aggs[i] = func.getMeasureType().newAggregator(); measureIndexMap.put(measureDescs[i].getName(), i); } // fill back dependent aggregator for (int i = 0; i < descLength; i++) { String depMsrRef = measureDescs[i].getDependentMeasureRef(); if (depMsrRef != null) { int index = measureIndexMap.get(depMsrRef); aggs[i].setDependentAggregator(aggs[index]); } } }
public MeasureAggregators(MeasureDesc... measureDescs) { descLength = measureDescs.length; aggs = new MeasureAggregator[descLength]; Map<String, Integer> measureIndexMap = new HashMap<String, Integer>(); for (int i = 0; i < descLength; i++) { FunctionDesc func = measureDescs[i].getFunction(); aggs[i] = func.getMeasureType().newAggregator(); measureIndexMap.put(measureDescs[i].getName(), i); } // fill back dependent aggregator for (int i = 0; i < descLength; i++) { String depMsrRef = measureDescs[i].getDependentMeasureRef(); if (depMsrRef != null) { int index = measureIndexMap.get(depMsrRef); aggs[i].setDependentAggregator(aggs[index]); } } }
@Override public MeasureAggregator<?>[] newMetricsAggregators(ImmutableBitSet columns, String[] aggrFunctions) { assert columns.trueBitCount() == aggrFunctions.length; MeasureAggregator<?>[] result = new MeasureAggregator[aggrFunctions.length]; for (int i = 0; i < result.length; i++) { int col = columns.trueBitAt(i); result[i] = MeasureAggregator.create(aggrFunctions[i], info.getColumnType(col)); } // deal with holistic distinct count if (dependentMetricsMap != null) { for (Map.Entry<Integer, Integer> childEntry : dependentMetricsMap.entrySet()) { if (columns.get(childEntry.getKey())) { Integer parent = childEntry.getValue(); if (columns.get(parent) == false) throw new IllegalStateException(); int childIdx = columns.trueBitIndexOf(childEntry.getKey()); int parentIdx = columns.trueBitIndexOf(parent); result[childIdx].setDependentAggregator(result[parentIdx]); } } } return result; }