AWS Cloudwatch PHP SDK возвращает несортированную статистику метрик

В настоящее время я извлекаю статистику метрик CloudWatch с помощью aws php sdk.

К сожалению, метод getMetricStatistics возвращает несортированные результаты. Интересно, почему он не отсортирован по Timestamp ASC. Кто-нибудь знает, как получить отсортированные результаты из Cloudwatch?

мой код

$result = $this->client->getMetricStatistics(array(
        'Namespace'  => 'My.Namespace',
        'MetricName' => 'my-metric',
        'StartTime'  => strtotime('-1 days'),
        'EndTime'    => strtotime('now'),
        'Period'     => 300,
        'Statistics' => array('Average'),
));

и результат

array (size=7)
  0 => 
    array (size=3)
      'Timestamp' => string '2014-04-16T10:53:00Z' (length=20)
      'Unit' => string 'Count' (length=5)
      'Average' => string '9.998594711316002' (length=17)
  1 => 
    array (size=3)
      'Timestamp' => string '2014-04-16T11:43:00Z' (length=20)
      'Unit' => string 'Count' (length=5)
      'Average' => string '0.7908148450858722' (length=18)
  2 => 
    array (size=3)
      'Timestamp' => string '2014-04-16T11:08:00Z' (length=20)
      'Unit' => string 'Count' (length=5)
     'Average' => string '5.402251656252796' (length=17)
  3 => 
    array (size=3)
      'Timestamp' => string '2014-04-16T11:03:00Z' (length=20)
      'Unit' => string 'Count' (length=5)
      'Average' => string '8.958888493053081' (length=17)

Спасибо за вашу помощь!

J.

ОБНОВИТЬ

Мне до сих пор не удалось получить отсортированные результаты прямо из вызова метода. Поэтому я использовал usort, как было предложено @Svenskunganka

usort($result['Datapoints'], function($a, $b) {
    if($a['Timestamp'] == $b['Timestamp']) {
        return 0;
    }
    return ($a['Timestamp'] < $b['Timestamp']) ? -1 : 1;
});

Я все еще ищу идеальный способ получить отсортированные результаты. Если у кого-то есть подсказка, я был бы очень благодарен.


person Jesse    schedule 17.04.2014    source источник
comment
Вы пробовали использовать функцию usort ()? Вот хороший пример из другого вопроса   -  person Tom    schedule 17.04.2014
comment
конечно, я мог бы использовать usort для сортировки массива впоследствии, но когда есть возможность получить отсортированные результаты непосредственно из вызова метода, это было бы намного лучше   -  person Jesse    schedule 17.04.2014
comment
Насколько мне известно, функция getMetricStatistics не принимает никаких других параметров. Хотя странно, что он вернет несортированный массив, когда вы хотите получить данные в заданный период времени. Лучше всего использовать функцию usort.   -  person Tom    schedule 17.04.2014


Ответы (1)


Нет способа получить отсортированные результаты из GetMetricStatistics, вам нужно самостоятельно отсортировать точки данных.

«GetMetricStatistics не возвращает данные в хронологическом порядке».

Источник: http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html

person tpolyak    schedule 26.04.2014