

# Uso de expresiones matemáticas con métricas de CloudWatch
<a name="using-metric-math"></a>

Las matemáticas en las métricas le permiten consultar varias métricas de CloudWatch y usar expresiones matemáticas para crear series temporales nuevas basadas en estas métricas. Puede visualizar las series temporales resultantes en la consola de CloudWatch y agregarlas a los paneles. Puede usar las métricas de AWS Lambda como ejemplo para dividir la `Errors` métrica por la métrica `Invocations` y así obtener una tasa de error. A continuación, añada las series temporales resultantes a un gráfico del panel de CloudWatch.

También puede realizar cálculos de métricas mediante programación, con la operación de la API `GetMetricData`. Para obtener más información, consulte [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html).

## Añadir una expresión matemática a un gráfico de CloudWatch
<a name="adding-metrics-expression-console"></a>

Puede añadir una expresión matemática a un gráfico en el panel de CloudWatch. Cada gráfico está limitado a un máximo de 500 métricas y expresiones, por lo que puede agregar una expresión matemática solo si el gráfico tiene 499 métricas como máximo. Esto se aplica incluso si no todas las métricas se muestran en el gráfico.

**Para añadir una expresión matemática a un gráfico**

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Cree o edite un gráfico. Debe haber al menos una métrica en el gráfico.

1. Elija la pestaña **Métricas diagramadas**.

1. Elija **Math expression (Expresión matemática)**, **Start with an empty expression (Comenzar con una expresión vacía)**. Aparece una nueva línea para la expresión.

1. En la nueva línea, en la columna **Details (Detalles)** escriba la expresión matemática. En las tablas de la sección de **Sintaxis y funciones matemáticas de métricas** se muestran las funciones que se pueden utilizar en la expresión. 

   Para usar una métrica o el resultado de otra expresión como parte de la fórmula de esta expresión, utilice el valor que se muestra en la columna **Id**; por ejemplo, **m1\$1m2** o **e1-MIN(e1)**.

   Puede cambiar el valor de **Id**. Puede contener números, letras y guiones bajos y debe comenzar por una letra minúscula. El cambio del valor de **Id** por un nombre más descriptivo puede aumentar también la legibilidad de un gráfico; por ejemplo, cambiar **m1** y **m2** por **errores** y **solicitudes**.
**sugerencia**  
Elija la flecha hacia abajo junto a **Math Expression (expresión matemática)** para ver una lista de funciones admitidas que puede utilizar al crear la expresión.

1. En la columna **Label (Etiqueta)** de la expresión, escriba un nombre que describa lo que calcula la expresión.

   Si el resultado de una expresión es una matriz de series temporales, cada una de esas series temporales se muestra en el gráfico con una línea independiente, con colores distintos. Inmediatamente debajo del gráfico hay una leyenda para cada línea del mismo. Para una expresión única que produce varias series temporales, las leyendas de dichas series temporales tienen el formato ***Etiqueta Expression Etiqueta-Metric (Etiqueta-Expresión Etiqueta-Métrica)***. Por ejemplo, en caso de que el gráfico incluya una métrica con una etiqueta de **Errors (Errores)** y una expresión **FILL(METRICS(), 0)** que tenga una etiqueta de **Filled With 0: (Rellenado con 0:)**, una línea de la leyenda sería **Filled With 0: Errors (Rellenado con 0: errores)**. Puede dejar *Etiqueta-Expression (Etiqueta-Expresión)* vacío para que la leyenda solo muestre las etiquetas de métricas originales.

   Cuando una expresión produce una matriz de series temporales en el gráfico, no puede cambiar los colores utilizados para cada una de esas series temporales.

1. Después de haber añadido las expresiones deseadas, puede simplificar el gráfico si oculta algunas de las métricas originales. Para ocultar una métrica o expresión, desactive la casilla de verificación situada a la izquierda del campo **Id**.

## Sintaxis de matemáticas en las métricas y funciones
<a name="metric-math-syntax"></a>

En las siguientes secciones se explican las funciones disponibles para el cálculo de métricas. Todas las funciones deben escribirse en letras mayúsculas (como **AVG**) y el campo **Id** de todas las métricas y expresiones matemáticas debe comenzar con una letra minúscula. 

El resultado final de cualquier expresión matemática debe ser una serie temporal individual o una matriz de series temporales. Algunas funciones generan un número escalar. Puede utilizar estas funciones en una función más grande que, en última instancia, produzca una serie temporal. Por ejemplo, aplicar la función **AVG** a una serie temporal individual produce un número escalar, por lo que no puede ser el resultado de una expresión final. Pero, podría usarlo en la función **m1-AVG(m1)** para mostrar una serie temporal de la diferencia entre cada punto de datos individual y el valor promedio de esa serie temporal.

### Abreviaturas de tipos de datos
<a name="metric-math-syntax-datatypes"></a>

