В настоящее время я извлекаю статистику метрик 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;
});
Я все еще ищу идеальный способ получить отсортированные результаты. Если у кого-то есть подсказка, я был бы очень благодарен.
getMetricStatistics
не принимает никаких других параметров. Хотя странно, что он вернет несортированный массив, когда вы хотите получить данные в заданный период времени. Лучше всего использовать функциюusort
. - person Tom   schedule 17.04.2014