code: func (sink *influxdbSink) GetMetric(metricName string, metricKeys []core.HistoricalKey, start, end time.Time) (map[core.HistoricalKey][]core.TimestampedMetricValue, error) {
  	for _, key := range metricKeys {
  		if err := sink.checkSanitizedKey(&key); err != nil {
  			return nil, err
  		}
  	}
  
  	if err := sink.checkSanitizedMetricName(metricName); err != nil {
  		return nil, err
  	}
  
  	query := sink.composeRawQuery(metricName, nil, metricKeys, start, end)
  
  	sink.RLock()
  	defer sink.RUnlock()
  
  	resp, err := sink.runQuery(query)
  	if err != nil {
  		return nil, err
  	}
  
  	res := make(map[core.HistoricalKey][]core.TimestampedMetricValue, len(metricKeys))
  	for i, key := range metricKeys {
  		if len(resp[i].Series) < 1 {
  			return nil, fmt.Errorf("No results for metric %q describing %q", metricName, key.String())
  		}
  
  		vals, err := sink.parseRawQueryRow(resp[i].Series[0])
  		if err != nil {
  			return nil, err
  		}
  		res[key] = vals
  	}
  
  	return res, nil
  }
docs: // GetMetric retrieves the given metric for one or more objects (specified by metricKeys) of
  // the same type, within the given time interval