Algunas funciones son válidas únicamente para determinados tipos de datos. Las abreviaturas de la siguiente lista se utilizan en las tablas de funciones para representar los tipos de datos que admite cada función:
+ **S** representa un número escalar, como 2, -5 o 50,25.
+ **TS** es una serie temporal (una serie de valores para una métrica de CloudWatch única conforme avanza el tiempo): por ejemplo, la métrica `CPUUtilization` de la instancia `i-1234567890abcdef0` durante los últimos tres días.
+ **TS[]** es una matriz de series temporales, como las series temporales de varias métricas.
+ **String []** es una matriz de cadenas.

### Función METRICS()
<a name="metric-math-syntax-metrics-function"></a>

La función **METRICS()** devuelve todas las métricas en la solicitud. Las expresiones matemáticas no se incluyen.

Puede utilizar **METRICS()** dentro de una expresión mayor que produce una serie temporal única o una matriz de series temporales. Por ejemplo, la expresión **SUM(METRICS())** devuelve una serie temporal (TS) que es la suma de los valores de todas las métricas incluidas en el gráfico. **METRICS()/100** devuelve una matriz de series temporales, cada una de las cuales es una serie temporal que muestra cada punto de datos de una de las métricas dividido por 100.

Puede utilizar la función **METRICS()** con una cadena para devolver solo las métricas incluidas en el gráfico que contienen esa cadena en su campo **Id**. Por ejemplo, la expresión **SUM(METRICS(“errores”))** devuelve una serie temporal que es la suma de los valores de todas las métricas incluidas en el gráfico que tienen “errores” en su campo **Id**. También puede usar **SUM([METRICS(“4xx”), METRICS(“5xx”)])** para establecer la coincidencia con varias cadenas.

### Funciones aritméticas básicas
<a name="metric-math-syntax-arithmetic"></a>

En la siguiente tabla se enumeran las funciones aritméticas básicas que se admiten. Los valores que faltan en una serie temporal se tratan como 0. Si el valor de un punto de datos provoca que una función intente dividir entre cero, se descarta el punto de datos.


| Operación | Argumentos | Ejemplos | 
| --- | --- | --- | 
|  Operadores aritméticos: \$1 - \$1 / ^ |  S, S S, TS TS, TS S, TS[] TS, TS[]  |  PERIOD(m1)/60 **5 \$1 m1** **m1 - m2** **SUM(100/[m1, m2])** **AVG(METRICS())** **METRICS()\$1100**  | 
|  Resta unaria -  |  S TS TS[]  |  **-5\$1m1** **-m1** **SUM(-[m1, m2])**  | 

### Operadores lógicos y de comparación
<a name="metric-math-syntax-operators"></a>

Puede utilizar operadores lógicos y de comparación con un par de series temporales o un par de valores escalares únicos. Cuando se utiliza un operador de comparación con un par de series temporales, devuelve una serie temporal en la que cada punto de datos es 0 (FALSE) o 1 (TRUE). Si utiliza un operador de comparación en un par de valores escalares, se devuelve un único valor escalar, 0 o 1.

Cuando se utilizan operadores de comparación entre dos series temporales, pero solo una de ellas tiene un valor para una marca temporal determinada, la función trata el valor que falta en la otra serie temporal como si fuera **0**.

Puede utilizar operadores lógicos combinados con operadores de comparación para crear funciones más complejas.

En la siguiente tabla se enumeran los operadores admitidos.


| Tipo de operador | Operadores admitidos | 
| --- | --- | 
|  Operadores de comparación |  == \$1= <= >= < >  | 
|  Operadores lógicos |  AND o && OR o \$1\$1  | 

Para ver cómo se utilizan estos operadores, suponga que tiene dos series temporales: **metric1** contiene los valores de `[30, 20, 0, 0]` y **metric2** contiene los valores de `[20, -, 20, -]`, donde `-` indica que no hay ningún valor para esa marca de tiempo.


| Expresión | Output | 
| --- | --- | 
|  **(metric1 < metric2)** |  **0, 0, 1, 0**  | 
|  **(metric1 >;= 30)** |  **1, 0, 0, 0**  | 
|  **(metric1 > 15 AND metric2 >; 15)** |  **1, 0, 0, 0**  | 

### Funciones admitidas para las métricas matemáticas
<a name="metric-math-syntax-functions-list"></a>

En la siguiente tabla se describen las funciones que puede usar en expresiones matemáticas. Escriba todas las funciones en letras mayúsculas.

El resultado final de cualquier expresión matemática debe ser una serie temporal individual o una matriz de series temporales. Algunas funciones en tablas en las siguientes secciones generan un número escalar. Puede utilizar estas funciones en una función más grande que, en última instancia, produzca una serie temporal. Por ejemplo, aplicar la función **AVG** a una serie temporal individual produce un número escalar, por lo que no puede ser el resultado de una expresión final. Pero, podría usarlo en la función **m1-AVG(m1)** para mostrar una serie temporal de la diferencia entre cada punto de datos individual y el valor promedio de ese punto de datos.

