public AggregationScanner(
      CoprocessorRowType type,
      CoprocessorFilter filter,
      CoprocessorProjector groupBy,
      ObserverAggregators aggrs,
      RegionScanner innerScanner,
      ObserverBehavior behavior)
      throws IOException {

    AggregateRegionObserver.LOG.info("Kylin Coprocessor start");

    this.behavior = behavior;

    ObserverAggregationCache aggCache;
    Stats stats = new Stats();

    aggCache = buildAggrCache(innerScanner, type, groupBy, aggrs, filter, stats);
    stats.countOutputRow(aggCache.getSize());
    this.outerScanner = aggCache.getScanner(innerScanner);

    AggregateRegionObserver.LOG.info("Kylin Coprocessor aggregation done: " + stats);
  }