code: public Deferred<Object> addAggregatePoint(final String metric,
                                     final long timestamp,
                                     final long value,
                                     final Map<String, String> tags,
                                     final boolean is_groupby,
                                     final String interval,
                                     final String rollup_aggregator,
                                     final String groupby_aggregator) {
      final byte[] val = Internal.vleEncodeLong(value);
  
      final short flags = (short) (val.length - 1);  // Just the length.
      
      return addAggregatePointInternal(metric, timestamp,
              val, tags, flags, is_groupby, interval, rollup_aggregator,
              groupby_aggregator);
    }
docs: Adds a rolled up and/or groupby/pre-agged data point to the proper table.
  <p>
  WARNING: The tags map may be modified by this method without a lock. Give
  the method a copy if you plan to use it elsewhere.
  <p>
  If {@code interval} is null then the value will be directed to the
  pre-agg table.
  If the {@code is_groupby} flag is set, then the aggregate tag, defined in
  "tsd.rollups.agg_tag", will be added or overwritten with the {@code aggregator}
  value in uppercase as the value.
  @param metric A non-empty string.
  @param timestamp The timestamp associated with the value.
  @param value The value of the data point.
  @param tags The tags on this series.  This map must be non-empty.
  @param is_groupby Whether or not the value is a pre-aggregate
  @param interval The interval the data reflects (may be null)
  @param rollup_aggregator The aggregator used to generate the data
  @param groupby_aggregator = The aggregator used for pre-aggregated data.
  @return A deferred to optionally wait on to be sure the value was stored
  @throws IllegalArgumentException if the timestamp is less than or equal
  to the previous timestamp added or 0 for the first timestamp, or if the
  difference with the previous timestamp is too large.
  @throws IllegalArgumentException if the metric name is empty or contains
  illegal characters.
  @throws IllegalArgumentException if the tags list is empty or one of the
  elements contains illegal characters.
  @throws HBaseException (deferred) if there was a problem while persisting
  data.
  @since 2.4