private MAggregationGroupByOperator getmAggregationGroupByOperator() {
    final List<AggregationFunctionGroupByOperator> aggregationFunctionGroupByOperatorList =
        new ArrayList<AggregationFunctionGroupByOperator>();
    Operator filterOperator =
        new MatchEntireSegmentOperator(_indexSegment.getSegmentMetadata().getTotalRawDocs());
    final BReusableFilteredDocIdSetOperator docIdSetOperator =
        new BReusableFilteredDocIdSetOperator(
            filterOperator, _indexSegment.getSegmentMetadata().getTotalRawDocs(), 5000);
    final Map<String, DataSource> dataSourceMap = getDataSourceMap();
    final MProjectionOperator projectionOperator =
        new MProjectionOperator(dataSourceMap, docIdSetOperator);

    for (int i = 0; i < _numAggregations; ++i) {
      final MAggregationFunctionGroupByWithDictionaryAndTrieTreeOperator
          aggregationFunctionGroupByOperator =
              new MAggregationFunctionGroupByWithDictionaryAndTrieTreeOperator(
                  _aggregationInfos.get(i),
                  _groupBy,
                  new UReplicatedProjectionOperator(projectionOperator),
                  true);
      aggregationFunctionGroupByOperatorList.add(aggregationFunctionGroupByOperator);
    }

    return new MAggregationGroupByOperator(
        _indexSegment,
        _aggregationInfos,
        _groupBy,
        projectionOperator,
        aggregationFunctionGroupByOperatorList);
  }