En la siguiente tabla, cada ejemplo de la columna **Examples (Ejemplos)** es una expresión que da como resultado una sola serie temporal o una matriz de series temporales. En estos ejemplos se muestra cómo se pueden utilizar las funciones que devuelven números escalares como parte de una expresión válida que genera una sola serie temporal.


| Función | Argumentos | Tipo de retorno**\$1** | Descripción | Ejemplos | ¿Compatible con la modalidad entre cuentas? | 
| --- | --- | --- | --- | --- | --- | 
|  **ABS** |  TS TS[]  |  TS TS[]  | Devuelve el valor absoluto de cada punto de datos. |  **ABS(m1-m2)** **MIN(ABS([m1, m2]))** **ABS(METRICS())**  | ✓ | 
|  **ANOMALY\$1DETECTION\$1BAND** |  TS TS, S  |  TS[]  | Devuelve una banda de detección de anomalías para la métrica especificada. La banda se compone de dos series, una que representa el límite superior del valor previsto “normal” de la métrica y el otro que representa el límite inferior. La función puede tomar dos argumentos. El primero es el ID de la métrica para la que crear la banda. El segundo argumento es el número de desvíos estándar que desea utilizar para la conexión. Si no se especifica este argumento, se utiliza el valor predeterminado de 2. Para obtener más información, consulte [Uso de la detección de anomalías de CloudWatch](CloudWatch_Anomaly_Detection.md). |  **ANOMALY\$1DETECTION\$1BAND(m1)** **ANOMALY\$1DETECTION\$1BAND(m1,4)**  |  | 
|  **AVG** |  TS TS[]  |  S TS  | La función **AVG** de una serie temporal individual devuelve un valor escalar que representa el promedio de todos los puntos de datos de la métrica. La función **AVG** de una matriz de series temporales devuelve una sola serie temporal. Los valores que faltan se tratan como 0.   Se recomienda que no utilice esta función en alarmas de CloudWatch si quiere que la función devuelva un valor escalar. Por ejemplo, `AVG(m2)`. Cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Evaluation Periods (Períodos de evaluación). Esta función actúa de manera diferente cuando se solicitan datos adicionales. Para usar esta función con las alarmas, especialmente las que tienen acciones de escalado automático, le recomendamos que configure la alarma para que utilice M de N puntos de datos, donde M < N.   |  **SUM([m1,m2])/AVG(m2)** **AVG(METRICS())**  | ✓ | 
|  **CEIL** |  TSTS[]  |  TS TS[]  | Devuelve el valor techo de cada métrica. El valor techo es el menor entero que es mayor o igual que cada valor. |  **CEIL(m1)** **CEIL(METRICS())** **SUM(CEIL(METRICS()))**  | ✓ | 
|  **DATAPOINT\$1COUNT** |  TS TS[]  |  S TS  | Devuelve un recuento de los puntos de datos que han informado valores. Esto es útil para calcular promedios de métricas dispersas.  Se recomienda que no utilice esta función en alarmas de CloudWatch. Cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Evaluation Periods (Períodos de evaluación). Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **SUM(m1) / DATAPOINT\$1COUNT(m1)** **DATAPOINT\$1COUNT(METRICS())**  | ✓ | 
|  **DB\$1PERF\$1INSIGHTS** |  Cadena, Cadena, Cadena Cadena, cadena, cadena[]  |  TS (si se proporciona una sola cadena) TS [] (si se proporciona una matriz de cadenas)  | Devuelve métricas del contador Performance Insights Counter para bases de datos como Amazon Relational Database Service y Amazon DocumentDB (compatible con MongoDB). Esta función devuelve la misma cantidad de datos que puede obtener consultando directamente las API de Performance Insights. Puede usar estas métricas en CloudWatch para graficar y crear alarmas.  Al utilizar esta función, debe especificar el ID de los recursos de base de datos único de la base de datos. Es diferente del identificador de la base de datos. Para encontrar el ID de recurso de base de datos en la consola de Amazon RDS, elija la instancia de base de datos para ver los detalles. A continuación, elija la pestaña **Configuration (Configuración)**. El **ID de recurso** se muestra en la sección **Configuración**.  **DB\$1PERF\$1INSIGHTS** también incluye la métrica `DBLoad` en intervalos de menos de un minuto.  Las métricas de Performance Insights recuperadas con esta función no se almacenan en CloudWatch. Por lo tanto, algunas características de CloudWatch, como la observabilidad entre cuentas, la detección de anomalías, los flujos de métricas, el explorador de métricas y Metric Insights, no funcionan con las métricas de Performance Insights que se recuperan con **DB\$1PERF\$1INSIGHTS.** Una sola solicitud que utilice la función **DB\$1PERF\$1INSIGHTS** puede recuperar los siguientes números de puntos de datos. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/using-metric-math.html) La función **DB\$1PERF\$1INSIGHTS** solo admite las siguientes duraciones de período: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/using-metric-math.html) Para obtener más información sobre las métricas de contador de Información de rendimiento de Amazon RDS, consulte Métricas de contador de [Información de rendimiento](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html). Para obtener más información sobre las métricas de contador de Información de rendimiento de Amazon DocumentDB, consulte [Métricas de contador de Información de rendimiento](https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights-counter-metrics.html).  Las métricas de alta resolución con una granularidad inferior a un minuto recuperadas por **DB\$1PERF\$1INSIGHTS** solo se aplican a la métrica **DBLoad**, o a las métricas del sistema operativo si ha activado la supervisión mejorada con una resolución más alta. Para obtener más información sobre la supervisión mejorada de Amazon RDS, consulte [Supervisión de las métricas del SO con la supervisión mejorada](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html). Puede crear una alarma de alta resolución mediante la función **DB\$1PERF\$1INSIGHTS** durante un intervalo de tiempo máximo de tres horas. Puede utilizar la consola de CloudWatch para representar gráficamente las métricas recuperadas con la función **DB\$1PERF\$1INSIGHTS** para cualquier intervalo de tiempo.  |  **DB\$1PERF\$1INSIGHTS(‘RDS’, ‘db-ABCDEFGHIJKLMNOPQRSTUVWXY1’, ‘os.cpuUtilization.user.avg’)** **DB\$1PERF\$1INSIGHTS(‘DOCDB, ‘db-ABCDEFGHIJKLMNOPQRSTUVWXY1’, [‘os.cpuUtilization.idle.avg’, ‘os.cpuUtilization.user.max’])**  |  | 
|  **DIFF** |  TSTS[]  |  TS TS[]  | Devuelve la diferencia entre cada valor en la serie temporal y el valor anterior de esa serie temporal. |  **DIFF(m1)**  | ✓ | 
|  **DIFF\$1TIME** |  TSTS[]  |  TS TS[]  | Devuelve la diferencia en segundos entre la marca temporal de cada valor de la serie temporal y la marca temporal del valor anterior de esa serie temporal. |  **DIFF\$1TIME(METRICS())**  | ✓ | 
|  **FILL** |  TS, [S \$1 REPEAT \$1 LINEAR] TS[], [TS \$1 S \$1 REPEAT \$1 LINEAR]  |  TS TS[]  | Rellena los valores que faltan de una serie temporal. Hay varias opciones para que los valores se utilicen como relleno de los valores que faltan: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/using-metric-math.html)  Cuando utiliza esta función en una alarma, se puede encontrar con un problema si sus métricas se publican con un ligero retraso y el minuto más reciente nunca tiene datos. En este caso, **FILL** (Rellenar) reemplaza ese punto de datos faltante con el valor solicitado. Esto hace que el último punto de datos de la métrica sea siempre el valor de relleno, lo que puede provocar que la alarma se atasque en el estado OK o ALARM (ALARMA). Puede evitarlo si utiliza una alarma M de N. Para obtener más información, consulte [Evaluación de alarmas](alarm-evaluation.md).   |  **FILL(m1,10)** **FILL(METRICS(), 0)** **FILL(METRICS(), m1)** **FILL(m1, MIN(m1))** **FILL(m1, REPEAT)** **FILL(METRICS(), LINEAR)**  | ✓ | 
|  **FIRST** **LAST** |  TS[]  |  TS  | Devuelve la primera o la última serie temporal de una matriz de series temporales. Esto resulta útil cuando se utiliza con la función **SORT**. También se puede utilizar para obtener los umbrales superiores e inferiores de la función **ANOMALY\$1DETECTION\$1BAND**.  |  **IF(FIRST(SORT(METRICS(), AVG, DESC))>100, 1, 0)** Toma la métrica superior de una matriz, ordenada según AVG. A continuación, devuelve 1 o 0 para cada punto de datos, según si el valor de ese punto de datos es mayor que 100. **LAST(ANOMALY\$1DETECTION\$1BAND(m1))** devuelve el límite superior de la banda de predicción de anomalías.  | ✓ | 
|  **FLOOR** |  TSTS[]  |  TS TS[]  | Devuelve el valor de suelo de cada métrica. El valor de suelo es el mayor entero que es menor o igual que cada valor. |  **FLOOR(m1)** **FLOOR(METRICS())**  | ✓ | 
|  **IF** |  Expresión **IF**  |  TS  | Utilice **IF** junto con un operador de comparación para filtrar los puntos de datos de una serie temporal o crear una serie temporal mixta compuesta por varias series de temporales intercaladas. Para obtener más información, consulte [Uso de expresiones IF](#using-IF-expressions). | Para ver ejemplos, consulte [Uso de expresiones IF](#using-IF-expressions).  | ✓ | 
|  **INSIGHT\$1RULE\$1METRIC** |  **INSIGHT\$1RULE\$1METRIC(ruleName, metricName)**  |  TS  | Utilice **INSIGHT\$1RULE\$1METRIC** para extraer estadísticas de una regla en Contributor Insights. Para obtener más información, consulte [Representación gráfica de métricas generadas por reglas en CloudWatchConfiguración de una alarma en los datos de métricas de Contributor Insights](ContributorInsights-GraphReportData.md). |   |  | 
|  **LAMBDA** |  **LAMBDA(LambdaFunctionName [, optional-arg]\$1)**  |  TS TS[]  | Llama a una función de Lambda para consultar las métricas de un origen de datos que no es CloudWatch. Para obtener más información, consulte [Cómo pasar argumentos a la función de Lambda](CloudWatch_MultiDataSources-Custom-Use.md#MultiDataSources-Connect-Custom-Lambda-arguments). |   |  | 
|  **LOG** |  TS TS[]  |  TS TS[]  | El **LOG** (Registro) de una serie temporal devuelve el valor del logaritmo natural de cada valor de la serie temporal. |  **LOG(METRICS())**  | ✓ | 
|  **LOG10** |  TS TS[]  |  TS TS[]  | El **LOG10** de una serie temporal devuelve el valor del logaritmo base-10 de cada valor de la serie temporal. |  **LOG10(m1)**  | ✓ | 
|  **MAX** |  TS TS[]  |  S TS  | La función **MAX** de una serie temporal individual devuelve un valor escalar que representa el valor máximo de todos los puntos de datos de la métrica. Si introduce una matriz de series temporales, la función **MAX** crea y devuelve una serie temporal que consta del valor más alto de cada punto de datos, entre las series temporales que se utilizaron como entrada.   Se recomienda que no utilice esta función en alarmas de CloudWatch si quiere que la función devuelva un valor escalar. Por ejemplo, `MAX(m2)` cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Períodos de evaluación. Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **MAX(m1)/m1** **MAX(METRICS())**  | ✓ | 
|  **METRIC\$1COUNT** |  TS[]  |  S  | Devuelve el número de métricas en la matriz de series temporales.  |  **m1/METRIC\$1COUNT(METRICS())**  | ✓ | 
|  **METRICS** |  null cadena  |  TS[]  | La función **METRICS()** devuelve todas las métricas de CloudWatch de la solicitud. Las expresiones matemáticas no se incluyen. Puede utilizar **METRICS()** dentro de una expresión mayor que produce una serie temporal única o una matriz de series temporales. Puede utilizar la función **METRICS()** con una cadena para devolver solo las métricas incluidas en el gráfico que contienen esa cadena en su campo **Id**. Por ejemplo, la expresión **SUM(METRICS(“errores”))** devuelve una serie temporal que es la suma de los valores de todas las métricas incluidas en el gráfico que tienen “errores” en su campo **Id**. También puede usar **SUM([METRICS(“4xx”), METRICS(“5xx”)])** para establecer la coincidencia con varias cadenas.  |  **AVG(METRICS())** **SUM(METRICS(“errors"))**  | ✓ | 
|  **MIN** |  TS TS[]  |  S TS  | La función **MIN** de una serie temporal individual devuelve un valor escalar que representa el valor mínimo de todos los puntos de datos de la métrica.  Si introduce una matriz de series temporales, la función **MIN** crea y devuelve una serie temporal que consta del valor más bajo de cada punto de datos de las series temporales que se utilizaron como entrada. Si introduce una matriz de series temporales, la función **MIN** crea y devuelve una serie temporal que consta del valor más bajo de cada punto de datos de las series temporales que se utilizaron como entrada.   Se recomienda que no utilice esta función en alarmas de CloudWatch si quiere que la función devuelva un valor escalar. Por ejemplo, `MIN(m2)` cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Períodos de evaluación. Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **m1-MIN(m1)** **MIN(METRICS())**  | ✓ | 
|  **MINUTE** **HOUR** **DAY** **DATE** **MONTH** **YEAR** **EPOCH** |  TS  |  TS  | Estas funciones toman el período y el rango de la serie temporal y devuelven una nueva serie temporal no dispersa donde cada valor se basa en su marca de tiempo. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/using-metric-math.html) |  **MINUTE(m1)** **IF(DAY(m1)<6,m1)** devuelve las métricas solo de lunes a viernes. **IF(MONTH(m1) == 4,m1)** devuelve sólo las métricas publicadas en abril.  | ✓ | 
|  **PERIOD** |  TS  |  S  | Devuelve el periodo de la métrica en segundos. La entrada válida son las métricas, no los resultados de otras expresiones.  |  **m1/PERIOD(m1)**  | ✓ | 
|  **RATE** |  TS TS[]  |  TS TS[] | Devuelve la velocidad de cambio de la métrica, por segundo. Se calcula como la diferencia entre el valor de punto de datos más reciente y el valor de punto de datos anterior, dividido por la diferencia de tiempo en segundos entre los dos valores.  La configuración de alarmas en expresiones que utilizan la función RATE en métricas con datos escasos puede comportarse de forma impredecible, ya que el rango de puntos de datos obtenidos al evaluar la alarma puede variar en función de cuándo se publicaron los puntos de datos por última vez.  |  **RATE(m1)** **RATE(METRICS())**  | ✓ | 
|  **REMOVE\$1EMPTY** |  TS[]  |  TS[] | Elimina todas las series temporales que no contienen puntos de datos de una matriz de series temporales. El resultado es una matriz de series temporales en la que todas las series temporales contienen al menos un punto de datos.  Se recomienda que no utilice esta función en alarmas de CloudWatch. Cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Evaluation Periods (Períodos de evaluación). Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **REMOVE\$1EMPTY(METRICS())**   | ✓ | 
|  **RUNNING\$1SUM** |  TS TS[]  |  TS TS[]  | Devuelve una serie temporal con la suma continua de los valores de la serie temporal original.  Se recomienda que no utilice esta función en alarmas de CloudWatch. Cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Evaluation Periods (Períodos de evaluación). Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **RUNNING\$1SUM([m1,m2])**  | ✓ | 
|  **SEARCH** |  Expresión de búsqueda  |  Una o varias series temporales  | Devuelve una o varias series temporales que coinciden con una serie temporal que especifique. La función **SEARCH** le permite añadir varias series temporales relacionadas a un gráfico con una sola expresión. El gráfico se actualiza dinámicamente para incluir nuevas métricas que se añadan más tarde y coincidan con los criterios de búsqueda. Para obtener más información, consulte [Usar expresiones de búsqueda en gráficos](using-search-expressions.md). No es posible crear una alarma con una expresión **SEARCH** (de búsqueda). Esto se debe a que las expresiones de búsqueda devuelven varias series temporales, y una alarma basada en una expresión matemática sólo puede ver una serie temporal. Si inició sesión en una cuenta de supervisión para la observabilidad entre cuentas de CloudWatch, la función **BUSCAR** busca métricas en las cuentas de origen y en la cuenta de supervisión. |   | ✓ | 
|  **SERVICE\$1QUOTA** |  TS que es una métrica de uso  |  TS  | Devuelve la cuota de servicio de la métrica de uso especificada. Puede usarla para visualizar cómo se compara su uso actual con la cuota, así como para programar alarmas que le avisen al acercarse a la cuota. Para obtener más información, consulte [AWSMétricas de uso de](CloudWatch-Service-Quota-Integration.md). |   | ✓ | 
|  **SLICE** |  (TS[], S, S) o (TS[], S)  |  TS[] TS  | Recupera parte de una matriz de series temporales. Resulta especialmente útil cuando se combina con **SORT**. Por ejemplo, puede excluir el resultado superior de una matriz de series temporales. Puede utilizar dos argumentos escalares para definir el conjunto de series temporales que desea devolver. Los dos escalares definen el inicio (incluido) y el final (excluido) de la matriz que se va a devolver. La matriz está indexada a cero, por lo que la primera serie temporal de la matriz es la serie temporal 0. Si el usuario lo prefiere, puede especificar un solo valor y CloudWatch devolverá todas las series temporales que comiencen por ese valor.  | **SLICE(SORT(METRICS(), SUM, DESC), 0, 10)** devuelve las 10 métricas de la matriz de métricas de la solicitud que tengan el valor de SUM más alto. **SLICE(SORT(METRICS(), AVG, ASC), 5)** ordena la matriz de métricas según la estadística AVG; a continuación, devuelve todas las series temporales excepto las 5 con el valor de AVG más bajo.  | ✓ | 
|  **SORT** |  (TS[], FUNCTION, SORT\$1ORDER) (TS[], FUNCTION, SORT\$1ORDER, S)  |  TS[]  | Ordena una matriz de series temporales según la función que especifique. La función utilizada puede ser **AVG**, **MIN**, **MAX** o **SUM**. El orden puede ser **ASC** si es ascendente (los valores más bajos primero) o **DESC** para ordenar los valores más altos al principio. Opcionalmente, puede especificar un número después del criterio de ordenación para que actúe como límite. Por ejemplo, si especifica un límite de 5, se devolverán solo las 5 primeras series temporales de la ordenación. Cuando esta función matemática se muestra en un gráfico, las etiquetas de cada métrica del gráfico también se ordenan y numeran.  | **SORT(METRICS(), AVG, DESC, 10)** calcula el valor medio de cada serie temporal, ordena las series temporales con los valores más altos al principio de la ordenación y devuelve solo las 10 series temporales con los promedios más altos. **SORT(METRICS(), MAX, ASC)** ordena la matriz de métricas según la estadística MAX; a continuación, las devuelve todas en orden ascendente.  | ✓ | 
|  **STDDEV** |  TS TS[]  |  S TS  | La función **STDDEV** de una serie temporal individual devuelve un valor escalar que representa el desvío estándar de todos los puntos de datos de la métrica. La función **STDDEV** de una matriz de series temporales devuelve una sola serie temporal.   Se recomienda que no utilice esta función en alarmas de CloudWatch si quiere que la función devuelva un valor escalar. Por ejemplo, `STDDEV(m2)` cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Períodos de evaluación. Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **m1/STDDEV(m1)** **STDDEV(METRICS())**  | ✓ | 
|  **SUM** |  TS TS[]  |  S TS  | La función **SUM** de una serie temporal individual devuelve un valor escalar que representa la suma de los valores de todos los puntos de datos de la métrica. La función **SUM** de una matriz de series temporales devuelve una sola serie temporal.   Se recomienda que no utilice esta función en alarmas de CloudWatch si quiere que la función devuelva un valor escalar. Por ejemplo, `SUM(m1)`. Cada vez que una alarma evalúa si se debe cambiar de estado, CloudWatch intenta recuperar un número de puntos de datos más elevado que el número especificado como Evaluation Periods (Períodos de evaluación). Esta función actúa de manera diferente cuando se solicitan datos adicionales.  |  **SUM(METRICS())/SUM(m1)** **SUM([m1,m2])** **SUM(METRICS(“errores”))/SUM(METRICS(“solicitudes"))\$1100**  | ✓ | 
|  **TIME\$1SERIES** |  S  |  TS  | Devuelve una serie temporal no dispersa en donde cada valor se establece en un argumento escalar. |  **TIME\$1SERIES(MAX(m1))** **TIME\$1SERIES(5\$1AVG(m1))** **TIME\$1SERIES(10)**  | ✓ | 

**\$1**No es válido usar una función que solo devuelva un número escalar, ya que el resultado final de las expresiones debe ser una sola serie temporal o una matriz de series temporales. En su lugar, utilice estas funciones como parte de una expresión más grande que devuelva una serie temporal.

## Uso de expresiones IF
<a name="using-IF-expressions"></a>

Utilice **IF** junto con un operador de comparación para filtrar los puntos de datos de una serie temporal o crear una serie temporal mixta compuesta por varias series de temporales intercaladas.

**IF** adopta los siguientes argumentos:

```
IF(condition, trueValue, falseValue)
```

La condición se evalúa como FALSE si el valor del punto de datos de la condición es 0 y como TRUE si el valor de la condición es cualquier otro valor, ya sea positivo o negativo. Si la condición es una serie temporal, se evalúa por separado para cada marca temporal.

A continuación se enumeran las sintaxis válidas. Para cada una de estas sintaxis, la salida es una sola serie temporal.
+ **IF(TS *operador de comparación* S, S \$1 TS, *S \$1 TS*)**
**nota**  
Si el `TS comparison operator S` es TRUE, pero `metric2` no tiene un punto de datos correspondiente, la salida será 0.
+ **IF(TS, TS, *TS*)**
+ **IF(TS, S, *TS*)**
+ **IF(TS, TS, S)**
+ **IF(TS, S, S)**
+ **IF(S, TS, *TS*)**

En las siguientes secciones se proporcionan más detalles y ejemplos de estas sintaxis.

**IF(TS *operación de comparación* S, scalar2 \$1 metric2, scalar3 \$1 metric3)**

El valor correspondiente de la serie temporal de salida:
+ tiene el valor de **scalar2** o **metric2**, si el ***operador de comparación* TS S** es TRUE.
+ tiene el valor de **scalar3** o **metric3**, si el ***operador de comparación* TS S** es FALSE.
+ tiene el valor de **0** si el ***operador de comparación* TS** es TRUE y el punto de datos correspondiente en **metric2** no existe.
+ tiene el valor de **0** si el ***operador de comparación* TS** es FALSE y el punto de datos correspondiente en **metric3** no existe.
+ es una serie temporal vacía si el punto de datos correspondiente no existe en **metric3** o si **scalar3**/**metric3** se omite de la expresión.

**IF(metric1, metric2, *metric3*)**

Para cada punto de datos de **metric1**, el valor de la serie temporal de salida correspondiente:
+ tiene el valor de **metric2** si el punto de datos correspondiente de **metric1** es TRUE;
+ tiene el valor de **metric3** si el punto de datos correspondiente de **metric1** es FALSE;
+ tiene el valor de **0** si el punto de datos correspondiente de **metric1** es TRUE y el punto de datos correspondiente no existe en **metric2**.
+ tiene el valor de **0** si el punto de datos correspondiente de **metric1** es TRUE y el punto de datos correspondiente no existe en **metric3**. 
+ se elimina si el punto de datos correspondiente de **metric1** es FALSE y **metric3** se omite de la expresión.
+ se elimina si no existe el punto de datos correspondiente de **metric1**.

En la tabla siguiente se muestra un ejemplo de esta sintaxis.


| Métrica o función | Valores | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **(metric2)** |  **[30, -, 0, 0, 30]**  | 
|  **(metric3)** |  **[0, 0, 20, -, 20]**  | 
|  **IF(metric1, metric2, metric3)** |  **[30, 0, 20, 0, -]**  | 

**IF(metric1, scalar2, metric3)**

Para cada punto de datos de **metric1**, el valor de la serie temporal de salida correspondiente:
+ tiene el valor de **scalar2** si el punto de datos correspondiente de **metric1** es TRUE;
+ tiene el valor de **metric3** si el punto de datos correspondiente de **metric1** es FALSE;
+ se elimina si el punto de datos correspondiente de **metric1** es FALSE y el punto de datos correspondiente no existe en **metric3** o si **metric3** se omite en la expresión.


| Métrica o función | Valores | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **scalar2** |  **5**  | 
|  **(metric3)** |  **[0, 0, 20, -, 20]**  | 
|  **IF(metric1, scalar2, metric3)** |  **[5, 5, 20, -, -]**  | 

**IF(metric1, metric2, scalar3)**

Para cada punto de datos de **metric1**, el valor de la serie temporal de salida correspondiente:
+ tiene el valor de **metric2** si el punto de datos correspondiente de **metric1** es TRUE;
+ tiene el valor de **scalar3** si el punto de datos correspondiente de **metric1** es FALSE;
+ tiene el valor de **0** si el punto de datos correspondiente de **metric1** es TRUE y el punto de datos correspondiente no existe en **metric2**. 
+ se elimina si no existe el punto de datos correspondiente en **metric1**. 


| Métrica o función | Valores | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **(metric2)** |  **[30, -, 0, 0, 30]**  | 
|  **scalar3** |  **5**  | 
|  **IF(metric1, metric2, scalar3)** |  **[30, 0, 5, 5, -]**  | 

**IF(scalar1, metric2, *metric3*)**

El valor correspondiente de la serie temporal de salida:
+ tiene el valor de **metric2** si **scalar1** es TRUE;
+ tiene el valor de **metric3** si **scalar1** es FALSE;
+ es una serie temporal vacía si se omite **metric3** de la expresión.

### Ejemplos de casos de uso para expresiones condicionales
<a name="using-IF-expressions-use-cases"></a>

Los siguientes ejemplos ilustran los posibles usos de la función **IF** .
+ Para mostrar solo los valores bajos de una métrica:

  **IF(metric1<400, metric1)**
+ Para cambiar cada punto de datos de una métrica a uno de dos valores, con el fin de mostrar los máximos y mínimos relativos de la métrica original:

  **IF(metric1 <;400, 10, 2)**
+ Para mostrar un 1 para cada marca temporal cuya latencia supere el umbral y mostrar un 0 para todos los demás puntos de datos:

  **IF(latency>threshold, 1, 0)**

### Usar matemáticas de métricas con la operación de la API GetMetricData
<a name="using-metrics-expression-api"></a>

Puede utilizar `GetMetricData` para realizar cálculos mediante expresiones matemáticas, así como para recuperar lotes grandes de datos de métricas en una sola llamada a la API. Para obtener más información, consulte [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html).

## Detección de anomalías en matemáticas de métricas
<a name="using-anomaly-detection-on-metric-math"></a>

La detección de anomalías en matemáticas de métricas es una característica que se puede utilizar para crear alarmas de detección de anomalías en métricas individuales y en los resultados de expresiones matemáticas métricas. Puede utilizar estas expresiones para crear gráficos en los que se visualicen bandas de detección de anomalías. La característica admite funciones aritméticas básicas, operadores lógicos y de comparación y la mayoría de las demás funciones.

**La detección de anomalías en matemáticas de métricas no admite las siguientes funciones:**
+ Expresiones que contienen más de una **ANOMALY\$1DETECTION\$1BAND** en el mismo renglón.
+ Expresiones que contienen más de 10 métricas o expresiones matemáticas.
+ Expresiones que contienen la expresión **METRICS**.
+ Expresiones que contienen la función **SEARCH**.
+ Expresiones que utilizan la función **DP\$1PERF\$1INSIGHTS**.
+ Expresiones que utilizan métricas con diferentes periodos.
+ Expresiones que utilizan períodos de más de una hora como entrada.
+ Expresiones que utilizan métricas de alta resolución como entrada.

Para obtener más información acerca de esta característica, consulte [Uso de detección de anomalías de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html#anomaly_detection_on_metric_math) en la *Guía del usuario de Amazon CloudWatch*.