

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、[こちら](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 補間関数
<a name="timeseries-specific-constructs.functions.interpolation"></a>

特定の時点で時系列データにイベントの値が欠落している場合は、補間を使用して欠落しているイベントの値を推定できます。Amazon Timestream は、線形補間、3 次スプライン補間、直近の観測値による補間 (locf)、定数補間の 4 つの補間バリアントをサポートしています。このセクションでは、Timestream for LiveAnalytics における補間関数の使用状況の情報とサンプルクエリについて説明します。



## 使用状況の情報
<a name="w2aab7c59c13c13c11b7"></a>


| 関数 | 出力データ型 | 説明 | 
| --- | --- | --- | 
|  `interpolate_linear(timeseries, array[timestamp])`  |  timeseries  |  [線形補間](https://wikipedia.org/wiki/Linear_interpolation)を使用して欠落データを入力します。  | 
|  `interpolate_linear(timeseries, timestamp)`  |  double  |  [線形補間](https://wikipedia.org/wiki/Linear_interpolation)を使用して欠落データを入力します。  | 
|  `interpolate_spline_cubic(timeseries, array[timestamp])`  |  timeseries  |  [3 次スプライン補間](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.)を使用して欠落データを入力します。  | 
|  `interpolate_spline_cubic(timeseries, timestamp)`  |  double  |  [3 次スプライン補間](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.)を使用して欠落データを入力します。  | 
|  `interpolate_locf(timeseries, array[timestamp])`  |  timeseries  |  最後にサンプリングされた値を使用して欠落データを入力します。  | 
|  `interpolate_locf(timeseries, timestamp)`  |  double  |  最後にサンプリングされた値を使用して欠落データを入力します。  | 
|  `interpolate_fill(timeseries, array[timestamp], double)`  |  timeseries  |  定数値を使用して欠落データを入力します。  | 
|  `interpolate_fill(timeseries, timestamp, double)`  |  double  |  定数値を使用して欠落データを入力します。  | 

## クエリの例
<a name="w2aab7c59c13c13c11b9"></a>

**Example**  
過去 2 時間における特定の EC2 ホストの 30 秒間隔でビニングされた平均 CPU 使用率を調べ、線形補間を使用して欠落している値を入力します。  

```
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**  
過去 2 時間における特定の EC2 ホストの 30 秒間隔でビニングされた平均 CPU 使用率を調べ、locf に基づく補間を使用して欠落値を入力します。  

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