docs: def _fetch_metric(self, metric_name):
          """Fetch all the values of a named metric, and add them to _data
          """
          request = {
              'Namespace': self.CLOUDWATCH_NAMESPACE,
              'MetricName': metric_name,
              'Dimensions': [
                  {
                      'Name': 'TrainingJobName',
                      'Value': self.name
                  }
              ],
              'StartTime': self._time_interval['start_time'],
              'EndTime': self._time_interval['end_time'],
              'Period': self._period,
              'Statistics': ['Average'],
          }
          raw_cwm_data = self._cloudwatch.get_metric_statistics(**request)['Datapoints']
          if len(raw_cwm_data) == 0:
              logging.warning("Warning: No metrics called %s found" % metric_name)
              return
  
          # Process data: normalize to starting time, and sort.
          base_time = min(raw_cwm_data, key=lambda pt: pt['Timestamp'])['Timestamp']
          all_xy = []
          for pt in raw_cwm_data:
              y = pt['Average']
              x = (pt['Timestamp'] - base_time).total_seconds()
              all_xy.append([x, y])
          all_xy = sorted(all_xy, key=lambda x: x[0])
  
          # Store everything in _data to make a dataframe from
          for elapsed_seconds, value in all_xy:
              self._add_single_metric(elapsed_seconds, metric_name, value)