Inferencia en SQL - Amazon CloudWatch

Inferencia en SQL

En CloudWatch Metrics Insights se utilizan varios mecanismos para inferir la intención de una consulta en SQL determinada.

Bucket de tiempo

Los puntos de datos de serie temporal resultantes de una consulta se acumulan en buckets de tiempo según el periodo solicitado. Para acumular valores en SQL estándar, se debe definir una cláusula GROUP BY explícita para recopilar todas las observaciones de un periodo determinado juntas. Debido a que esta es la forma estándar de consultar datos de serie temporal, CloudWatch Metrics Insights deduce el bucket de tiempo sin necesidad de que se exprese la cláusula GROUP BY de forma explícita.

Por ejemplo, cuando se realiza una consulta con un periodo de un minuto, todas las observaciones pertenecientes a ese minuto hasta el siguiente (excluido) se acumulan hasta la hora de inicio del bucket de tiempo. Esto hace que las sentencias SQL de Metrics Insights sean más concisas y menos detalladas.

SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)

La consulta previa devuelve una única serie temporal (pares de marca temporal y valor), lo que representa la utilización promedio de la CPU de todas las instancias de Amazon EC2. Suponiendo que el periodo solicitado sea de un minuto, cada punto de datos devuelto representa el promedio de todas las observaciones medidas dentro de un intervalo específico de un minuto (se incluye la hora de inicio y no la hora de finalización). La marca temporal relacionada con el punto de datos específico es la hora de inicio del bucket.

Proyección de campos

Las consultas de Metrics Insights siempre devuelven la proyección de marca temporal. No es necesario especificar una columna de marca temporal en la cláusula SELECT para obtener la marca temporal de cada valor de punto de datos correspondiente. Para obtener información detallada acerca de cómo se calcula la marca temporal, consulte Bucket de tiempo.

Cuando se utiliza GROUP BY, el nombre de cada grupo también se deduce y proyecta en el resultado, para que usted pueda agrupar las series temporales devueltas.

SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId

La consulta anterior devuelve una serie temporal para cada instancia de Amazon EC2. Cada serie temporal se etiqueta después del valor del ID de instancia.

Acumulación global de ORDER BY (AGRUPAR POR)

Cuando se utiliza ORDER BY (AGRUPAR POR), FUNCTION() (FUNCIÓN) deduce la función de acumulación según la cual desea ordenar (los valores de punto de datos de las métricas consultadas). La operación de acumulación se realiza en todos los puntos de datos coincidentes de cada serie temporal individual en el periodo en el que se realizó la consulta.

SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId ORDER BY MAX() LIMIT 10

La consulta anterior devuelve la utilización de la CPU para cada instancia de Amazon EC2, lo que limita el conjunto de resultados a 10 entradas. Los resultados se ordenan en función del valor máximo de las series temporales individuales dentro del periodo solicitado. La cláusula ORDER BY (AGRUPAR POR) se aplica antes de LIMIT (LÍMITE), de modo que el pedido se calcula con más de 10 series temporales.