

Para obtener capacidades similares a las de Amazon Timestream, considere Amazon Timestream LiveAnalytics para InfluxDB. Ofrece una ingesta de datos simplificada y tiempos de respuesta a las consultas en milisegundos de un solo dígito para realizar análisis en tiempo real. Obtenga más información [aquí](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Funciones de serie temporal
<a name="timeseries-specific-constructs.functions"></a>

Amazon Timestream LiveAnalytics for admite funciones de series temporales, como derivadas, integrales y correlaciones, entre otras, para obtener información más profunda a partir de los datos de series temporales. En esta sección, se proporciona información sobre el uso de cada una de estas funciones, así como ejemplos de consultas. Seleccione un tema a continuación para obtener más información al respecto. 

**Topics**
+ [Funciones de interpolación](timeseries-specific-constructs.functions.interpolation.md)
+ [Funciones de derivadas](timeseries-specific-constructs.functions.derivatives.md)
+ [Funciones integrales](timeseries-specific-constructs.functions.integrals.md)
+ [Funciones de correlación](timeseries-specific-constructs.functions.correlation.md)
+ [Funciones de filtrado y reducción](timeseries-specific-constructs.functions.filter-reduce.md)

# Funciones de interpolación
<a name="timeseries-specific-constructs.functions.interpolation"></a>

Si a los datos de serie temporal les faltan valores para los eventos en determinados momentos, puede estimar los valores de esos eventos faltantes mediante la interpolación. Amazon Timestream admite cuatro variantes de interpolación: interpolación lineal, interpolación de spline cúbica, interpolación de última observación transferida (locf) e interpolación constante. En esta sección se proporciona información sobre el uso de Timestream para las funciones de LiveAnalytics interpolación, así como ejemplos de consultas. 



## Información de uso
<a name="w2aab7c59c13c13c11b7"></a>


| Función | Tipo de datos de salida | Description (Descripción) | 
| --- | --- | --- | 
|  `interpolate_linear(timeseries, array[timestamp])`  |  Serie temporal  |  Rellena los datos faltantes mediante [interpolación lineal](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_linear(timeseries, timestamp)`  |  double  |  Rellena los datos faltantes mediante [interpolación lineal](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_spline_cubic(timeseries, array[timestamp])`  |  Serie temporal  |  Rellena los datos faltantes mediante la [interpolación de ranuras cúbicas](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_spline_cubic(timeseries, timestamp)`  |  double  |  Rellena los datos faltantes mediante la [interpolación de ranuras cúbicas](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_locf(timeseries, array[timestamp])`  |  Serie temporal  |  Rellena los datos faltantes con el último valor muestreado.  | 
|  `interpolate_locf(timeseries, timestamp)`  |  double  |  Rellena los datos faltantes con el último valor muestreado.  | 
|  `interpolate_fill(timeseries, array[timestamp], double)`  |  Serie temporal  |  Rellena los datos faltantes con un valor constante.  | 
|  `interpolate_fill(timeseries, timestamp, double)`  |  double  |  Rellena los datos faltantes con un valor constante.  | 

## Consultas de ejemplo
<a name="w2aab7c59c13c13c11b9"></a>

**Example**  
Calcular la media de uso de la CPU agrupada en intervalos de 30 segundos para un host EC2 específico durante las últimas 2 horas, y rellenar los valores faltantes mediante la interpolación lineal:  

```
WITH binned_timeseries AS (
SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization
FROM "sampleDB".DevOps
WHERE measure_name = 'cpu_utilization'
    AND hostname = 'host-Hovjv'
    AND time > ago(2h)
GROUP BY hostname, BIN(time, 30s)
), interpolated_timeseries AS (
SELECT hostname,
    INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization),
            SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization
FROM binned_timeseries
GROUP BY hostname
)
SELECT time, ROUND(value, 2) AS interpolated_cpu
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)
```

**Example**  
Calcular la media de uso de la CPU agrupada en intervalos de 30 segundos para un host EC2 específico durante las últimas 2 horas, y rellenar los valores faltantes mediante la interpolación lineal en función de la última observación disponible:  

```
WITH binned_timeseries AS (
SELECT hostname, BIN(time, 30s) AS binned_timestamp, ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization
FROM "sampleDB".DevOps
WHERE measure_name = 'cpu_utilization'
    AND hostname = 'host-Hovjv'
    AND time > ago(2h)
GROUP BY hostname, BIN(time, 30s)
), interpolated_timeseries AS (
SELECT hostname,
    INTERPOLATE_LOCF(
        CREATE_TIME_SERIES(binned_timestamp, avg_cpu_utilization),
            SEQUENCE(min(binned_timestamp), max(binned_timestamp), 15s)) AS interpolated_avg_cpu_utilization
FROM binned_timeseries
GROUP BY hostname
)
SELECT time, ROUND(value, 2) AS interpolated_cpu
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_avg_cpu_utilization)
```

# Funciones de derivadas
<a name="timeseries-specific-constructs.functions.derivatives"></a>

Las derivadas se utilizan para calcular la tasa de cambio de una métrica determinada y se pueden usar para responder de forma proactiva a un evento. Por ejemplo, supongamos que calcula la derivada del uso de la CPU de las instancias EC2 durante los últimos 5 minutos y observa una derivada positiva significativa. Esto puede ser indicativo de un aumento de la demanda de su carga de trabajo, por lo que puede decidir activar más instancias de EC2 para gestionar mejor su carga de trabajo. 

Amazon Timestream admite dos variantes de funciones derivadas. En esta sección se proporciona información de uso del Timestream para funciones LiveAnalytics derivadas, así como ejemplos de consultas. 



## Información de uso
<a name="w2aab7c59c13c13c13b9"></a>


| Función | Tipo de datos de salida | Description (Descripción) | 
| --- | --- | --- | 
|  `derivative_linear(timeseries, interval)`  |  Serie temporal  |  Calcula la [derivada](https://wikipedia.org/wiki/Derivative) de cada punto en la `timeseries` para el `interval` especificado.  | 
|  `non_negative_derivative_linear(timeseries, interval)`  |  Serie temporal  |  Igual que `derivative_linear(timeseries, interval)`, pero solo devuelve valores positivos.  | 

## Consultas de ejemplo
<a name="w2aab7c59c13c13c13c11"></a>

**Example**  
Calcule la tasa de cambio en el uso de la CPU cada 5 minutos durante la última hora:  

```
SELECT DERIVATIVE_LINEAR(CREATE_TIME_SERIES(time, measure_value::double), 5m) AS result 
FROM “sampleDB”.DevOps 
WHERE measure_name = 'cpu_utilization' 
AND hostname = 'host-Hovjv' and time > ago(1h) 
GROUP BY hostname, measure_name
```

**Example**  
Calcule la tasa de aumento de los errores que se generan por uno o más microservicios:  

```
WITH binned_view as (
    SELECT bin(time, 5m) as binned_timestamp, ROUND(AVG(measure_value::double), 2) as value            
    FROM “sampleDB”.DevOps  
    WHERE micro_service = 'jwt'  
    AND time > ago(1h) 
    AND measure_name = 'service_error'
    GROUP BY bin(time, 5m)
)
SELECT non_negative_derivative_linear(CREATE_TIME_SERIES(binned_timestamp, value), 1m) as rateOfErrorIncrease
FROM binned_view
```

# Funciones integrales
<a name="timeseries-specific-constructs.functions.integrals"></a>

Puede usar integrales para encontrar el área bajo la curva por unidad de tiempo para sus eventos de serie temporal. Por ejemplo, supongamos que hace un seguimiento del volumen de solicitudes que recibe su aplicación por unidad de tiempo. En este escenario, puede usar la función integral para determinar el volumen total de solicitudes atendidas por intervalo especificado durante un período específico.

Amazon Timestream admite una variante de funciones integrales. En esta sección se proporciona información de uso de la función Timestream para LiveAnalytics integral, así como ejemplos de consultas. 



## Información de uso
<a name="w2aab7c59c13c13c15b9"></a>


| Función | Tipo de datos de salida | Description (Descripción) | 
| --- | --- | --- | 
|  `integral_trapezoidal(timeseries(double))` `integral_trapezoidal(timeseries(double), interval day to second)` `integral_trapezoidal(timeseries(bigint))` `integral_trapezoidal(timeseries(bigint), interval day to second)` `integral_trapezoidal(timeseries(integer), interval day to second)` `integral_trapezoidal(timeseries(integer))`  |  double  |  Aproxima la [integral](https://wikipedia.org/wiki/Integral) según el `interval day to second` que se especifique para el `timeseries` que proporcione, mediante la regla [trapezoidal](https://wikipedia.org/wiki/Trapezoidal_rule). El parámetro de intervalo de día a segundo es opcional, y el valor predeterminado es `1s`. Para obtener más información acerca de los intervalos, consulte [Intervalo y duración](date-time-functions.md#date-time-functions-interval-duration).  | 

## Consultas de ejemplo
<a name="w2aab7c59c13c13c15c11"></a>

**Example**  
Calcula el volumen total de solicitudes que se atienden cada cinco minutos durante la última hora por medio de un host específico:  

```
SELECT INTEGRAL_TRAPEZOIDAL(CREATE_TIME_SERIES(time, measure_value::double), 5m) AS result FROM sample.DevOps 
WHERE measure_name = 'request' 
AND hostname = 'host-Hovjv' 
AND time > ago (1h) 
GROUP BY hostname, measure_name
```

# Funciones de correlación
<a name="timeseries-specific-constructs.functions.correlation"></a>

Dadas dos series temporales de longitud similar, las funciones de correlación proporcionan un coeficiente de correlación, que explica la tendencia de las dos series temporales a lo largo del tiempo. El coeficiente de correlación varía de `-1.0` a `1.0`. `-1.0` indica que las dos series temporales tienden en direcciones opuestas a la misma velocidad, mientras que `1.0` indica que las dos series temporales tienden en la misma dirección y a la misma velocidad. Un valor de `0` indica que no hay correlación entre las dos series temporales. Por ejemplo, si el precio del petróleo aumenta y el precio de las acciones de una empresa petrolera aumenta, la tendencia del aumento del precio del petróleo y el aumento del precio de la empresa petrolera tendrán un coeficiente de correlación positivo. Un coeficiente de correlación positivo alto indicaría que los dos precios tienen una tendencia similar. Del mismo modo, el coeficiente de correlación entre los precios y los rendimientos de los bonos es negativo, lo que indica que estos dos valores tienen una tendencia en la dirección opuesta a lo largo del tiempo.

Amazon Timestream admite dos variantes de funciones de correlación. En esta sección se proporciona información sobre el uso del Timestream para las funciones de LiveAnalytics correlación, así como ejemplos de consultas. 



## Información de uso
<a name="w2aab7c59c13c13c19c11"></a>


| Función | Tipo de datos de salida | Description (Descripción) | 
| --- | --- | --- | 
|  `correlate_pearson(timeseries, timeseries)`  |  double  |  Calcula el [coeficiente de correlación de Pearson](https://wikipedia.org/wiki/Pearson_correlation_coefficient) para las dos `timeseries`. Las series temporales deben tener las mismas marcas de tiempo.  | 
|  `correlate_spearman(timeseries, timeseries)`  |  double  |  Calcula el [coeficiente de correlación de Spearman](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient) para las dos `timeseries`. Las series temporales deben tener las mismas marcas de tiempo.  | 

## Consultas de ejemplo
<a name="w2aab7c59c13c13c19c13"></a>

**Example**  

```
WITH cte_1 AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, measure_value::double), 
        SEQUENCE(min(time), max(time), 10m)) AS result 
    FROM sample.DevOps 
    WHERE measure_name = 'cpu_utilization' 
    AND hostname = 'host-Hovjv' AND time > ago(1h) 
    GROUP BY hostname, measure_name
), 
cte_2 AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, measure_value::double), 
        SEQUENCE(min(time), max(time), 10m)) AS result 
    FROM sample.DevOps 
    WHERE measure_name = 'cpu_utilization' 
    AND hostname = 'host-Hovjv' AND time > ago(1h) 
    GROUP BY hostname, measure_name
) 
SELECT correlate_pearson(cte_1.result, cte_2.result) AS result 
FROM cte_1, cte_2
```

# Funciones de filtrado y reducción
<a name="timeseries-specific-constructs.functions.filter-reduce"></a>

Amazon Timestream admite funciones para realizar operaciones de filtrado y reducción de datos de serie temporal. En esta sección se proporciona información sobre el uso del Timestream para las funciones de LiveAnalytics filtrado y reducción, así como ejemplos de consultas. 



## Información de uso
<a name="w2aab7c59c13c13c23b7"></a>


| Función | Tipo de datos de salida | Description (Descripción) | 
| --- | --- | --- | 
|  `filter(timeseries(T), function(T, Boolean))`  |  timeseries(T)  |  Construye una serie temporal a partir de una serie temporal de entrada, que usa valores para los que la `function` que se pasa devuelve `true`.  | 
|  `reduce(timeseries(T), initialState S, inputFunction(S, T, S), outputFunction(S, R))`  |  R  |  Devuelve un valor único, reducido de la serie temporal. Se invocará `inputFunction` en cada elemento de la serie temporal en orden. Además de tomar el elemento actual, InputFunction toma el estado actual (inicialmente `initialState`) y devuelve el nuevo estado. Se invocará `outputFunction` para convertir el estado final en el valor resultante. `outputFunction` puede ser una función de identidad.  | 

## Consultas de ejemplo
<a name="w2aab7c59c13c13c23b9"></a>

**Example**  
Cree una serie temporal del uso de la CPU de un host y filtre los puntos con una medición superior a 70:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT FILTER(cpu_user, x -> x.value > 70.0) AS cpu_above_threshold
from time_series_view
```

**Example**  
Cree una serie temporal del uso de la CPU de un host y determine la suma al cuadrado de las medidas:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT REDUCE(cpu_user,
    DOUBLE '0.0',
    (s, x) -> x.value * x.value + s,
    s -> s)
from time_series_view
```

**Example**  
Cree una serie temporal del uso de la CPU de un host y determine la fracción de muestras que están por encima del umbral de la CPU:  

```
WITH time_series_view AS (
    SELECT INTERPOLATE_LINEAR(
        CREATE_TIME_SERIES(time, ROUND(measure_value::double,2)), 
            SEQUENCE(ago(15m), ago(1m), 10s)) AS cpu_user
    FROM sample.DevOps
    WHERE hostname = 'host-Hovjv' and measure_name = 'cpu_utilization'
        AND time > ago(30m)
    GROUP BY hostname
)
SELECT ROUND(
    REDUCE(cpu_user, 
      -- initial state 
      CAST(ROW(0, 0) AS ROW(count_high BIGINT, count_total BIGINT)),
      -- function to count the total points and points above a certain threshold
      (s, x) -> CAST(ROW(s.count_high + IF(x.value > 70.0, 1, 0), s.count_total + 1) AS ROW(count_high BIGINT, count_total BIGINT)),
      -- output function converting the counts to fraction above threshold
      s -> IF(s.count_total = 0, NULL, CAST(s.count_high AS DOUBLE) / s.count_total)), 
    4) AS fraction_cpu_above_threshold
from time_series_view
```