class_docstr: Fetch training curve data from CloudWatch Metrics for a specific training job.
docstr: Store a single metric in the _data dict.
  
  This can be converted to a dataframe.
  
  Args:
      timestamp: The timestamp of the metric.
      metric_name: The name of the metric.
      value: The value of the metric.
docstr_tok: ["Store","a","single","metric","in","the","_data","dict",".","This","can","be","converted","to","a","dataframe",".","Args",":","timestamp",":","The","timestamp","of","the","metric",".","metric_name",":","The","name","of","the","metric",".","value",":","The","value","of","the","metric","."]
code: def _add_single_metric(self, timestamp, metric_name, value):
      """Store a single metric in the _data dict.
  
      This can be converted to a dataframe.
  
      Args:
          timestamp: The timestamp of the metric.
          metric_name: The name of the metric.
          value: The value of the metric.
      """
      # note that this method is built this way to make it possible to
      # support live-refreshing charts in Bokeh at some point in the future.
      self._data["timestamp"].append(timestamp)
      self._data["metric_name"].append(metric_name)
      self._data["value"].append(value)
  
imports: from __future__ import print_function, absolute_import
  from abc import ABCMeta, abstractmethod
  from collections import defaultdict, OrderedDict
  import datetime
  import logging
  from six import with_metaclass
  from sagemaker.session import Session
  from sagemaker.utils import DeferredError
  from sagemaker.lineage import artifact
label_desc: Use image node_id 8 for calling the TrainingJobAnalytics obj's underlying member method code with example usage: obj._add_single_metric(timestamp, metric_name, value) without return types