Inferência SQL
O CloudWatch Metrics Insights utiliza vários mecanismos para inferir a intenção de determinada consulta SQL.
Intervalo de tempo
Os pontos de dados de séries temporais resultantes de uma consulta são agrupados em intervalos de tempo com base no período solicitado. Para agregar valores no SQL padrão, deve-se definir uma cláusula GROUP BY explícita para coletar todas as observações de um determinado período juntas. Como essa é a forma padrão de consultar dados de séries temporais, o CloudWatch Metrics Insights infere o intervalo de tempo sem a necessidade de expressar uma cláusula GROUP BY explícita.
Por exemplo, quando uma consulta é realizada com um período de um minuto, todas as observações pertencentes a esse minuto até o próximo (excluído) são acumuladas até a hora de início do bucket de tempo. Isso torna as instruções SQL do Metrics Insights mais concisas e menos detalhadas.
SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)
A consulta anterior retorna uma única série temporal (pares de valores de timestamp), representando a utilização média da CPU de todas as instâncias do Amazon EC2. Supondo que o período solicitado seja de um minuto, cada ponto de dados retornado representa a média de todas as observações medidas dentro do intervalo específico de um minuto (incluindo a hora de início e excluindo a hora de término). O timestamp relacionado ao ponto de dados específico é a hora de início do bucket
Projeção de campos
As consultas do Metrics Insights sempre retornam a projeção de timestamp. Não é necessário especificar uma coluna timestamp na cláusula SELECT para obter o timestamp de cada valor de ponto de dados correspondente. Para obter detalhes sobre como o timestamp é calculado, consulte Intervalo de tempo.
Ao usar GROUP BY, cada nome de grupo também é inferido e projetado no resultado, para que você possa agrupar a série temporal retornada.
SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId
A consulta anterior retorna uma série temporal para cada instância do Amazon EC2. Cada série temporal é rotulada com base no valor do ID da instância.
Agregação global ORDER BY
Ao usar a ORDER BY, a FUNCTION() infere por qual função agregada você deseja ordenar os valores dos pontos de dados das métricas consultadas. A operação agregada é executada em todos os pontos de dados correspondentes de cada série temporal individual na janela de tempo consultada.
SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId ORDER BY MAX() LIMIT 10
A consulta anterior retorna a utilização da CPU para cada instância do Amazon EC2, limitando o conjunto de resultados a 10 entradas. Os resultados são ordenados com base no valor máximo da série temporal individual na janela de tempo solicitada. A cláusula ORDER BY é aplicada antes de LIMIT, para que se calcule o ordenamento com relação a mais de dez séries temporais.