

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](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

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á.

# Funções de séries temporais
<a name="timeseries-specific-constructs.functions"></a>

O Amazon Timestream LiveAnalytics for oferece suporte a funções de séries temporais, como derivadas, integrais e correlações, além de outras, para obter insights mais profundos de seus dados de séries temporais. Esta seção fornece informações de uso para cada uma dessas funções, bem como exemplos de consultas. Selecione um tópico abaixo para saber mais. 

**Topics**
+ [Funções de interpolação](timeseries-specific-constructs.functions.interpolation.md)
+ [Funções derivadas](timeseries-specific-constructs.functions.derivatives.md)
+ [Funções integrais](timeseries-specific-constructs.functions.integrals.md)
+ [Funções de correlação](timeseries-specific-constructs.functions.correlation.md)
+ [Funções de filtragem e redução](timeseries-specific-constructs.functions.filter-reduce.md)

# Funções de interpolação
<a name="timeseries-specific-constructs.functions.interpolation"></a>

Se seus dados de série temporal não tiverem valores para eventos em determinados momentos, você poderá estimar os valores desses eventos ausentes usando a interpolação. O Amazon Timestream suporta quatro variantes de interpolação: interpolação linear, interpolação por divisão cúbica, interpolação por última observação transportada (locf) e interpolação constante. Esta seção fornece informações de uso do Timestream para funções de LiveAnalytics interpolação, bem como exemplos de consultas. 



## Informações de uso
<a name="w2aab7c59c13c13c11b7"></a>


| Função | Tipo de dados de saída | Description | 
| --- | --- | --- | 
|  `interpolate_linear(timeseries, array[timestamp])`  |  timeseries  |  Preenche os dados ausentes usando a [interpolação linear](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_linear(timeseries, timestamp)`  |  double  |  Preenche os dados ausentes usando a [interpolação linear](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_spline_cubic(timeseries, array[timestamp])`  |  timeseries  |  Preenche os dados ausentes usando a [interpolação de divisão cúbica](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_spline_cubic(timeseries, timestamp)`  |  double  |  Preenche os dados ausentes usando a [interpolação de divisão cúbica](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_locf(timeseries, array[timestamp])`  |  timeseries  |  Preenche os dados ausentes usando o último valor amostrado.  | 
|  `interpolate_locf(timeseries, timestamp)`  |  double  |  Preenche os dados ausentes usando o último valor amostrado.  | 
|  `interpolate_fill(timeseries, array[timestamp], double)`  |  timeseries  |  Preenche os dados ausentes usando um valor constante.  | 
|  `interpolate_fill(timeseries, timestamp, double)`  |  double  |  Preenche os dados ausentes usando um valor constante.  | 

## Exemplos de consulta
<a name="w2aab7c59c13c13c11b9"></a>

**Example**  
Encontre a utilização média da CPU armazenada em intervalos de 30 segundos para um host EC2 específico nas últimas 2 horas, preenchendo os valores ausentes usando a interpolação linear:  

```
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**  
Encontre a utilização média da CPU armazenada em intervalos de 30 segundos para um host EC2 específico nas últimas 2 horas, preenchendo os valores ausentes usando a interpolação com base na última observação realizada:  

```
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)
```

# Funções derivadas
<a name="timeseries-specific-constructs.functions.derivatives"></a>

As derivadas são usadas para calcular a taxa de variação de uma determinada métrica e podem ser usadas para responder proativamente a um evento. Por exemplo, suponha que você calcule a derivada da utilização da CPU das instâncias do EC2 nos últimos 5 minutos e observe uma derivada positiva significativa. Isso pode ser indicativo do aumento da demanda em seu workload, então você pode decidir ativar mais instâncias do EC2 para lidar melhor com seu workload. 

O Amazon Timestream oferece suporte a duas variantes de funções derivadas. Esta seção fornece informações de uso do Timestream para funções LiveAnalytics derivadas, bem como exemplos de consultas. 



## Informações de uso
<a name="w2aab7c59c13c13c13b9"></a>


| Função | Tipo de dados de saída | Description | 
| --- | --- | --- | 
|  `derivative_linear(timeseries, interval)`  |  timeseries  |  Calcula a [derivada](https://wikipedia.org/wiki/Derivative) de cada ponto no `timeseries` para o `interval` especificado.  | 
|  `non_negative_derivative_linear(timeseries, interval)`  |  timeseries  |  O mesmo que `derivative_linear(timeseries, interval)`, mas retorna apenas valores positivos.  | 

## Exemplos de consulta
<a name="w2aab7c59c13c13c13c11"></a>

**Example**  
Encontre a taxa de alteração na utilização da CPU a cada 5 minutos na última 1 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 a taxa de aumento nos erros gerados por um ou mais microsserviços:  

```
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
```

# Funções integrais
<a name="timeseries-specific-constructs.functions.integrals"></a>

Você pode usar integrais para encontrar a área sob a curva por unidade de tempo para seus eventos de série temporal. Por exemplo, suponha que você esteja monitorando o volume de solicitações recebidas pelo seu aplicativo por unidade de tempo. Nesse cenário, você pode usar a função integral para determinar o volume total de solicitações atendidas por intervalo especificado em um período específico.

O Amazon Timestream oferece suporte a uma variante de funções integrais. Esta seção fornece informações de uso do Timestream para a função LiveAnalytics integral, bem como exemplos de consultas. 



## Informações de uso
<a name="w2aab7c59c13c13c15b9"></a>


| Função | Tipo de dados de saída | Description | 
| --- | --- | --- | 
|  `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 a [integral](https://wikipedia.org/wiki/Integral) conforme o `interval day to second` especificado para o `timeseries` fornecido, usando a regra [trapezoidal](https://wikipedia.org/wiki/Trapezoidal_rule). O parâmetro de intervalo de dia para segundo é opcional e o padrão é `1s`. Para obter mais informações sobre intervalos, consulte [Intervalo e duração](date-time-functions.md#date-time-functions-interval-duration).  | 

## Exemplos de consulta
<a name="w2aab7c59c13c13c15c11"></a>

**Example**  
Calcular o volume total de solicitações atendidas por cinco minutos na última hora por um 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
```

# Funções de correlação
<a name="timeseries-specific-constructs.functions.correlation"></a>

Dadas duas séries temporais de duração semelhante, as funções de correlação fornecem um coeficiente de correlação, o que explica a tendência das duas séries temporais ao longo do tempo. O coeficiente de correlação varia de `-1.0` a `1.0`. `-1.0` indica que as duas séries temporais tendem em direções opostas na mesma taxa, enquanto `1.0` indica que as duas séries temporais tendem na mesma direção e na mesma taxa. Um valor de `0` indica que não há correlação entre as duas séries temporais. Por exemplo, se o preço do petróleo aumentar e o preço das ações de uma empresa petrolífera aumentar, a tendência do aumento do preço do petróleo e o aumento do preço da companhia petrolífera terão um coeficiente de correlação positivo. Um alto coeficiente de correlação positivo indicaria que os dois preços tem tendências em uma taxa semelhante. Da mesma forma, o coeficiente de correlação entre os preços dos títulos e o rendimento dos títulos é negativo, indicando que esses dois valores tendem na direção oposta ao longo do tempo.

O Amazon Timestream oferece suporte a duas variantes de funções de correlação. Esta seção fornece informações de uso do Timestream para funções de LiveAnalytics correlação, bem como exemplos de consultas. 



## Informações de uso
<a name="w2aab7c59c13c13c19c11"></a>


| Função | Tipo de dados de saída | Description | 
| --- | --- | --- | 
|  `correlate_pearson(timeseries, timeseries)`  |  double  |  Calcula o [coeficiente de correlação de Pearson](https://wikipedia.org/wiki/Pearson_correlation_coefficient) para os dois `timeseries`. As séries temporais devem ter os mesmos registros de data e hora.  | 
|  `correlate_spearman(timeseries, timeseries)`  |  double  |  Calcula o [coeficiente de correlação de Spearman](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient) para os dois `timeseries`. As séries temporais devem ter os mesmos registros de data e hora.  | 

## Exemplos de consulta
<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
```

# Funções de filtragem e redução
<a name="timeseries-specific-constructs.functions.filter-reduce"></a>

O Amazon Timestream oferece suporte a funções que realizam operações de filtragem e redução em dados de séries temporais. Esta seção fornece informações de uso do Timestream para funções de LiveAnalytics filtragem e redução, bem como exemplos de consultas. 



## Informações de uso
<a name="w2aab7c59c13c13c23b7"></a>


| Função | Tipo de dados de saída | Description | 
| --- | --- | --- | 
|  `filter(timeseries(T), function(T, Boolean))`  |  timeseries(T)  |  Constrói uma série temporal a partir de uma série temporal de entrada, usando valores para os quais o `function` passado retorna como `true`.  | 
|  `reduce(timeseries(T), initialState S, inputFunction(S, T, S), outputFunction(S, R))`  |  R  |  Retorna um valor único, reduzido da série temporal. O `inputFunction` será invocado em cada elemento na série temporal em ordem. Além de pegar o elemento atual, InputFunction pega o estado atual (inicialmente `initialState`) e retorna o novo estado. O `outputFunction` será invocado para transformar o estado final no valor do resultado. `outputFunction` pode ser uma função de identidade.  | 

## Exemplos de consulta
<a name="w2aab7c59c13c13c23b9"></a>

**Example**  
Construir uma série temporal da utilização da CPU de um host e filtrar pontos com medição maior que 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**  
Criar uma série temporal da utilização da CPU de um host e determinar a soma quadrada das medições:  

```
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**  
Criar uma série temporal da utilização da CPU de um host e determinar a fração de amostras que estão acima do limite da 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
```