

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.

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

Timestream for LiveAnalytics admite las siguientes funciones para transformar los datos en el tipo de datos: `timeseries`

**Topics**
+ [CREATE\$1TIME\$1SERIES](#timeseries-specific-constructs.views.CREATE_TIME_SERIES)
+ [UNNEST](#timeseries-specific-constructs.views.UNNEST)

## CREATE\$1TIME\$1SERIES
<a name="timeseries-specific-constructs.views.CREATE_TIME_SERIES"></a>

 **CREATE\$1TIME\$1SERIES** es una función de agregación que toma todas las medidas sin procesar de una serie temporal (valores de tiempo y medida) y devuelve un tipo de datos de serie temporal. La sintaxis de esta función es la siguiente: 

```
CREATE_TIME_SERIES(time, measure_value::<data_type>)
```

 donde `<data_type>` es el tipo de datos del valor de la medida y puede ser bigint, boolean, double o varchar. El segundo parámetro no puede ser nulo.

Tenga en cuenta el uso de la CPU de las instancias EC2 almacenadas en una tabla denominada **métricas**, como se muestra a continuación:


| Time | region | az | vpc | instance\$1id | measure\$1name | measure\$1value::double | 
| --- | --- | --- | --- | --- | --- | --- | 
|  2019-12-04 19:00:00.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  cpu\$1utilization  |  35,0  | 
|  2019-12-04 19:00:01.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  cpu\$1utilization  |  38,2  | 
|  2019-12-04 19:00:02.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  cpu\$1utilization  |  45,3  | 
|  2019-12-04 19:00:00.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  cpu\$1utilization  |  54,1  | 
|  2019-12-04 19:00:01.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  cpu\$1utilization  |  42,5  | 
|  2019-12-04 19:00:02.000000000  |  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  cpu\$1utilization  |  3.7  | 

Ejecución de la consulta:

```
SELECT region, az, vpc, instance_id, CREATE_TIME_SERIES(time, measure_value::double) as cpu_utilization FROM metrics
    WHERE measure_name=’cpu_utilization’
    GROUP BY region, az, vpc, instance_id
```

devolverá todas las series que tengan un valor de medida `cpu_utilization`. En este caso, tenemos dos series: 


| region | az | vpc | instance\$1id | cpu\$1utilization | 
| --- | --- | --- | --- | --- | 
|  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  [\$1time: 2019-12-04 19:00:00.000000000, measure\$1value::double: 35,0\$1, \$1time: 2019-12-04 19:00:01.000000000, measure\$1value::double: 38,2\$1, \$1time: 2019-12-04 19:00:02.000000000, measure\$1value::double: 45,3\$1]  | 
|  us-east-1  |  us-east-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  [\$1time: 2019-12-04 19:00:00.000000000, measure\$1value::double: 35,1\$1, \$1time: 2019-12-04 19:00:01.000000000, measure\$1value::double: 38,5\$1, \$1time: 2019-12-04 19:00:02.000000000, measure\$1value::double: 45,7\$1]  | 

## UNNEST
<a name="timeseries-specific-constructs.views.UNNEST"></a>

 `UNNEST` es una función de tabla que permite transformar los datos de `timeseries` en un modelo plano. La sintaxis es la siguiente: 

 `UNNEST` transforma a `timeseries` en dos columnas, a saber, `time` y `value`. También puede usar alias con UNNEST, como se muestra a continuación: 

```
UNNEST(timeseries) AS <alias_name> (time_alias, value_alias)
```

donde `<alias_name>` es el alias de la tabla plana, `time_alias` es el alias de la columna `time` y `value_alias` es el alias de la columna `value`.

Por ejemplo, considere el escenario en el que algunas de las instancias de EC2 de su flota están configuradas para emitir métricas en un intervalo de 5 segundos, otras emiten métricas en un intervalo de 15 segundos y necesita el promedio de las métricas de todas las instancias con una granularidad de 10 segundos durante las últimas 6 horas. Para obtener estos datos, debe transformar las métricas al modelo de serie temporal mediante **CREATE\$1TIME\$1SERIES.** A continuación, puede usar **INTERPOLATE\$1LINEAR** para obtener los valores faltantes con una granularidad de 10 segundos. Luego, vuelva a transformar los datos en el modelo plano con **UNNEST** y, a continuación, use **AVG** para obtener las métricas medias de todas las instancias.

```
WITH interpolated_timeseries AS (
    SELECT region, az, vpc, instance_id,
        INTERPOLATE_LINEAR(
            CREATE_TIME_SERIES(time, measure_value::double),
                SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization
    FROM timestreamdb.metrics 
    WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h)
    GROUP BY region, az, vpc, instance_id
)
SELECT region, az, vpc, instance_id, avg(t.cpu_util)
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_cpu_utilization) AS t (time, cpu_util)
GROUP BY region, az, vpc, instance_id
```

 La consulta anterior demuestra el uso de **UNNEST** con un alias. A continuación, se muestra un ejemplo de la misma consulta sin usar un alias para **UNNEST**: 

```
WITH interpolated_timeseries AS (
    SELECT region, az, vpc, instance_id,
        INTERPOLATE_LINEAR(
            CREATE_TIME_SERIES(time, measure_value::double),
                SEQUENCE(ago(6h), now(), 10s)) AS interpolated_cpu_utilization
    FROM timestreamdb.metrics 
    WHERE measure_name= ‘cpu_utilization’ AND time >= ago(6h)
    GROUP BY region, az, vpc, instance_id
)
SELECT region, az, vpc, instance_id, avg(value)
FROM interpolated_timeseries
CROSS JOIN UNNEST(interpolated_cpu_utilization)
GROUP BY region, az, vpc, instance_id
```