Question: Using the JS AWS SDK and passing the following parameters:

```
{
  "StartTime": 1548111915,
  "EndTime": 1549321515,
  "MetricDataQueries": [
    {
      "Id": "m1",
      "MetricStat": {
        "Metric": {
          "MetricName": "NetworkOut",
          "Namespace": "AWS/EC2",
          "Dimensions": [
            {
              "Name": "InstanceId",
              "Value": "i-[redacted]"
            }
          ]
        },
        "Period": 300,
        "Stat": "Average",
        "Unit": "Gigabytes"
      }
    }
  ]
}

```

This is the output:

```
[
  {
    "Id": "m1",
    "Label": "NetworkOut",
    "Timestamps": [],
    "Values": [],
    "StatusCode": "Complete",
    "Messages": []
  }
]

```

1. The query closely matches the sample request found at <https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html#API_GetMetricData_Examples>
2. I am sure that the instance is a valid instance that has definitely had NetworkOut traffic during that date range.

What reason could account for the lack of elements in `Values` array?

Answer: 
A better solution was to omit "Unit" altogether, which allowed AWS to choose the appropriate unit, not only in scale but in category.
For future inquisitors, there are multiple reasons for which the aws cli silently returns an empty dataset instead of an error, because the input requirements are stricter than the standard user's expectations, but the output requirements are much looser. Examples

* wrong unit
* incomplete list of dimensions
* typos, case-sensitivity, etc

References:

* <https://aws.amazon.com/premiumsupport/knowledge-center/cloudwatch-getmetricstatistics-data/>
* <https://github.com/grafana/grafana/issues/9852#issuecomment-395023506>