Visualizações de séries temporais - Amazon Timestream

Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Visualizações de séries temporais

O Timestream for LiveAnalytics suporta as seguintes funções para transformar seus dados no tipo de dados: timeseries

CREATE_TIME_SERIES

CREATE_TIME_SERIES é uma função de agregação que faz todas as medições brutas de uma série temporal (valores de tempo e medida) e retorna um tipo de dados de série temporal. A sintaxe dessa função é a seguinte.

CREATE_TIME_SERIES(time, measure_value::<data_type>)

onde <data_type> é o tipo de dados do valor da medida e pode ser bigint, boolean, double ou varchar. O segundo parâmetro não pode ser nulo.

Considere a utilização da CPU de EC2 instâncias armazenadas em uma tabela chamada métricas, conforme mostrado abaixo:

Hora região az vpc instance_id measure_name measure_value::double

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

35,0

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

38,2

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

cpu_utilization

45,3

2019-12-04 19:00:00.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

54.1

2019-12-04 19:00:01.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

42,5

2019-12-04 19:00:02.000000000

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

cpu_utilization

3.7

Executar a 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

retornará todas as séries que tenham cpu_utilization como medida um valor. Neste caso, temos duas séries:

região az vpc instance_id cpu_utilization

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef0

[{time: 2019-12-04 19:00:00.000000000, measure_value::double: 35.0}, {time: 2019-12-04 19:00:01.000000000, measure_value::double: 38.2}, {time: 2019-12-04 19:00:02.000000000, measure_value::double: 45.3}]

us-east-1

us-east-1d

vpc-1a2b3c4d

i-1234567890abcdef1

[{time: 2019-12-04 19:00:00.000000000, measure_value::double: 35.1}, {time: 2019-12-04 19:00:01.000000000, measure_value::double: 38.5}, {time: 2019-12-04 19:00:02.000000000, measure_value::double: 45.7}]

UNNEST

UNNEST é uma função de tabela que permite transformar dados timeseries no modelo plano. A sintaxe é a seguinte:

UNNEST transforma um timeseries em duas colunas, que são time e value. Você também pode usar aliases com UNNEST, conforme mostrado abaixo:

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

onde <alias_name> é o alias da tabela plana, time_alias é o alias da coluna time e value_alias é o alias da coluna value.

Por exemplo, considere o cenário em que algumas das EC2 instâncias da sua frota estão configuradas para emitir métricas em um intervalo de 5 segundos, outras emitem métricas em um intervalo de 15 segundos, e você precisa das métricas médias de todas as instâncias em uma granularidade de 10 segundos nas últimas 6 horas. Para obter esses dados, você transforma suas métricas no modelo de série temporal usando CREATE_TIME_SERIES. Em seguida, você pode usar INTERPOLATE_LINEAR para obter os valores ausentes na granularidade de 10 segundos. Em seguida, você transforma os dados de volta no modelo plano usando o UNNEST e, em seguida, usa o AVG para obter as métricas médias em todas as instâncias.

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

A consulta acima demonstra o uso de UNNEST com um alias. Abaixo está um exemplo da mesma consulta sem usar um 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