@Override
 public ServiceMetricEvent.Builder makeMetricBuilder(TopNQuery query) {
   return DruidMetrics.makePartialQueryTimeMetric(query)
       .setDimension("threshold", String.valueOf(query.getThreshold()))
       .setDimension("dimension", query.getDimensionSpec().getDimension())
       .setDimension("numMetrics", String.valueOf(query.getAggregatorSpecs().size()))
       .setDimension(
           "numComplexMetrics",
           String.valueOf(DruidMetrics.findNumComplexAggs(query.getAggregatorSpecs())));
 }
 public static TopNResultBuilder makeResultBuilder(TopNParams params, TopNQuery query) {
   final Comparator comparator =
       query
           .getTopNMetricSpec()
           .getComparator(query.getAggregatorSpecs(), query.getPostAggregatorSpecs());
   return query
       .getTopNMetricSpec()
       .getResultBuilder(
           params.getCursor().getTime(),
           query.getDimensionSpec(),
           query.getThreshold(),
           comparator,
           query.getAggregatorSpecs(),
           query.getPostAggregatorSpecs());
 }
 private static List<PostAggregator> prunePostAggregators(TopNQuery query) {
   return AggregatorUtil.pruneDependentPostAgg(
       query.getPostAggregatorSpecs(),
       query.getTopNMetricSpec().getMetricName(query.getDimensionSpec()));
 }