

Untuk kemampuan serupa dengan Amazon Timestream LiveAnalytics, pertimbangkan Amazon Timestream untuk InfluxDB. Ini menawarkan konsumsi data yang disederhanakan dan waktu respons kueri milidetik satu digit untuk analitik waktu nyata. Pelajari lebih lanjut [di sini](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsionalitas deret waktu bawaan
<a name="timeseries-specific-constructs"></a>

Timestream untuk LiveAnalytics menyediakan fungsionalitas deret waktu bawaan yang memperlakukan data deret waktu sebagai konsep kelas satu.

Fungsionalitas deret waktu bawaan dapat dibagi menjadi dua kategori: tampilan dan fungsi.

Anda dapat membaca tentang setiap konstruksi di bawah ini.

**Topics**
+ [Tampilan Timeseries](timeseries-specific-constructs.views.md)
+ [Fungsi deret waktu](timeseries-specific-constructs.functions.md)

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

Timestream untuk LiveAnalytics mendukung fungsi-fungsi berikut untuk mengubah data Anda ke tipe `timeseries` data:

**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** adalah fungsi agregasi yang mengambil semua pengukuran mentah dari deret waktu (nilai waktu dan ukuran) dan mengembalikan tipe data timeseries. Sintaks fungsi ini adalah sebagai berikut: 

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

 dimana `<data_type>` adalah tipe data dari nilai ukuran dan dapat menjadi salah satu dari bigint, boolean, double, atau varchar. Parameter kedua tidak bisa null.

Pertimbangkan pemanfaatan CPU dari instans EC2 yang disimpan dalam tabel bernama **metrik** seperti yang ditunjukkan di bawah ini:


| Waktu | region | az | vpc | instance\$1id | ukuran\$1nama | ukuran\$1nilai: :ganda | 
| --- | --- | --- | --- | --- | --- | --- | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  pemanfaatan cpu\$1  |  35,0  | 
|  2019-12-04 19:00:01.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  pemanfaatan cpu\$1  |  38.2  | 
|  2019-12-04 19:00:02.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  pemanfaatan cpu\$1  |  45.3  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  pemanfaatan cpu\$1  |  54.1  | 
|  2019-12-04 19:00:01.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  pemanfaatan cpu\$1  |  42.5  | 
|  2019-12-04 19:00:02.000 000000  |  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  pemanfaatan cpu\$1  |  33.7  | 

Menjalankan kueri:

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

akan mengembalikan semua seri `cpu_utilization` yang memiliki nilai ukuran. Dalam hal ini, kami memiliki dua seri: 


| region | az | vpc | instance\$1id | pemanfaatan cpu\$1 | 
| --- | --- | --- | --- | --- | 
|  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef0  |  [\$1waktu: 2019-12-04 19:00:00.000 000000, ukuran\$1nilai: :ganda: 35.0\$1, \$1waktu: 2019-12-04 19:00:01.000 000000, ukuran\$1nilai: :ganda: 38.2\$1, \$1waktu: 2019-12-04 19:00:02.000 000000, ukuran\$1nilai: :ganda: 45.3\$1]  | 
|  us-east-1  |  kami-timur-1d  |  vpc-1a2b3c4d  |  i-1234567890abcdef1  |  [\$1waktu: 2019-12-04 19:00:00.000 000000, ukuran\$1nilai: :ganda: 35.1\$1, \$1waktu: 2019-12-04 19:00:01.000 000000, ukuran\$1nilai: :ganda: 38.5\$1, \$1waktu: 2019-12-04 19:00:02.000 000000, ukuran\$1nilai: :ganda: 45.7\$1]  | 

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

 `UNNEST`adalah fungsi tabel yang memungkinkan Anda untuk mengubah `timeseries` data menjadi model datar. Sintaksnya adalah sebagai berikut: 

 `UNNEST`mengubah a `timeseries` menjadi dua kolom, yaitu, `time` dan`value`. Anda juga dapat menggunakan alias dengan UNNEST seperti yang ditunjukkan di bawah ini: 

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

di `<alias_name>` mana alias untuk tabel datar, `time_alias` adalah alias untuk `time` kolom dan `value_alias` merupakan alias untuk kolom. `value`

Misalnya, pertimbangkan skenario di mana beberapa instans EC2 di armada Anda dikonfigurasi untuk memancarkan metrik pada interval 5 detik, yang lain memancarkan metrik pada interval 15 detik, dan Anda memerlukan metrik rata-rata untuk semua instans pada granularitas 10 detik selama 6 jam terakhir. Untuk mendapatkan data ini, Anda mengubah metrik Anda ke model deret waktu menggunakan **CREATE\$1TIME\$1SERIES**. Anda kemudian dapat menggunakan **INTERPOLATE\$1LINEAR** untuk mendapatkan nilai yang hilang pada granularitas 10 detik. Selanjutnya, Anda mengubah data kembali ke model datar menggunakan **UNNEST**, dan kemudian menggunakan **AVG** untuk mendapatkan metrik rata-rata di semua instance.

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

 Kueri di atas menunjukkan penggunaan **UNNEST dengan alias**. Di bawah ini adalah contoh kueri yang sama tanpa menggunakan alias untuk **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
```

# Fungsi deret waktu
<a name="timeseries-specific-constructs.functions"></a>

Amazon Timestream untuk LiveAnalytics mendukung fungsi timeseries, seperti turunan, integral, dan korelasi, serta lainnya, untuk memperoleh wawasan yang lebih dalam dari data deret waktu Anda. Bagian ini menyediakan informasi penggunaan untuk masing-masing fungsi ini, serta contoh kueri. Pilih topik di bawah ini untuk mempelajari lebih lanjut. 

**Topics**
+ [Fungsi interpolasi](timeseries-specific-constructs.functions.interpolation.md)
+ [Fungsi derivatif](timeseries-specific-constructs.functions.derivatives.md)
+ [Fungsi integral](timeseries-specific-constructs.functions.integrals.md)
+ [Fungsi korelasi](timeseries-specific-constructs.functions.correlation.md)
+ [Saring dan kurangi fungsi](timeseries-specific-constructs.functions.filter-reduce.md)

# Fungsi interpolasi
<a name="timeseries-specific-constructs.functions.interpolation"></a>

Jika data deret waktu Anda kehilangan nilai untuk peristiwa pada titik waktu tertentu, Anda dapat memperkirakan nilai peristiwa yang hilang tersebut menggunakan interpolasi. Amazon Timestream mendukung empat varian interpolasi: interpolasi linier, interpolasi spline kubik, interpolasi observasi terakhir dilakukan (locf), dan interpolasi konstan. Bagian ini menyediakan informasi penggunaan untuk Timestream untuk fungsi LiveAnalytics interpolasi, serta kueri sampel. 



## Informasi penggunaan
<a name="w2aab7c59c13c13c11b7"></a>


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  `interpolate_linear(timeseries, array[timestamp])`  |  timeseries  |  Mengisi data yang hilang menggunakan [interpolasi linier](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_linear(timeseries, timestamp)`  |  double  |  Mengisi data yang hilang menggunakan [interpolasi linier](https://wikipedia.org/wiki/Linear_interpolation).  | 
|  `interpolate_spline_cubic(timeseries, array[timestamp])`  |  timeseries  |  Mengisi data yang hilang menggunakan interpolasi [spline kubik](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_spline_cubic(timeseries, timestamp)`  |  double  |  Mengisi data yang hilang menggunakan interpolasi [spline kubik](https://wikiversity.org/wiki/Cubic_Spline_Interpolation#:~:text=Cubic%20spline%20interpolation%20is%20a,Lagrange%20polynomial%20and%20Newton%20polynomial.).  | 
|  `interpolate_locf(timeseries, array[timestamp])`  |  timeseries  |  Mengisi data yang hilang menggunakan nilai sampel terakhir.  | 
|  `interpolate_locf(timeseries, timestamp)`  |  double  |  Mengisi data yang hilang menggunakan nilai sampel terakhir.  | 
|  `interpolate_fill(timeseries, array[timestamp], double)`  |  timeseries  |  Mengisi data yang hilang menggunakan nilai konstan.  | 
|  `interpolate_fill(timeseries, timestamp, double)`  |  double  |  Mengisi data yang hilang menggunakan nilai konstan.  | 

## Contoh kueri
<a name="w2aab7c59c13c13c11b9"></a>

**Example**  
Temukan rata-rata pemanfaatan CPU yang di-binned pada interval 30 detik untuk host EC2 tertentu selama 2 jam terakhir, mengisi nilai yang hilang menggunakan interpolasi linier:  

```
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**  
Temukan rata-rata pemanfaatan CPU yang di-binned pada interval 30 detik untuk host EC2 tertentu selama 2 jam terakhir, mengisi nilai yang hilang menggunakan interpolasi berdasarkan pengamatan terakhir yang dilakukan ke depan:  

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

# Fungsi derivatif
<a name="timeseries-specific-constructs.functions.derivatives"></a>

Derivatif digunakan menghitung tingkat perubahan untuk metrik tertentu dan dapat digunakan untuk secara proaktif menanggapi suatu peristiwa. Misalnya, Anda menghitung turunan dari pemanfaatan CPU dari instans EC2 selama 5 menit terakhir, dan Anda melihat turunan positif yang signifikan. Ini bisa menjadi indikasi meningkatnya permintaan pada beban kerja Anda, jadi Anda mungkin memutuskan ingin memutar lebih banyak instans EC2 untuk menangani beban kerja Anda dengan lebih baik. 

Amazon Timestream mendukung dua varian fungsi turunan. Bagian ini menyediakan informasi penggunaan untuk Timestream untuk fungsi LiveAnalytics turunan, serta contoh kueri. 



## Informasi penggunaan
<a name="w2aab7c59c13c13c13b9"></a>


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  `derivative_linear(timeseries, interval)`  |  timeseries  |  Menghitung [turunan](https://wikipedia.org/wiki/Derivative) dari setiap titik dalam `timeseries` untuk yang ditentukan. `interval`  | 
|  `non_negative_derivative_linear(timeseries, interval)`  |  timeseries  |  Sama seperti`derivative_linear(timeseries, interval)`, tetapi hanya mengembalikan nilai positif.  | 

## Contoh kueri
<a name="w2aab7c59c13c13c13c11"></a>

**Example**  
Temukan tingkat perubahan dalam pemanfaatan CPU setiap 5 menit selama 1 jam terakhir:  

```
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**  
Hitung tingkat peningkatan kesalahan yang dihasilkan oleh satu atau lebih layanan mikro:  

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

# Fungsi integral
<a name="timeseries-specific-constructs.functions.integrals"></a>

Anda dapat menggunakan integral untuk menemukan area di bawah kurva per satuan waktu untuk peristiwa deret waktu Anda. Sebagai contoh, misalkan Anda melacak volume permintaan yang diterima oleh aplikasi Anda per unit waktu. Dalam skenario ini, Anda dapat menggunakan fungsi integral untuk menentukan total volume permintaan yang disajikan per interval tertentu selama periode waktu tertentu.

Amazon Timestream mendukung satu varian fungsi integral. Bagian ini menyediakan informasi penggunaan untuk Timestream untuk fungsi LiveAnalytics integral, serta contoh kueri. 



## Informasi penggunaan
<a name="w2aab7c59c13c13c15b9"></a>


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  `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  |  Perkiraan [integral](https://wikipedia.org/wiki/Integral) per yang ditentukan `interval day to second` untuk yang `timeseries` disediakan, menggunakan aturan [trapesium](https://wikipedia.org/wiki/Trapezoidal_rule). Parameter interval hari ke kedua adalah opsional dan defaultnya adalah`1s`. Untuk informasi lebih lanjut tentang interval, lihat[Interval dan durasi](date-time-functions.md#date-time-functions-interval-duration).  | 

## Contoh kueri
<a name="w2aab7c59c13c13c15c11"></a>

**Example**  
Hitung total volume permintaan yang dilayani per lima menit selama satu jam terakhir oleh host tertentu:  

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

# Fungsi korelasi
<a name="timeseries-specific-constructs.functions.correlation"></a>

Mengingat dua deret waktu panjang yang serupa, fungsi korelasi memberikan koefisien korelasi, yang menjelaskan bagaimana tren dua deret waktu dari waktu ke waktu. Koefisien korelasi berkisar dari `-1.0` ke. `1.0` `-1.0`menunjukkan bahwa tren dua deret waktu dalam arah yang berlawanan pada tingkat yang sama. sedangkan `1.0` menunjukkan bahwa tren dua timeseries dalam arah yang sama pada tingkat yang sama. Nilai `0` menunjukkan tidak ada korelasi antara dua deret waktu. Misalnya, jika harga minyak naik, dan harga saham perusahaan minyak meningkat, tren kenaikan harga minyak dan kenaikan harga perusahaan minyak akan memiliki koefisien korelasi positif. Koefisien korelasi positif yang tinggi akan menunjukkan bahwa kedua tren harga pada tingkat yang sama. Demikian pula, koefisien korelasi antara harga obligasi dan imbal hasil obligasi negatif, menunjukkan bahwa kedua nilai ini cenderung berlawanan arah dari waktu ke waktu.

Amazon Timestream mendukung dua varian fungsi korelasi. Bagian ini menyediakan informasi penggunaan untuk Timestream untuk fungsi LiveAnalytics korelasi, serta contoh kueri. 



## Informasi penggunaan
<a name="w2aab7c59c13c13c19c11"></a>


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  `correlate_pearson(timeseries, timeseries)`  |  double  |  Menghitung [koefisien korelasi Pearson](https://wikipedia.org/wiki/Pearson_correlation_coefficient) untuk keduanya. `timeseries` Timeseries harus memiliki stempel waktu yang sama.  | 
|  `correlate_spearman(timeseries, timeseries)`  |  double  |  Menghitung [koefisien korelasi Spearman](https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient) untuk keduanya. `timeseries` Timeseries harus memiliki stempel waktu yang sama.  | 

## Contoh kueri
<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
```

# Saring dan kurangi fungsi
<a name="timeseries-specific-constructs.functions.filter-reduce"></a>

Amazon Timestream mendukung fungsi untuk melakukan filter dan mengurangi operasi pada data deret waktu. Bagian ini menyediakan informasi penggunaan untuk Timestream untuk LiveAnalytics memfilter dan mengurangi fungsi, serta contoh kueri. 



## Informasi penggunaan
<a name="w2aab7c59c13c13c23b7"></a>


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  `filter(timeseries(T), function(T, Boolean))`  |  timeseries (T)  |  Membangun deret waktu dari deret waktu input, menggunakan nilai-nilai yang diteruskan `function` kembali`true`.  | 
|  `reduce(timeseries(T), initialState S, inputFunction(S, T, S), outputFunction(S, R))`  |  R  |  Mengembalikan nilai tunggal, dikurangi dari deret waktu. `inputFunction`Akan dipanggil pada setiap elemen dalam timeseries secara berurutan. Selain mengambil elemen saat ini, InputFunction mengambil status saat ini (awalnya`initialState`) dan mengembalikan status baru. `outputFunction`Akan dipanggil untuk mengubah status akhir menjadi nilai hasil. Itu `outputFunction` bisa menjadi fungsi identitas.  | 

## Contoh kueri
<a name="w2aab7c59c13c13c23b9"></a>

**Example**  
Bangun rangkaian waktu pemanfaatan CPU dari host dan titik filter dengan pengukuran lebih dari 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**  
Bangun deret waktu pemanfaatan CPU dari host dan tentukan jumlah kuadrat pengukuran:  

```
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**  
Bangun deret waktu pemanfaatan CPU dari host dan tentukan fraksi sampel yang berada di atas ambang 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
```