

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.

# Referensi bahasa kueri
<a name="reference"></a>

**catatan**  
Referensi bahasa kueri ini mencakup dokumentasi pihak ketiga berikut dari [Trino Software Foundation](https://trino.io/foundation.html) (sebelumnya Presto Software Foundation), yang dilisensikan di bawah Lisensi Apache, Versi 2.0. Anda tidak boleh menggunakan file ini kecuali sesuai dengan lisensi ini. Untuk mendapatkan salinan Lisensi Apache, Versi 2.0, lihat situs web [Apache](http://www.apache.org/licenses/LICENSE-2.0).

Timestream untuk LiveAnalytics mendukung bahasa kueri yang kaya untuk bekerja dengan data Anda. Anda dapat melihat tipe data, operator, fungsi, dan konstruksi yang tersedia di bawah ini.

Anda juga dapat segera memulai dengan bahasa kueri Timestream di [Kueri Sampel](sample-queries.md) bagian ini.

**Topics**
+ [Jenis data yang didukung](supported-data-types.md)
+ [Fungsionalitas deret waktu bawaan](timeseries-specific-constructs.md)
+ [Dukungan SQL](supported-sql-constructs.md)
+ [Operator logis](logical-operators.md)
+ [Operator perbandingan](comparison-operators.md)
+ [Fungsi perbandingan](comparison-functions.md)
+ [Ekspresi bersyarat](conditional-expressions.md)
+ [Fungsi konversi](conversion-functions.md)
+ [Operator matematika](mathematical-operators.md)
+ [Fungsi matematika](mathematical-functions.md)
+ [Operator String](string-operators.md)
+ [Fungsi string](string-functions.md)
+ [Operator array](array-operators.md)
+ [Fungsi array](array-functions.md)
+ [Fungsi bitwise](bitwise-functions.md)
+ [Fungsi ekspresi reguler](regex-functions.md)
+ [Operator tanggal/waktu](date-time-operators.md)
+ [Fungsi tanggal/waktu](date-time-functions.md)
+ [Fungsi agregat](aggregate-functions.md)
+ [Fungsi jendela](window-functions.md)
+ [Kueri Sampel](sample-queries.md)

# Jenis data yang didukung
<a name="supported-data-types"></a>

Timestream untuk LiveAnalytics bahasa query mendukung tipe data berikut.

**catatan**  
Tipe data yang didukung untuk penulisan dijelaskan dalam [tipe Data](https://docs.aws.amazon.com/timestream/latest/developerguide/writes.html#writes.data-types).


| Jenis data | Deskripsi | 
| --- | --- | 
|  `int`  |  Merupakan bilangan bulat 32-bit.  | 
|  `bigint`  |  Merupakan integer bertanda 64-bit.  | 
|  `boolean`  |  Salah satu dari dua nilai kebenaran logika, `True` dan`False`.  | 
|  `double`  |  Merupakan tipe data presisi variabel 64-bit. Menerapkan [Standar IEEE 754 untuk Binary](https://standards.ieee.org/standard/754-2019.html) Floating-Point Arithmetic.  Bahasa query adalah untuk membaca data. Ada fungsi untuk `Infinity` dan nilai `NaN` ganda yang dapat digunakan dalam kueri. Tetapi Anda tidak dapat menulis nilai-nilai itu ke Timestream.   | 
|  `varchar`  |  Data karakter panjang variabel dengan ukuran maksimum 2KB.  | 
|  `array[T,...]`  |  Berisi satu atau lebih elemen dari tipe data tertentu*T*, di mana *T* dapat menjadi salah satu tipe data yang didukung di Timestream.  | 
|   `row(T,...)`   |  Berisi satu atau lebih bidang bernama tipe data*T*. Bidang mungkin dari tipe data apa pun yang didukung oleh Timestream, dan diakses dengan operator referensi bidang titik: <pre>.</pre>  | 
|  `date`  |  Merupakan tanggal dalam `YYYY-MM-DD` formulir. di mana *YYYY* tahun, *MM* adalah bulan, dan *DD* merupakan hari, masing-masing. Rentang yang didukung adalah dari `1970-01-01` ke`2262-04-11`.   *Contoh:*  <pre>1971-02-03</pre>  | 
|  `time`  |  Merupakan waktu hari di [UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time). Jenis `time` data direpresentasikan dalam bentuk `HH.MM.SS.sssssssss.` Mendukung presisi nanodetik.   *Contoh:*  <pre>17:02:07.496000000</pre>  | 
|  `timestamp`  |  Merupakan instance dalam waktu menggunakan waktu presisi nanodetik di UTC. `YYYY-MM-DD hh:mm:ss.sssssssss` Kueri mendukung stempel waktu dalam kisaran `1677-09-21 00:12:44.000000000` ke. `2262-04-11 23:47:16.854775807`  | 
|  `interval`  |  Merupakan interval waktu sebagai string literal`Xt`, terdiri dari dua bagian, *X* dan*t*.  *X*adalah nilai numerik yang lebih besar dari atau sama dengan`0`, dan *t* merupakan satuan waktu seperti detik atau jam. Unit ini tidak pluralisasi. Satuan waktu *t* harus menjadi salah satu dari literal string berikut:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/supported-data-types.html)  *Contoh:*  <pre>17s</pre> <pre>12second</pre> <pre>21hour</pre> <pre>2d</pre>  | 
|  `timeseries[row(timestamp, T,...)]`  |  Merupakan nilai ukuran yang direkam selama interval waktu sebagai `array` terdiri dari `row` objek. Masing-masing `row` berisi `timestamp` dan satu atau lebih nilai ukuran tipe data*T*, di mana *T* dapat salah satu dari`bigint`,`boolean`,`double`, atau`varchar`. Baris bermacam-macam dalam urutan menaik oleh. `timestamp` Tipe data *timeseries* mewakili nilai ukuran dari waktu ke waktu.  | 
|  `unknown`  |  Merupakan data nol.  | 

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

# Dukungan SQL
<a name="supported-sql-constructs"></a>

Timestream untuk LiveAnalytics mendukung beberapa konstruksi SQL umum. Anda dapat membaca lebih lanjut di bawah ini.

**Topics**
+ [SELECT](supported-sql-constructs.SELECT.md)
+ [Dukungan subquery](supported-sql-constructs.subquery-support.md)
+ [PERLIHATKAN pernyataan](supported-sql-constructs.SHOW.md)
+ [DESKRIPSIKAN pernyataan](supported-sql-constructs.DESCRIBE.md)
+ [MEMBONGKAR](supported-sql-constructs.UNLOAD.md)

# SELECT
<a name="supported-sql-constructs.SELECT"></a>

Pernyataan **SELECT** dapat digunakan untuk mengambil data dari satu atau beberapa tabel. Bahasa query Timestream mendukung sintaks berikut untuk pernyataan **SELECT**:

```
[ WITH with_query [, ...] ]
            SELECT [ ALL | DISTINCT ] select_expr [, ...]
            [ function (expression) OVER (
            [ PARTITION BY partition_expr_list ]
            [ ORDER BY order_list ]
            [ frame_clause ] )
            [ FROM from_item [, ...] ]
            [ WHERE condition ]
            [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
            [ HAVING condition]
            [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
            [ ORDER BY order_list ]
            [ LIMIT [ count | ALL ] ]
```

di mana 
+ `function (expression)`adalah salah satu [fungsi jendela](window-functions.md) yang didukung.
+ `partition_expr_list`adalah:

  ```
  expression | column_name [, expr_list ]
  ```
+ `order_list`adalah:

  ```
  expression | column_name [ ASC | DESC ] 
  [ NULLS FIRST | NULLS LAST ]
  [, order_list ]
  ```
+ `frame_clause`adalah:

  ```
  ROWS | RANGE
  { UNBOUNDED PRECEDING | expression PRECEDING | CURRENT ROW } |
  {BETWEEN
  { UNBOUNDED PRECEDING | expression { PRECEDING | FOLLOWING } |
  CURRENT ROW}
  AND
  { UNBOUNDED FOLLOWING | expression { PRECEDING | FOLLOWING } |
  CURRENT ROW }}
  ```
+ `from_item`adalah salah satu dari:

  ```
  table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
  from_item join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
  ```
+ `join_type`adalah salah satu dari:

  ```
  [ INNER ] JOIN
  LEFT [ OUTER ] JOIN
  RIGHT [ OUTER ] JOIN
  FULL [ OUTER ] JOIN
  ```
+ `grouping_element`adalah salah satu dari:

  ```
  ()
  expression
  ```

# Dukungan subquery
<a name="supported-sql-constructs.subquery-support"></a>

 Timestream mendukung subquery dalam `EXISTS` dan predikat. `IN` `EXISTS`Predikat menentukan apakah subquery mengembalikan baris apapun. `IN`Predikat menentukan apakah nilai yang dihasilkan oleh subquery cocok dengan nilai atau ekspresi dalam klausa IN. Bahasa kueri Timestream mendukung subquery berkorelasi dan lainnya. 

```
SELECT t.c1
FROM (VALUES 1, 2, 3, 4, 5) AS t(c1)
WHERE EXISTS
(SELECT t.c2
 FROM (VALUES 1, 2, 3) AS t(c2)
 WHERE t.c1= t.c2
)
ORDER BY t.c1
```


| c1 | 
| --- | 
|  1  | 
|  2  | 
|  3  | 

```
SELECT t.c1
FROM (VALUES 1, 2, 3, 4, 5) AS t(c1)
WHERE t.c1 IN
(SELECT t.c2
 FROM (VALUES 2, 3, 4) AS t(c2)
)
ORDER BY t.c1
```


| c1 | 
| --- | 
|  2  | 
|  3  | 
|  4  | 

# PERLIHATKAN pernyataan
<a name="supported-sql-constructs.SHOW"></a>

Anda dapat melihat semua database di akun dengan menggunakan `SHOW DATABASES` pernyataan. Sintaksnya adalah sebagai berikut:

```
SHOW DATABASES [LIKE pattern]
```

di mana `LIKE` klausa dapat digunakan untuk memfilter nama database.

Anda dapat melihat semua tabel di akun dengan menggunakan `SHOW TABLES` pernyataan. Sintaksnya adalah sebagai berikut:

```
SHOW TABLES [FROM database] [LIKE pattern]
```

di mana `FROM` klausa dapat digunakan untuk memfilter nama database dan `LIKE` klausa dapat digunakan untuk memfilter nama tabel.

Anda dapat melihat semua ukuran untuk tabel dengan menggunakan `SHOW MEASURES` pernyataan. Sintaksnya adalah sebagai berikut:

```
SHOW MEASURES FROM database.table [LIKE pattern]
```

di mana `FROM` klausa akan digunakan untuk menentukan database dan nama tabel dan `LIKE` klausa dapat digunakan untuk memfilter nama ukuran.

# DESKRIPSIKAN pernyataan
<a name="supported-sql-constructs.DESCRIBE"></a>

Anda dapat melihat metadata untuk tabel dengan menggunakan pernyataan. `DESCRIBE` Sintaksnya adalah sebagai berikut:

```
DESCRIBE database.table
```

dimana `table` berisi nama tabel. Pernyataan describe mengembalikan nama kolom dan tipe data untuk tabel.

# MEMBONGKAR
<a name="supported-sql-constructs.UNLOAD"></a>

Timestream untuk LiveAnalytics mendukung `UNLOAD` perintah sebagai ekstensi untuk dukungan SQL nya. Tipe data `UNLOAD` yang didukung oleh dijelaskan dalam[Jenis data yang didukung](supported-data-types.md). `unknown`Jenis `time` dan tidak berlaku untuk`UNLOAD`.

```
UNLOAD (SELECT statement)
 TO 's3://bucket-name/folder'
 WITH ( option = expression [, ...] )
```

di mana opsi adalah

```
{ partitioned_by = ARRAY[ col_name[,…] ] 
 | format = [ '{ CSV | PARQUET }' ] 
 | compression = [ '{ GZIP | NONE }' ]
 | encryption = [ '{ SSE_KMS | SSE_S3 }' ]
 | kms_key = '<string>'
 | field_delimiter ='<character>'
 | escaped_by = '<character>'
 | include_header = ['{true, false}']
 | max_file_size = '<value>'
}
```

SELECT pernyataan  
Pernyataan query yang digunakan untuk memilih dan mengambil data dari satu atau lebih Timestream untuk LiveAnalytics tabel.   

```
(SELECT column 1, column 2, column 3 from database.table
      where measure_name = "ABC" and timestamp between ago (1d) and now() )
```

Klausul TO  

```
TO 's3://bucket-name/folder'
```
atau  

```
TO 's3://access-point-alias/folder'
```
`TO`Klausa dalam `UNLOAD` pernyataan menentukan tujuan untuk output dari hasil query. Anda perlu menyediakan jalur lengkap, termasuk nama ember Amazon S3 atau Amazon S3 dengan lokasi folder di Amazon S3 access-point-alias tempat Timestream untuk menulis objek file output. LiveAnalytics Bucket S3 harus dimiliki oleh akun yang sama dan di wilayah yang sama. Selain set hasil kueri, Timestream untuk LiveAnalytics menulis file manifes dan metadata ke folder tujuan tertentu. 

Klausa PARTITIONED\$1BY  

```
partitioned_by = ARRAY [col_name[,…] , (default: none)
```
`partitioned_by`Klausa ini digunakan dalam kueri untuk mengelompokkan dan menganalisis data pada tingkat granular. Saat mengekspor hasil kueri ke bucket S3, Anda dapat memilih untuk mempartisi data berdasarkan satu atau beberapa kolom dalam kueri pilih. Saat mempartisi data, data yang diekspor dibagi menjadi himpunan bagian berdasarkan kolom partisi dan setiap subset disimpan dalam folder terpisah. Dalam folder hasil yang berisi data yang diekspor, sub-folder dibuat `folder/results/partition column = partition value/` secara otomatis. Namun, perhatikan bahwa kolom yang dipartisi tidak termasuk dalam file output.   
`partitioned_by`bukan klausa wajib dalam sintaks. Jika Anda memilih untuk mengekspor data tanpa partisi apa pun, Anda dapat mengecualikan klausa dalam sintaks.   

**Example**  
Dengan asumsi Anda memantau data clickstream situs web Anda dan memiliki 5 saluran lalu lintas yaitu`direct`,,, `Social Media``Organic Search`, `Other` dan. `Referral` Saat mengekspor data, Anda dapat memilih untuk mempartisi data menggunakan kolom`Channel`. Dalam folder data Anda`s3://bucketname/results`,, Anda akan memiliki lima folder masing-masing dengan nama saluran masing-masing, misalnya, `s3://bucketname/results/channel=Social Media/.` Dalam folder ini Anda akan menemukan data semua pelanggan yang mendarat di situs web Anda melalui `Social Media` saluran. Demikian pula, Anda akan memiliki folder lain untuk saluran yang tersisa.
Data yang diekspor dipartisi oleh kolom Saluran  

![\[Folder structure showing channels: Direct, Organic search, Other, Referral, and Social media.\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/images/unload-results.png)


FORMAT  

```
format = [ '{ CSV | PARQUET }' , default: CSV
```
Kata kunci untuk menentukan format hasil kueri yang ditulis ke bucket S3 Anda. Anda dapat mengekspor data baik sebagai nilai dipisahkan koma (CSV) menggunakan koma (,) sebagai pembatas default atau dalam format Apache Parquet, format penyimpanan kolom terbuka yang efisien untuk analitik. 

KOMPRESI  

```
compression = [ '{ GZIP | NONE }' ], default: GZIP
```
Anda dapat mengompres data yang diekspor menggunakan algoritma kompresi GZIP atau membuatnya tidak dikompresi dengan menentukan opsi. `NONE`

ENKRIPSI  

```
encryption = [ '{ SSE_KMS | SSE_S3 }' ], default: SSE_S3
```
File output di Amazon S3 dienkripsi menggunakan opsi enkripsi yang Anda pilih. Selain data Anda, file manifes dan metadata juga dienkripsi berdasarkan opsi enkripsi yang Anda pilih. Saat ini kami mendukung enkripsi SSE\$1S3 dan SSE\$1KMS. SSE\$1S3 adalah enkripsi sisi server dengan Amazon S3 mengenkripsi data menggunakan enkripsi standar enkripsi canggih (AES) 256-bit. SSE\$1KMS adalah enkripsi sisi server untuk mengenkripsi data menggunakan kunci yang dikelola pelanggan.

KMS\$1KEY  

```
kms_key = '<string>'
```
KMS Key adalah kunci yang ditentukan pelanggan untuk mengenkripsi hasil kueri yang diekspor. KMS Key dikelola dengan aman oleh AWS Key Management Service (AWS KMS) dan digunakan untuk mengenkripsi file data di Amazon S3.

FIELD\$1DELIMITER  

```
field_delimiter ='<character>' , default: (,)
```
Saat mengekspor data dalam format CSV, bidang ini menentukan karakter ASCII tunggal yang digunakan untuk memisahkan bidang dalam file output, seperti karakter pipa (\$1), koma (,), atau tab (/t). Pembatas default untuk file CSV adalah karakter koma. Jika nilai dalam data Anda berisi pembatas yang dipilih, pembatas akan dikutip dengan karakter kutipan. Misalnya, jika nilai dalam data Anda berisi`Time,stream`, maka nilai ini akan dikutip seperti `"Time,stream"` pada data yang diekspor. Karakter kutipan yang digunakan oleh Timestream untuk LiveAnalytics adalah tanda kutip ganda (“).  
Hindari menentukan karakter carriage return (ASCII 13, hex`0D`, text '\$1 r') atau karakter line break (ASCII 10, hex 0A, text'\$1n') `FIELD_DELIMITER` seolah-olah Anda ingin memasukkan header dalam CSV, karena itu akan mencegah banyak parser untuk dapat mengurai header dengan benar dalam output CSV yang dihasilkan.

LOLOS  

```
escaped_by = '<character>', default: (\)
```
Saat mengekspor data dalam format CSV, bidang ini menentukan karakter yang harus diperlakukan sebagai karakter escape dalam file data yang ditulis ke bucket S3. Melarikan diri terjadi dalam skenario berikut:  

1. Jika nilai itu sendiri berisi karakter kutipan (“) maka itu akan diloloskan menggunakan karakter escape. Misalnya, jika nilainya`Time"stream`, di mana (\$1) adalah karakter escape yang dikonfigurasi, maka itu akan lolos sebagai`Time\"stream`. 

1. Jika nilai berisi karakter escape dikonfigurasi, itu akan lolos. Misalnya, jika nilainya`Time\stream`, maka itu akan lolos sebagai`Time\\stream`. 
Jika output yang diekspor berisi tipe data yang kompleks seperti Array, Rows atau Timeseries, itu akan diserialisasi sebagai string JSON. Berikut adalah contohnya.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/supported-sql-constructs.UNLOAD.html)

TERMASUK\$1HEADER  

```
include_header = 'true' , default: 'false'
```
Saat mengekspor data dalam format CSV, bidang ini memungkinkan Anda menyertakan nama kolom sebagai baris pertama file data CSV yang diekspor.  
Nilai yang diterima adalah 'true' dan 'false' dan nilai default adalah 'false'. Opsi transformasi teks seperti `escaped_by` dan `field_delimiter` berlaku untuk header juga.  
Saat menyertakan header, penting bahwa Anda tidak memilih karakter carriage return (ASCII 13, hex 0D, text '\$1 r') atau karakter pemisah baris (ASCII 10, hex 0A, teks'\$1n') sebagai`FIELD_DELIMITER`, karena itu akan mencegah banyak parser untuk dapat mengurai header dengan benar dalam output CSV yang dihasilkan.

MAX\$1FILE\$1SIZE  

```
max_file_size = 'X[MB|GB]' , default: '78GB'
```
Bidang ini menentukan ukuran maksimum file yang dibuat `UNLOAD` pernyataan di Amazon S3. `UNLOAD`Pernyataan tersebut dapat membuat beberapa file tetapi ukuran maksimum setiap file yang ditulis ke Amazon S3 akan kira-kira apa yang ditentukan dalam bidang ini.  
Nilai bidang harus antara 16 MB dan 78 GB, inklusif. Anda dapat menentukannya dalam bilangan bulat seperti`12GB`, atau dalam desimal seperti atau. `0.5GB` `24.7MB` Nilai defaultnya adalah 78 GB.  
Ukuran file sebenarnya diperkirakan saat file sedang ditulis, sehingga ukuran maksimum sebenarnya mungkin tidak persis sama dengan angka yang Anda tentukan.

# Operator logis
<a name="logical-operators"></a>

Timestream untuk LiveAnalytics mendukung operator logis berikut.


| Operator | Deskripsi | Contoh | 
| --- | --- | --- | 
|  DAN  |  Benar jika kedua nilai benar  |  a DAN b  | 
|  ATAU  |  Benar jika salah satu nilai benar  |  a ATAU b  | 
|  BUKAN  |  Benar jika nilainya salah  |  BUKAN  | 
+ Hasil `AND` perbandingan mungkin `NULL` jika salah satu atau kedua sisi ekspresi`NULL`. 
+ Jika setidaknya satu sisi `AND` operator adalah ekspresi `FALSE` yang dievaluasi. `FALSE` 
+ Hasil `OR` perbandingan mungkin `NULL` jika salah satu atau kedua sisi ekspresi`NULL`. 
+ Jika setidaknya satu sisi `OR` operator adalah ekspresi `TRUE` yang dievaluasi. `TRUE` 
+ Pelengkap logis dari `NULL` adalah`NULL`. 

Tabel kebenaran berikut menunjukkan penanganan `NULL` in `AND` dan`OR`:


| A | B | A dan b | A atau b | 
| --- | --- | --- | --- | 
|  null  |  null  |  null  |  nol  | 
|  false   |  null  |  false  |  null  | 
|  nol  |  false  |  false  |  null  | 
|  true  |  null  |  nol  |  true  | 
|  null  |  true  |  null  |  true  | 
|  SALAH  |  false  |  false  |  SALAH  | 
|  BETUL  |  SALAH  |  SALAH  |  BETUL  | 
|  SALAH  |  BETUL  |  SALAH  |  true  | 
|  true  |  true  |  true  |  true  | 

Tabel kebenaran berikut menunjukkan penanganan NULL di NOT:


| A | Bukan | 
| --- | --- | 
|  null  |  nol  | 
|  true  |  SALAH  | 
|  SALAH  |  true  | 

# Operator perbandingan
<a name="comparison-operators"></a>

Timestream untuk LiveAnalytics mendukung operator perbandingan berikut.


| Operator | Deskripsi | 
| --- | --- | 
|  <  |  Kurang dari  | 
|  >  |  Lebih besar dari  | 
|  <=  |  Kurang dari atau sama dengan  | 
|  >=  |  Lebih besar dari atau sama dengan  | 
|  =  |  Sama  | 
|  <>  |  Tidak sama  | 
|  \$1=  |  Tidak sama  | 

**catatan**  
`BETWEEN`Operator menguji apakah nilai berada dalam rentang yang ditentukan. Sintaksnya adalah sebagai berikut:  

  ```
  BETWEEN min AND max
  ```
Kehadiran `NULL` dalam `NOT BETWEEN` pernyataan `BETWEEN` atau akan menghasilkan pernyataan yang dievaluasi. `NULL`
`IS NULL `dan `IS NOT NULL` operator menguji apakah suatu nilai adalah null (undefined). Menggunakan `NULL` dengan `IS NULL` evaluasi menjadi benar.
Dalam SQL, `NULL` nilai menandakan nilai yang tidak diketahui.

# Fungsi perbandingan
<a name="comparison-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi perbandingan berikut.

**Topics**
+ [terbesar ()](comparison-functions.greatest.md)
+ [paling sedikit ()](comparison-functions.least.md)
+ [ALL (), ANY () dan BEBERAPA ()](comparison-functions.all-any-some.md)

# terbesar ()
<a name="comparison-functions.greatest"></a>

Fungsi **greatest ()** mengembalikan nilai terbesar dari nilai yang disediakan. Ia kembali `NULL` jika salah satu nilai yang disediakan`NULL`. Sintaksnya adalah sebagai berikut.

```
greatest(value1, value2, ..., valueN) 
```

# paling sedikit ()
<a name="comparison-functions.least"></a>

Fungsi **least ()** mengembalikan terkecil dari nilai yang disediakan. Ia kembali `NULL` jika salah satu nilai yang disediakan`NULL`. Sintaksnya adalah sebagai berikut.

```
least(value1, value2, ..., valueN) 
```

# ALL (), ANY () dan BEBERAPA ()
<a name="comparison-functions.all-any-some"></a>

The`ALL`, `ANY` dan `SOME` quantifiers dapat digunakan bersama dengan operator perbandingan dengan cara berikut.


| Ekspresi | Arti | 
| --- | --- | 
|  A = SEMUA (...)  |  Mengevaluasi ke true ketika A sama dengan semua nilai.  | 
|  A <> SEMUA (...)  |  Mengevaluasi ke true ketika A tidak cocok dengan nilai apa pun.  | 
|  A < SEMUA (...)  |  Mengevaluasi ke true ketika A lebih kecil dari nilai terkecil.  | 
|  A = APAPUN (...)  |  Mengevaluasi ke true ketika A sama dengan salah satu nilai.   | 
|  A <> APAPUN (...)  |  Mengevaluasi ke true ketika A tidak cocok dengan satu atau lebih nilai.  | 
|  A < APAPUN (...)  |  Mengevaluasi ke true ketika A lebih kecil dari nilai terbesar.  | 

## Contoh dan catatan penggunaan
<a name="comparison-functions.all-any-some.examples-usage"></a>

**catatan**  
Saat menggunakan `ALL``SOME`, `ANY` atau, kata kunci `VALUES` harus digunakan jika nilai perbandingan adalah daftar literal. 

## Contoh: `ANY()`
<a name="w2aab7c59c21c11c11"></a>

Contoh `ANY()` dalam pernyataan query sebagai berikut.

```
SELECT 11.7 = ANY (VALUES 12.0, 13.5, 11.7)
```

Sintaks alternatif untuk operasi yang sama adalah sebagai berikut.

```
SELECT 11.7 = ANY (SELECT 12.0 UNION ALL SELECT 13.5 UNION ALL SELECT 11.7)
```

Dalam hal ini, `ANY()` evaluasi untuk`True`.

## Contoh: `ALL()`
<a name="w2aab7c59c21c11c13"></a>

Contoh `ALL()` dalam pernyataan query sebagai berikut.

```
SELECT 17 < ALL (VALUES 19, 20, 15);
```

Sintaks alternatif untuk operasi yang sama adalah sebagai berikut.

```
SELECT 17 < ALL (SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 15);
```

Dalam hal ini, `ALL()` evaluasi untuk`False`.

## Contoh: `SOME()`
<a name="w2aab7c59c21c11c15"></a>

Contoh `SOME()` dalam pernyataan query sebagai berikut.

```
SELECT 50 >= SOME (VALUES 53, 77, 27);
```

Sintaks alternatif untuk operasi yang sama adalah sebagai berikut.

```
SELECT 50 >= SOME (SELECT 53 UNION ALL SELECT 77 UNION ALL SELECT 27);
```

Dalam hal ini, `SOME()` evaluasi untuk`True`.

# Ekspresi bersyarat
<a name="conditional-expressions"></a>

Timestream untuk LiveAnalytics mendukung ekspresi kondisional berikut.

**Topics**
+ [Pernyataan CASE](conditional-expressions.CASE.md)
+ [Pernyataan IF](conditional-expressions.IF.md)
+ [Pernyataan COALESCE](conditional-expressions.COALESCE.md)
+ [Pernyataan NULLIF](conditional-expressions.NULLIF.md)
+ [Pernyataan TRY](conditional-expressions.TRY.md)

# Pernyataan CASE
<a name="conditional-expressions.CASE"></a>

Pernyataan **CASE** mencari setiap ekspresi nilai dari kiri ke kanan sampai menemukan satu yang sama`expression`. Jika menemukan kecocokan, hasil untuk nilai yang cocok dikembalikan. Jika tidak ada kecocokan yang ditemukan, hasil dari `ELSE` klausa dikembalikan jika ada; jika tidak `null` dikembalikan. Sintaksnya adalah sebagai berikut:

```
CASE expression
    WHEN value THEN result
    [ WHEN ... ]
    [ ELSE result ]
END
```

 Timestream juga mendukung sintaks berikut untuk pernyataan **CASE**. Dalam sintaks ini, formulir “dicari” mengevaluasi setiap kondisi boolean dari kiri ke kanan sampai salah satunya `true` dan mengembalikan hasil yang cocok. Jika tidak ada kondisi`true`, hasil dari `ELSE` klausa dikembalikan jika ada; jika tidak `null` dikembalikan. Lihat di bawah untuk sintaks alternatif: 

```
CASE
    WHEN condition THEN result
    [ WHEN ... ]
    [ ELSE result ]
END
```

# Pernyataan IF
<a name="conditional-expressions.IF"></a>

Pernyataan **IF** mengevaluasi kondisi menjadi benar atau salah dan mengembalikan nilai yang sesuai. **Timestream mendukung dua representasi sintaks berikut untuk IF:**

```
if(condition, true_value)
```

Sintaks ini mengevaluasi dan mengembalikan `true_value` jika kondisi adalah`true`; jika tidak `null` dikembalikan dan tidak `true_value` dievaluasi.

```
if(condition, true_value, false_value)
```

Sintaks ini mengevaluasi dan mengembalikan `true_value` jika kondisi`true`, jika tidak mengevaluasi dan mengembalikan. `false_value`

## Contoh
<a name="conditional-expressions.IF.examples"></a>

```
SELECT
  if(true, 'example 1'),
  if(false, 'example 2'),
  if(true, 'example 3 true', 'example 3 false'),
  if(false, 'example 4 true', 'example 4 false')
```


| \$1col0 | \$1col1 | \$1col2 | \$1col3 | 
| --- | --- | --- | --- | 
|  `example 1`  |  `-` `null`  |  `example 3 true`  |  `example 4 false`  | 

# Pernyataan COALESCE
<a name="conditional-expressions.COALESCE"></a>

 **COALESCE** mengembalikan nilai non-null pertama dalam daftar argumen. Sintaksnya adalah sebagai berikut:

```
coalesce(value1, value2[,...])
```

# Pernyataan NULLIF
<a name="conditional-expressions.NULLIF"></a>

Pernyataan **IF** mengevaluasi kondisi menjadi benar atau salah dan mengembalikan nilai yang sesuai. **Timestream mendukung dua representasi sintaks berikut untuk IF:**

**NULLIF** mengembalikan null jika `value1` sama`value2`; jika tidak maka kembali. `value1` Sintaksnya adalah sebagai berikut:

```
nullif(value1, value2)
```

# Pernyataan TRY
<a name="conditional-expressions.TRY"></a>

Fungsi **TRY** mengevaluasi ekspresi dan menangani jenis kesalahan tertentu dengan mengembalikan`null`. Sintaksnya adalah sebagai berikut:

```
try(expression)
```

# Fungsi konversi
<a name="conversion-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi konversi berikut.

**Topics**
+ [pemeran ()](#conversion-functions.cast)
+ [try\$1cast ()](#conversion-functions.try-cast)

## pemeran ()
<a name="conversion-functions.cast"></a>

 Sintaks fungsi cast untuk secara eksplisit memberikan nilai sebagai tipe adalah sebagai berikut.

```
cast(value AS type)
```

## try\$1cast ()
<a name="conversion-functions.try-cast"></a>

Timestream for LiveAnalytics juga mendukung fungsi try\$1cast yang mirip dengan cast tetapi mengembalikan null jika cast gagal. Sintaksnya adalah sebagai berikut.

```
try_cast(value AS type)
```

# Operator matematika
<a name="mathematical-operators"></a>

Timestream untuk LiveAnalytics mendukung operator matematika berikut.


| Operator | Deskripsi | 
| --- | --- | 
|  \$1  |  Penambahan  | 
|  -  |  Pengurangan  | 
|  \$1  |  Perkalian  | 
|  /  |  Pembagian (pembagian bilangan bulat melakukan pemotongan)  | 
|  %  |  Modulus (sisa)  | 

# Fungsi matematika
<a name="mathematical-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi matematika berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  perut (x)  |  [sama seperti masukan]  |  Mengembalikan nilai absolut x.  | 
|  cbrt (x)  |  double  |  Mengembalikan akar kubus dari x.  | 
|  langit-langit (x) atau ceil (x)  |  [sama seperti masukan]  |  Mengembalikan x dibulatkan ke integer terdekat.  | 
|  derajat (x)  |  double  |  Mengubah sudut x dalam radian ke derajat.  | 
|  e ()  |  double  |  Mengembalikan nomor Euler konstan ini.  | 
|  exp (x)  |  double  |  Mengembalikan nomor Euler dinaikkan ke kekuatan x.  | 
|  lantai (x)  |  [sama seperti masukan]  |  Mengembalikan x dibulatkan ke bawah ke integer terdekat.  | 
|  from\$1base (string, radix)  |  bigint  |  Mengembalikan nilai string ditafsirkan sebagai nomor basis-radix.  | 
|  ln (x)  |  double  |  Mengembalikan logaritma natural dari x.  | 
|  log2 (x)  |  double  |  Mengembalikan basis 2 logaritma x.  | 
|  log10 (x)  |  double  |  Mengembalikan basis 10 logaritma x.  | 
|  mod (n, m)   |  [sama seperti masukan]  |  Mengembalikan modulus (sisa) dari n dibagi dengan m.  | 
|  pi ()   |  double  |  Mengembalikan Pi konstan.  | 
|  pow (x, p) atau daya (x, p)  |  double  |  Mengembalikan x dinaikkan ke kekuatan p.  | 
|  radian (x)  |  double  |  Mengubah sudut x dalam derajat menjadi radian.  | 
|  rand () atau acak ()  |  double  |  Mengembalikan nilai pseudo-acak dalam kisaran 0.0 1.0.  | 
|  acak (n)  |  [sama seperti masukan]  |  Mengembalikan nomor pseudo-acak antara 0 dan n (eksklusif).  | 
|  bulat (x)  |  [sama seperti masukan]  |  Mengembalikan x dibulatkan ke integer terdekat.  | 
|  bulat (x, d)  |  [sama seperti masukan]  |  Mengembalikan x dibulatkan ke tempat desimal d.  | 
|  tanda (x)  |  [sama seperti masukan]  |  Mengembalikan fungsi signum dari x, yaitu: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/mathematical-functions.html) Untuk argumen ganda, fungsi ini juga mengembalikan: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/timestream/latest/developerguide/mathematical-functions.html)  | 
|  persegi (x)   |  double  |  Mengembalikan akar kuadrat dari x.  | 
|  to\$1base (x, radix)   |  varchar  |  Mengembalikan representasi basis-radix x.  | 
|  memotong (x)   |  double  |  Mengembalikan x dibulatkan ke integer dengan menjatuhkan digit setelah titik desimal.  | 
|  acos (x)  |  double  |  Mengembalikan arc cosinus x.  | 
|  asin (x)   |  double  |  Mengembalikan sinus busur x.  | 
|  tan (x)   |  double  |  Mengembalikan tangen busur dari x.  | 
|  atan2 (y, x)  |  double  |  Mengembalikan tangen busur dari y/x.  | 
|  cos (x)  |  double  |  Mengembalikan cosinus x.  | 
|  cosh (x)  |  double  |  Mengembalikan kosinus hiperbolik x.  | 
|  dosa (x)   |  double  |  Mengembalikan sinus dari x.  | 
|  tan (x)  |  double  |  Mengembalikan garis singgung x.  | 
|  tanh (x)  |  double  |  Mengembalikan tangen hiperbolik x.  | 
|  tak terhingga ()  |  double  |  Mengembalikan konstanta yang mewakili tak terhingga positif.  | 
|  adalah\$1terbatas (x)  |  boolean  |  Tentukan apakah x terbatas.  | 
|  adalah\$1tak terbatas (x)  |  boolean  |  Tentukan apakah x tidak terbatas.  | 
|  is\$1nan (x)  |  boolean  |  Tentukan apakah x adalah not-a-number.  | 
|  nan ()  |  double  |  Mengembalikan konstanta mewakili not-a-number.  | 

# Operator String
<a name="string-operators"></a>

Timestream untuk LiveAnalytics mendukung `||` operator untuk menggabungkan satu atau lebih string.

# Fungsi string
<a name="string-functions"></a>

**catatan**  
Tipe data input dari fungsi-fungsi ini diasumsikan varchar kecuali ditentukan lain.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  chr (n)   |  varchar  |  Mengembalikan kode Unicode titik n sebagai varchar.  | 
|  titik kode (x)   |  integer  |  Mengembalikan titik kode Unicode dari satu-satunya karakter str.  | 
|  concat (x1,..., xN)  |  varchar  |  Mengembalikan rangkaian x1, x2,..., xN.  | 
|  hamming\$1jarak (x1, x2)   |  bigint  |  Mengembalikan jarak Hamming x1 dan x2, yaitu jumlah posisi di mana karakter yang sesuai berbeda. Perhatikan bahwa dua input varchar harus memiliki panjang yang sama.  | 
|  panjang (x)  |  bigint  |  Mengembalikan panjang x dalam karakter.  | 
|  levenshtein\$1distance (x1, x2)   |  bigint  |  Mengembalikan jarak edit Levenshtein x1 dan x2, yaitu jumlah minimum suntingan karakter tunggal (penyisipan, penghapusan atau substitusi) yang diperlukan untuk mengubah x1 menjadi x2.  | 
|  lebih rendah (x)  |  varchar  |  Mengkonversi x ke huruf kecil.  | 
|  lpad (x1, ukuran besar, x2)  |  varchar  |  Bantalan kiri x1 untuk ukuran karakter dengan x2. Jika ukuran kurang dari panjang x1, hasilnya dipotong menjadi karakter ukuran. ukuran tidak boleh negatif dan x2 harus tidak kosong.  | 
|  ltrim (x)  |  varchar  |  Menghapus spasi utama dari x.  | 
|  ganti (x1, x2)  |  varchar  |  Menghapus semua contoh x2 dari x1.  | 
|  ganti (x1, x2, x3)  |  varchar  |  Mengganti semua instance x2 dengan x3 di x1.  | 
|  Membalikkan (x)   |  varchar  |  Mengembalikan x dengan karakter dalam urutan terbalik.  | 
|  rpad (x1, ukuran besar, x2)  |  varchar  |  Bantalan kanan x1 untuk ukuran karakter dengan x2. Jika ukuran kurang dari panjang x1, hasilnya dipotong menjadi karakter ukuran. ukuran tidak boleh negatif dan x2 harus tidak kosong.  | 
|  rtrim (x)  |  varchar  |  Menghapus spasi belakang dari x.  | 
|  terbelah (x1, x2)  |  array (varchar)  |  Membagi x1 pada pembatas x2 dan mengembalikan array.  | 
|  split (x1, x2, batas besar)  |  array (varchar)  |  Membagi x1 pada pembatas x2 dan mengembalikan array. Elemen terakhir dalam array selalu berisi semua yang tersisa di x1. batas harus berupa angka positif.  | 
|  split\$1part (x1, x2, pos kecil)   |  varchar  |  Membagi x1 pada pembatas x2 dan mengembalikan bidang varchar di pos. Indeks lapangan dimulai dengan 1. Jika pos lebih besar dari jumlah bidang, maka null dikembalikan.  | 
|  strpos (x1, x2)   |  bigint  |  Mengembalikan posisi awal dari contoh pertama x2 di x1. Posisi dimulai dengan 1. Jika tidak ditemukan, 0 dikembalikan.  | 
|  strpos (x1, x2, contoh bigint)   |  bigint  |  Mengembalikan posisi instance Nth dari x2 dalam x1. Contoh harus berupa angka positif. Posisi dimulai dengan 1. Jika tidak ditemukan, 0 dikembalikan.  | 
|  strrpos (x1, x2)   |  bigint  |  Mengembalikan posisi awal dari contoh terakhir dari x2 di x1. Posisi dimulai dengan 1. Jika tidak ditemukan, 0 dikembalikan.  | 
|  strrpos (x1, x2, contoh bigint)   |  bigint  |  Mengembalikan posisi instance Nth dari x2 di x1 mulai dari akhir x1. misalnya harus angka positif. Posisi dimulai dengan 1. Jika tidak ditemukan, 0 dikembalikan.  | 
|  posisi (x2 IN x1)   |  bigint  |  Mengembalikan posisi awal dari contoh pertama x2 di x1. Posisi dimulai dengan 1. Jika tidak ditemukan, 0 dikembalikan.  | 
|  substr (x, awal kecil)   |  varchar  |  Mengembalikan sisa x dari awal posisi awal. Posisi dimulai dengan 1. Posisi awal negatif ditafsirkan sebagai relatif terhadap akhir x.  | 
|  substr (x, awal kecil, besar len)   |  varchar  |  Mengembalikan substring dari x panjang len dari awal posisi awal. Posisi dimulai dengan 1. Posisi awal negatif ditafsirkan sebagai relatif terhadap akhir x.  | 
|  memangkas (x)   |  varchar  |  Menghapus spasi putih depan dan belakang dari x.  | 
|  atas (x)   |  varchar  |  Mengkonversi x ke huruf besar.  | 

# Operator array
<a name="array-operators"></a>

Timestream untuk LiveAnalytics mendukung operator array berikut.


| Operator | Deskripsi | 
| --- | --- | 
|  []  |  Akses elemen array di mana indeks pertama dimulai pada 1.  | 
|  \$1\$1  |  Menggabungkan array dengan array lain atau elemen dari jenis yang sama.  | 

# Fungsi array
<a name="array-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi array berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  array\$1distinct (x)  |  array  |  Hapus nilai duplikat dari array x. <pre>SELECT array_distinct(ARRAY[1,2,2,3])</pre> Contoh hasil: `[ 1,2,3 ]`  | 
|  array\$1berpotongan (x, y)  |  array  |  Mengembalikan array elemen di persimpangan x dan y, tanpa duplikat. <pre>SELECT array_intersect(ARRAY[1,2,3], ARRAY[3,4,5])</pre> Contoh hasil: `[ 3 ]`  | 
|  array\$1union (x, y)  |  array  |  Mengembalikan array elemen dalam penyatuan x dan y, tanpa duplikat. <pre>SELECT array_union(ARRAY[1,2,3], ARRAY[3,4,5])</pre> Contoh hasil: `[ 1,2,3,4,5 ]`  | 
|  array\$1kecuali (x, y)  |  array  |  Mengembalikan array elemen dalam x tetapi tidak di y, tanpa duplikat. <pre>SELECT array_except(ARRAY[1,2,3], ARRAY[3,4,5])</pre> Contoh hasil: `[ 1,2 ]`  | 
|  array\$1join (x, pembatas, null\$1replacement)   |  varchar  |  Menggabungkan elemen-elemen dari array yang diberikan menggunakan pembatas dan string opsional untuk menggantikan nol. <pre>SELECT array_join(ARRAY[1,2,3], ';', '')</pre> Contoh hasil: `1;2;3`  | 
|  array\$1maks (x)  |  sama seperti elemen array  |  Mengembalikan nilai maksimum array input. <pre>SELECT array_max(ARRAY[1,2,3])</pre> Contoh hasil: `3`  | 
|  array\$1min (x)  |  sama seperti elemen array  |  Mengembalikan nilai minimum array input. <pre>SELECT array_min(ARRAY[1,2,3])</pre> Contoh hasil: `1`  | 
|  array\$1position (x, elemen)  |  bigint  |  Mengembalikan posisi kemunculan pertama dari elemen dalam array x (atau 0 jika tidak ditemukan). <pre>SELECT array_position(ARRAY[3,4,5,9], 5)</pre> Contoh hasil: `3`  | 
|  array\$1remove (x, elemen)  |  array  |  Hapus semua elemen yang sama elemen dari array x. <pre>SELECT array_remove(ARRAY[3,4,5,9], 4)</pre> Contoh hasil: `[ 3,5,9 ]`  | 
|  array\$1sort (x)  |  array  |  Mengurutkan dan mengembalikan array x. Unsur-unsur x harus dapat diurutkan. Elemen null akan ditempatkan di akhir array dikembalikan. <pre>SELECT array_sort(ARRAY[6,8,2,9,3])</pre> Contoh hasil: `[ 2,3,6,8,9 ]`  | 
|  arrays\$1tumpang tindih (x, y)   |  boolean  |  Menguji apakah array x dan y memiliki elemen non-null yang sama. Mengembalikan null jika tidak ada elemen non-null yang sama tetapi salah satu array berisi null. <pre>SELECT arrays_overlap(ARRAY[6,8,2,9,3], ARRAY[6,8])</pre> Contoh hasil: `true`  | 
|  kardinalitas (x)  |  bigint  |  Mengembalikan ukuran array x. <pre>SELECT cardinality(ARRAY[6,8,2,9,3])</pre> Contoh hasil: `5`  | 
|  concat (array1, array2,..., ArrayN)  |  array  |  Menggabungkan array array1, array2,..., ArrayN. <pre>SELECT concat(ARRAY[6,8,2,9,3], ARRAY[11,32], ARRAY[6,8,2,0,14])</pre> Contoh hasil: `[ 6,8,2,9,3,11,32,6,8,2,0,14 ]`  | 
|  element\$1at (array (E), indeks)  |  E  |  Mengembalikan elemen array pada indeks yang diberikan. Jika indeks < 0, element\$1at mengakses elemen dari yang terakhir ke yang pertama. <pre>SELECT element_at(ARRAY[6,8,2,9,3], 1)</pre> Contoh hasil: `6`  | 
|  ulangi (elemen, hitung)   |  array  |  Ulangi elemen untuk menghitung waktu. <pre>SELECT repeat(1, 3)</pre> Contoh hasil: `[ 1,1,1 ]`  | 
|  terbalik (x)  |  array  |  Mengembalikan array yang memiliki urutan terbalik array x. <pre>SELECT reverse(ARRAY[6,8,2,9,3])</pre> Contoh hasil: `[ 3,9,2,8,6 ]`  | 
|  urutan (mulai, berhenti)  |  array (kecil)  |  Hasilkan urutan bilangan bulat dari awal hingga berhenti, bertambah 1 jika start kurang dari atau sama dengan berhenti, jika tidak -1. <pre>SELECT sequence(3, 8)</pre> Contoh hasil: `[ 3,4,5,6,7,8 ]`  | 
|  urutan (mulai, berhenti, langkah)   |  array (kecil)  |  Hasilkan urutan bilangan bulat dari awal hingga berhenti, bertambah demi langkah. <pre>SELECT sequence(3, 15, 2)</pre> Contoh hasil: `[ 3,5,7,9,11,13,15 ]`  | 
|  urutan (mulai, berhenti)   |  array (stempel waktu)  |  Hasilkan urutan stempel waktu dari tanggal mulai hingga tanggal berhenti, bertambah 1 hari. <pre>SELECT sequence('2023-04-02 19:26:12.941000000', '2023-04-06 19:26:12.941000000', 1d)</pre> Contoh hasil: `[ 2023-04-02 19:26:12.941000000,2023-04-03 19:26:12.941000000,2023-04-04 19:26:12.941000000,2023-04-05 19:26:12.941000000,2023-04-06 19:26:12.941000000 ]`  | 
|  urutan (mulai, berhenti, langkah)   |  array (stempel waktu)  |  Hasilkan urutan stempel waktu dari awal hingga berhenti, bertambah demi langkah. Tipe data langkah adalah interval. <pre>SELECT sequence('2023-04-02 19:26:12.941000000', '2023-04-10 19:26:12.941000000', 2d)</pre> Contoh hasil: `[ 2023-04-02 19:26:12.941000000,2023-04-04 19:26:12.941000000,2023-04-06 19:26:12.941000000,2023-04-08 19:26:12.941000000,2023-04-10 19:26:12.941000000 ]`  | 
|  kocokan (x)  |  array  |  Hasilkan permutasi acak dari array x yang diberikan. <pre>SELECT shuffle(ARRAY[6,8,2,9,3])</pre> Contoh hasil: `[ 6,3,2,9,8 ]`  | 
|  irisan (x, mulai, panjang)  |  array  |  Subset array x dimulai dari indeks awal (atau mulai dari akhir jika start negatif) dengan panjang panjang. <pre>SELECT slice(ARRAY[6,8,2,9,3], 1, 3)</pre> Contoh hasil: `[ 6,8,2 ]`  | 
|  zip (array1, array2 [,...])  |  array (baris)  |  Menggabungkan array yang diberikan, dari segi elemen, ke dalam satu array baris. Jika argumen memiliki panjang yang tidak rata, nilai yang hilang diisi dengan NULL. <pre>SELECT zip(ARRAY[6,8,2,9,3], ARRAY[15,24])</pre> Contoh hasil: `[ ( 6, 15 ),( 8, 24 ),( 2, - ),( 9, - ),( 3, - ) ]`  | 

# Fungsi bitwise
<a name="bitwise-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi bitwise berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
| bit\$1count (kecil, kecil) | bigint (pelengkap dua) |  Mengembalikan jumlah bit dalam parameter bigint pertama di mana parameter kedua adalah integer bertanda bit seperti 8 atau 64. <pre>SELECT bit_count(19, 8)</pre> Contoh hasil: `3` <pre>SELECT bit_count(19, 2)</pre> Contoh hasil: `Number must be representable with the bits specified. 19 can not be represented with 2 bits`   | 
| bitwise\$1and (kecil, kecil) | bigint (pelengkap dua) |  Mengembalikan bitwise AND dari parameter bigint. <pre>SELECT bitwise_and(12, 7)</pre> Contoh hasil: `4`  | 
| bitwise\$1not (kecil) | bigint (pelengkap dua) |  Mengembalikan bitwise BUKAN dari parameter bigint. <pre>SELECT bitwise_not(12)</pre> Contoh hasil: `-13`  | 
| bitwise\$1or (kecil, kecil) | bigint (pelengkap dua) |  Mengembalikan bitwise OR dari parameter bigint. <pre>SELECT bitwise_or(12, 7)</pre> Contoh hasil: `15`  | 
| bitwise\$1xor (kecil, kecil) | bigint (pelengkap dua) |  Mengembalikan XOR bitwise dari parameter bigint. <pre>SELECT bitwise_xor(12, 7)</pre> Contoh hasil: `11`  | 

# Fungsi ekspresi reguler
<a name="regex-functions"></a>

Fungsi ekspresi reguler di Timestream untuk LiveAnalytics mendukung [sintaks pola Java](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html). Timestream untuk LiveAnalytics mendukung fungsi ekspresi reguler berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  regexp\$1extract\$1all (string, pola)  |  array (varchar)  |  Mengembalikan substring (s) cocok dengan pola ekspresi reguler dalam string. <pre>SELECT regexp_extract_all('example expect complex', 'ex\w')</pre> Contoh hasil: `[ exa,exp ]`  | 
|  regexp\$1extract\$1all (string, pola, grup)  |  array (varchar)  |  Menemukan semua kemunculan pola ekspresi reguler dalam string dan mengembalikan [kelompok nomor grup menangkap](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#gnumber). <pre>SELECT regexp_extract_all('example expect complex', '(ex)(\w)', 2)</pre> Contoh hasil: `[ a,p ]`  | 
|  regexp\$1extract (string, pola)  |  varchar  |  Mengembalikan substring pertama cocok dengan pola ekspresi reguler dalam string. <pre>SELECT regexp_extract('example expect', 'ex\w')</pre> Contoh hasil: `exa`  | 
|  regexp\$1extract (string, pola, grup)   |  varchar  |  Menemukan kemunculan pertama dari pola ekspresi reguler dalam string dan mengembalikan [kelompok nomor grup menangkap](http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#gnumber). <pre>SELECT regexp_extract('example expect', '(ex)(\w)', 2)</pre> Contoh hasil: `a`  | 
|  regexp\$1like (string, pola)   |  boolean  |  Mengevaluasi pola ekspresi reguler dan menentukan apakah itu terkandung dalam string. Fungsi ini mirip dengan operator LIKE, kecuali bahwa pola hanya perlu terkandung dalam string, daripada perlu mencocokkan semua string. Dengan kata lain, ini melakukan operasi berisi daripada operasi pertandingan. Anda dapat mencocokkan seluruh string dengan menambatkan pola menggunakan ^ dan \$1. <pre>SELECT regexp_like('example', 'ex')</pre> Contoh hasil: `true`  | 
|  regexp\$1replace (string, pola)  |  varchar  |  Menghapus setiap instance substring yang cocok dengan pola ekspresi reguler dari string. <pre>SELECT regexp_replace('example expect', 'expect')</pre> Contoh hasil: `example`  | 
|  regexp\$1replace (string, pola, penggantian)   |  varchar  |  Mengganti setiap instance substring yang dicocokkan dengan pola regex dalam string dengan penggantian. Grup penangkapan dapat direferensikan sebagai pengganti menggunakan \$1g untuk grup bernomor atau \$1 \$1name\$1 untuk grup bernama. Tanda dolar (\$1) dapat dimasukkan dalam penggantian dengan melarikan diri dengan garis miring terbalik (\$1 \$1). <pre>SELECT regexp_replace('example expect', 'expect', 'surprise')</pre> Contoh hasil: `example surprise`  | 
|  regexp\$1replace (string, pola, fungsi)   |  varchar  |  Menggantikan setiap instance substring yang cocok dengan pola ekspresi reguler dalam string menggunakan fungsi. Fungsi [ekspresi lambda](https://prestodb.io/docs/current/functions/lambda.html) dipanggil untuk setiap kecocokan dengan grup penangkap yang diteruskan sebagai array. Menangkap nomor grup dimulai dari satu; tidak ada grup untuk seluruh pertandingan (jika Anda membutuhkan ini, kelilingi seluruh ekspresi dengan tanda kurung). <pre>SELECT regexp_replace('example', '(\w)', x -> upper(x[1]))</pre> Contoh hasil: `EXAMPLE`  | 
|  regexp\$1split (string, pola)   |  array (varchar)  |  Membagi string menggunakan pola ekspresi reguler dan mengembalikan array. String kosong yang tertinggal dipertahankan. <pre>SELECT regexp_split('example', 'x')</pre> Contoh hasil: `[ e,ample ]`  | 

# Operator tanggal/waktu
<a name="date-time-operators"></a>

**catatan**  
Timestream for LiveAnalytics tidak mendukung nilai waktu negatif. Setiap operasi yang mengakibatkan waktu negatif menghasilkan kesalahan.

Timestream untuk LiveAnalytics mendukung operasi berikut pada`timestamps`,`dates`, dan`intervals`.


| Operator | Deskripsi | 
| --- | --- | 
|  \$1  |  Penambahan  | 
|  -  |  Pengurangan  | 

**Topics**
+ [Operasi](#date-time-operators-operations)
+ [Penambahan](#date-time-operators-addition)
+ [Pengurangan](#date-time-operators-subtraction)

## Operasi
<a name="date-time-operators-operations"></a>

Jenis hasil operasi didasarkan pada operan. Interval literal seperti `1day` dan `3s` dapat digunakan.

```
SELECT date '2022-05-21' + interval '2' day
```

```
SELECT date '2022-05-21' + 2d
```

```
SELECT date '2022-05-21' + 2day
```

Contoh hasil untuk masing-masing: `2022-05-23`

Unit interval meliputi`second`,`minute`,`hour`,`day`,`week`,`month`, dan`year`. Tetapi dalam beberapa kasus tidak semua berlaku. Misalnya detik, menit, dan jam tidak dapat ditambahkan atau dikurangi dari tanggal.

```
SELECT interval '4' year + interval '2' month
```

Contoh hasil: `4-2`

```
SELECT typeof(interval '4' year + interval '2' month)
```

Contoh hasil: `interval year to month`

Jenis hasil operasi interval mungkin `'interval year to month'` atau `'interval day to second'` tergantung pada operan. Interval dapat ditambahkan atau dikurangi dari `dates` dan. `timestamps` Tetapi a `date` atau `timestamp` tidak dapat ditambahkan atau dikurangi dari atau. `date` `timestamp` Untuk menemukan interval atau durasi yang terkait dengan tanggal atau stempel waktu, lihat `date_diff` dan fungsi terkait di. [Interval dan durasi](date-time-functions.md#date-time-functions-interval-duration)

## Penambahan
<a name="date-time-operators-addition"></a>

**Example**  

```
SELECT date '2022-05-21' + interval '2' day
```
Contoh hasil: `2022-05-23`

**Example**  

```
SELECT typeof(date '2022-05-21' + interval '2' day)
```
Contoh hasil: `date`

**Example**  

```
SELECT interval '2' year + interval '4' month
```
Contoh hasil: `2-4`

**Example**  

```
SELECT typeof(interval '2' year + interval '4' month)
```
Contoh hasil: `interval year to month`

## Pengurangan
<a name="date-time-operators-subtraction"></a>

**Example**  

```
SELECT timestamp '2022-06-17 01:00' - interval '7' hour
```
Contoh hasil: `2022-06-16 18:00:00.000000000`

**Example**  

```
SELECT typeof(timestamp '2022-06-17 01:00' - interval '7' hour)
```
Contoh hasil: `timestamp`

**Example**  

```
SELECT interval '6' day - interval '4' hour
```
Contoh hasil: `5 20:00:00.000000000`

**Example**  

```
SELECT typeof(interval '6' day - interval '4' hour)
```
Contoh hasil: `interval day to second`

# Fungsi tanggal/waktu
<a name="date-time-functions"></a>

**catatan**  
Timestream for LiveAnalytics tidak mendukung nilai waktu negatif. Setiap operasi yang mengakibatkan waktu negatif menghasilkan kesalahan.

Timestream untuk LiveAnalytics menggunakan zona waktu UTC untuk tanggal dan waktu. Timestream mendukung fungsi-fungsi berikut untuk tanggal dan waktu.

**Topics**
+ [Umum dan konversi](#date-time-functions-general)
+ [Interval dan durasi](#date-time-functions-interval-duration)
+ [Memformat dan mengurai](#date-time-functions-formatting-parsing)
+ [Ekstraksi](#date-time-functions-extraction)

## Umum dan konversi
<a name="date-time-functions-general"></a>

Timestream untuk LiveAnalytics mendukung fungsi umum dan konversi berikut untuk tanggal dan waktu.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  current\$1date  |  date  |  Mengembalikan tanggal saat ini di UTC. Tidak ada tanda kurung yang digunakan. <pre>SELECT current_date</pre> Contoh hasil: `2022-07-07`  Ini juga merupakan kata kunci yang dicadangkan. Untuk daftar kata kunci yang dicadangkan, lihat[Kata kunci terpesan](ts-limits.md#limits.reserved).   | 
|  current\$1time  |  Waktu  |  Mengembalikan waktu saat ini di UTC. Tidak ada tanda kurung yang digunakan. <pre>SELECT current_time</pre> Contoh hasil: `17:41:52.827000000`  Ini juga merupakan kata kunci yang dicadangkan. Untuk daftar kata kunci yang dicadangkan, lihat[Kata kunci terpesan](ts-limits.md#limits.reserved).   | 
|  current\$1timestamp atau now ()  |  timestamp  |  Mengembalikan stempel waktu saat ini di UTC. <pre>SELECT current_timestamp</pre> Contoh hasil: `2022-07-07 17:42:32.939000000`  Ini juga merupakan kata kunci yang dicadangkan. Untuk daftar kata kunci yang dicadangkan, lihat[Kata kunci terpesan](ts-limits.md#limits.reserved).   | 
|  current\$1timezone ()  |  varchar Nilainya akan menjadi 'UTC.'  |  Timestream menggunakan zona waktu UTC untuk tanggal dan waktu. <pre>SELECT current_timezone()</pre> Contoh hasil: `UTC`  | 
|  tanggal (varchar (x)), tanggal (stempel waktu)  |  date  |  <pre>SELECT date(TIMESTAMP '2022-07-07 17:44:43.771000000')</pre> Contoh hasil: `2022-07-07`  | 
|  last\$1day\$1of\$1month (stempel waktu), last\$1day\$1of\$1month (tanggal)  |  date  |  <pre>SELECT last_day_of_month(TIMESTAMP '2022-07-07 17:44:43.771000000')</pre> Contoh hasil: `2022-07-31`  | 
|  dari\$1iso8601\$1timestamp (string)  |  timestamp  |  Mem-parsing stempel waktu ISO 8601 ke dalam format stempel waktu internal. <pre>SELECT from_iso8601_timestamp('2022-06-17T08:04:05.000000000+05:00')</pre> Contoh hasil: `2022-06-17 03:04:05.000000000`  | 
|  dari\$1iso8601\$1date (string)  |  date  |  Mem-parsing string tanggal ISO 8601 ke dalam format stempel waktu internal untuk UTC 00:00:00 dari tanggal yang ditentukan. <pre>SELECT from_iso8601_date('2022-07-17')</pre> Contoh hasil: `2022-07-17`  | 
|  to\$1iso8601 (stempel waktu), to\$1iso8601 (tanggal)  |  varchar  |  Mengembalikan ISO 8601 string diformat untuk input. <pre>SELECT to_iso8601(from_iso8601_date('2022-06-17'))</pre> Contoh hasil: `2022-06-17`  | 
|  dari\$1milidetik (bigint)  |  timestamp  |  <pre>SELECT from_milliseconds(1)</pre> Contoh hasil: `1970-01-01 00:00:00.001000000`  | 
|  dari\$1nanodetik (bigint)  |  timestamp  |  <pre>select from_nanoseconds(300000001)</pre> Contoh hasil: `1970-01-01 00:00:00.300000001`  | 
|  from\$1unixtime (ganda)  |  timestamp  |  Mengembalikan timestamp yang sesuai dengan unixtime yang disediakan. <pre>SELECT from_unixtime(1)</pre> Contoh hasil: `1970-01-01 00:00:01.000000000`  | 
|  waktu lokal  |  Waktu  |  Mengembalikan waktu saat ini di UTC. Tidak ada tanda kurung yang digunakan. <pre>SELECT localtime</pre> Contoh hasil: `17:58:22.654000000`  Ini juga merupakan kata kunci yang dicadangkan. Untuk daftar kata kunci yang dicadangkan, lihat[Kata kunci terpesan](ts-limits.md#limits.reserved).   | 
|  localtimestamp  |  timestamp  |  Mengembalikan stempel waktu saat ini di UTC. Tidak ada tanda kurung yang digunakan. <pre>SELECT localtimestamp</pre> Contoh hasil: `2022-07-07 17:59:04.368000000`  Ini juga merupakan kata kunci yang dicadangkan. Untuk daftar kata kunci yang dicadangkan, lihat[Kata kunci terpesan](ts-limits.md#limits.reserved).   | 
|  to\$1milliseconds (interval hari ke detik), to\$1milliseconds (stempel waktu)  |  bigint  |  <pre>SELECT to_milliseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)</pre> Contoh hasil: `183600000` <pre>SELECT to_milliseconds(TIMESTAMP '2022-06-17 17:44:43.771000000')</pre> Contoh hasil: `1655487883771`  | 
|  to\$1nanoseconds (interval hari ke detik), to\$1nanoseconds (stempel waktu)  |  bigint  |  <pre>SELECT to_nanoseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)</pre> Contoh hasil: `183600000000000` <pre>SELECT to_nanoseconds(TIMESTAMP '2022-06-17 17:44:43.771000678')</pre> Contoh hasil: `1655487883771000678`  | 
|  to\$1unixtime (stempel waktu)  |  double  |  Mengembalikan unixtime untuk stempel waktu yang disediakan. <pre>SELECT to_unixtime('2022-06-17 17:44:43.771000000')</pre> Contoh hasil: `1.6554878837710001E9`  | 
|  date\$1trunc (satuan, stempel waktu)  |  timestamp  |  Mengembalikan stempel waktu terpotong ke unit, di mana unit adalah salah satu dari [detik, menit, jam, hari, minggu, bulan, kuartal, atau tahun]. <pre>SELECT date_trunc('minute', TIMESTAMP '2022-06-17 17:44:43.771000000')</pre> Contoh hasil: `2022-06-17 17:44:00.000000000`  | 

## Interval dan durasi
<a name="date-time-functions-interval-duration"></a>

Timestream untuk LiveAnalytics mendukung fungsi interval dan durasi berikut untuk tanggal dan waktu.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  date\$1add (unit, bigint, tanggal), date\$1add (unit, bigint, waktu), date\$1add (varchar (x), bigint, stempel waktu)  |  timestamp  |  Menambahkan bigint unit, di mana unit adalah salah satu dari [detik, menit, jam, hari, minggu, bulan, kuartal, atau tahun]. <pre>SELECT date_add('hour', 9, TIMESTAMP '2022-06-17 00:00:00')</pre> Contoh hasil: `2022-06-17 09:00:00.000000000`  | 
|  date\$1diff (satuan, tanggal, tanggal), date\$1diff (satuan, waktu, waktu), date\$1diff (unit, stempel waktu, stempel waktu)  |  bigint  |  Mengembalikan perbedaan, di mana unit adalah salah satu dari [detik, menit, jam, hari, minggu, bulan, kuartal, atau tahun]. <pre>SELECT date_diff('day', DATE '2020-03-01', DATE '2020-03-02')</pre> Contoh hasil: `1`  | 
|  parse\$1duration (string)  |  interval  |  Mem-parsing string input untuk mengembalikan yang `interval` setara. <pre>SELECT parse_duration('42.8ms')</pre> Contoh hasil: `0 00:00:00.042800000` <pre>SELECT typeof(parse_duration('42.8ms'))</pre> Contoh hasil: `interval day to second`  | 
| bin (stempel waktu, interval) | timestamp |  Membulatkan nilai integer `timestamp` parameter ke kelipatan terdekat dari nilai integer `interval` parameter. Arti dari nilai pengembalian ini mungkin tidak jelas. Ini dihitung menggunakan aritmatika integer terlebih dahulu dengan membagi bilangan bulat timestamp dengan integer interval dan kemudian dengan mengalikan hasilnya dengan integer interval. Mengingat bahwa stempel waktu menentukan titik waktu UTC sebagai sejumlah pecahan detik yang berlalu sejak zaman POSIX (1 Januari 1970), nilai pengembalian jarang akan sejajar dengan unit kalender. Misalnya, jika Anda menentukan interval 30 hari, semua hari sejak zaman dibagi menjadi kenaikan 30 hari, dan awal kenaikan 30 hari terbaru dikembalikan, yang tidak memiliki hubungan dengan bulan kalender. Berikut ini adalah beberapa contohnya: <pre>bin(TIMESTAMP '2022-06-17 10:15:20', 5m)     ==> 2022-06-17 10:15:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 1d)     ==> 2022-06-17 00:00:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 10day)  ==> 2022-06-17 00:00:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 30day)  ==> 2022-05-28 00:00:00.000000000</pre>  | 
|  lalu (interval)  |  timestamp  |  Mengembalikan nilai yang sesuai dengan `interval` current\$1timestamp. <pre>SELECT ago(1d)</pre> Contoh hasil: `2022-07-06 21:08:53.245000000`  | 
|  interval literal seperti 1h, 1d, dan 30m  |  interval  |  Literal interval adalah kemudahan untuk parse\$1duration (string). Misalnya, `1d` sama dengan `parse_duration('1d')`. Ini memungkinkan penggunaan literal di mana pun interval digunakan. Misalnya, `ago(1d)` dan `bin(<timestamp>, 1m)`.  | 

Beberapa literal interval bertindak sebagai singkatan untuk parse\$1duration. Misalnya,`parse_duration('1day')`,`1day`,`parse_duration('1d')`, dan `1d` masing-masing kembali `1 00:00:00.000000000` di mana jenisnya`interval day to second`. Ruang diperbolehkan dalam format yang disediakan untuk`parse_duration`. Misalnya `parse_duration('1day')` juga kembali`00:00:00.000000000`. Tapi `1 day` bukan interval literal.

Satuan yang terkait dengan `interval day to second` adalah ns, nanodetik, us, mikrodetik, ms, milidetik, s, detik, m, menit, h, jam, d, dan hari.

Ada juga`interval year to month`. Satuan yang terkait dengan interval tahun ke bulan adalah y, tahun, dan bulan. Misalnya, `SELECT 1year` pengembalian`1-0`. `SELECT 12month`juga kembali`1-0`. `SELECT 8month`kembali`0-8`.

Meskipun unit juga `quarter` tersedia untuk beberapa fungsi seperti `date_trunc` dan`date_add`, tidak `quarter` tersedia sebagai bagian dari interval literal.

## Memformat dan mengurai
<a name="date-time-functions-formatting-parsing"></a>

Timestream untuk LiveAnalytics mendukung fungsi pemformatan dan penguraian berikut untuk tanggal dan waktu.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  date\$1format (stempel waktu, varchar (x))  |  varchar  |  [Untuk informasi selengkapnya tentang penentu format yang digunakan oleh fungsi ini, lihat \$1 https://trino.io/docs/current/functions/datetime.html mysql-date-functions](https://trino.io/docs/current/functions/datetime.html#mysql-date-functions) <pre>SELECT date_format(TIMESTAMP '2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')</pre> Contoh hasil: `2019-10-20 10:20:20`  | 
|  date\$1parse (varchar (x), varchar (y))  |  timestamp  |  [Untuk informasi selengkapnya tentang penentu format yang digunakan oleh fungsi ini, lihat \$1 https://trino.io/docs/current/functions/datetime.html mysql-date-functions](https://trino.io/docs/current/functions/datetime.html#mysql-date-functions) <pre>SELECT date_parse('2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')</pre> Contoh hasil: `2019-10-20 10:20:20.000000000`  | 
|  format\$1datetime (stempel waktu, varchar (x))  |  varchar  |  Untuk informasi selengkapnya tentang string format yang digunakan oleh fungsi ini, lihat [http://joda-time.sourceforge. net/apidocs/org/joda/time/format/DateTimeFormat.html](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html) <pre>SELECT format_datetime(parse_datetime('1968-01-13 12', 'yyyy-MM-dd HH'), 'yyyy-MM-dd HH')</pre> Contoh hasil: `1968-01-13 12`  | 
|  parse\$1datetime (varchar (x), varchar (y))  |  timestamp  |  Untuk informasi selengkapnya tentang string format yang digunakan oleh fungsi ini, lihat [http://joda-time.sourceforge. net/apidocs/org/joda/time/format/DateTimeFormat.html](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html) <pre>SELECT parse_datetime('2019-12-29 10:10 PST', 'uuuu-LL-dd HH:mm z')</pre> Contoh hasil: `2019-12-29 18:10:00.000000000`  | 

## Ekstraksi
<a name="date-time-functions-extraction"></a>

Timestream untuk LiveAnalytics mendukung fungsi ekstraksi berikut untuk tanggal dan waktu. Fungsi ekstrak adalah dasar untuk fungsi kenyamanan yang tersisa.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  sari  |  bigint  |  Mengekstrak bidang dari stempel waktu, di mana bidang adalah salah satu dari [TAHUN, KUARTAL, BULAN, MINGGU, HARI, DAY\$1OF\$1MONTH, DAY\$1OF\$1WEEK, DOW, DAY\$1OF\$1YEAR, DOY, YEAR\$1OF\$1WEEK, YOW, HOUR, MINUTE, atau SECOND]. <pre>SELECT extract(YEAR FROM '2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `2019`  | 
|  hari (stempel waktu), hari (tanggal), hari (interval hari ke detik)  |  bigint  |  <pre>SELECT day('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `12`  | 
|  day\$1of\$1month (stempel waktu), day\$1of\$1month (tanggal), day\$1of\$1month (interval hari ke detik)  |  bigint  |  <pre>SELECT day_of_month('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `12`  | 
|  day\$1of\$1week (stempel waktu), day\$1of\$1week (tanggal)  |  bigint  |  <pre>SELECT day_of_week('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `6`  | 
|  day\$1of\$1year (stempel waktu), day\$1of\$1year (tanggal)  |  bigint  |  <pre>SELECT day_of_year('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `285`  | 
|  dow (stempel waktu), dow (tanggal)  |  bigint  |  Alias untuk day\$1of\$1week  | 
|  doy (stempel waktu), doy (tanggal)  |  bigint  |  Alias untuk day\$1of\$1year  | 
|  jam (stempel waktu), jam (waktu), jam (interval hari ke detik)  |  bigint  |  <pre>SELECT hour('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `23`  | 
|  milidetik (stempel waktu), milidetik (waktu), milidetik (interval hari ke detik)  |  bigint  |  <pre>SELECT millisecond('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `0`  | 
|  menit (timestamp), menit (waktu), menit (interval hari ke detik)  |  bigint  |  <pre>SELECT minute('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `10`  | 
|  bulan (stempel waktu), bulan (tanggal), bulan (interval tahun ke bulan)  |  bigint  |  <pre>SELECT month('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `10`  | 
|  nanodetik (stempel waktu), nanodetik (waktu), nanodetik (interval hari ke detik)  |  bigint  |  <pre>SELECT nanosecond(current_timestamp)</pre> Contoh hasil: `162000000`  | 
|  kuartal (stempel waktu), kuartal (tanggal)  |  bigint  |  <pre>SELECT quarter('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `4`  | 
|  kedua (stempel waktu), detik (waktu), detik (interval hari ke detik)  |  bigint  |  <pre>SELECT second('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `34`  | 
|  minggu (stempel waktu), minggu (tanggal)  |  bigint  |  <pre>SELECT week('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `41`  | 
|  week\$1of\$1year (stempel waktu), week\$1of\$1year (tanggal)  |  bigint  |  Alias untuk minggu  | 
|  tahun (stempel waktu), tahun (tanggal), tahun (interval tahun ke bulan)  |  bigint  |  <pre>SELECT year('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `2019`  | 
|  year\$1of\$1week (stempel waktu), year\$1of\$1week (tanggal)  |  bigint  |  <pre>SELECT year_of_week('2019-10-12 23:10:34.000000000')</pre> Contoh hasil: `2019`  | 
|  yow (stempel waktu), yow (tanggal)  |  bigint  |  Alias untuk year\$1of\$1week  | 

# Fungsi agregat
<a name="aggregate-functions"></a>

Timestream untuk LiveAnalytics mendukung fungsi agregat berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  sewenang-wenang (x)  |  [sama seperti masukan]  |  Mengembalikan nilai non-null arbitrer x, jika ada. <pre>SELECT arbitrary(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `1`  | 
|  array\$1agg (x)  |  array < [sama dengan masukan]  |  Mengembalikan array dibuat dari elemen input x. <pre>SELECT array_agg(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `[ 1,2,3,4 ]`  | 
|  rata-rata (x)  |  double  |  Mengembalikan rata-rata (rata-rata aritmatika) dari semua nilai masukan. <pre>SELECT avg(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `2.5`  | 
|  bool\$1and (boolean) setiap (boolean)   |  boolean  |  Mengembalikan TRUE jika setiap nilai masukan TRUE, jika tidak FALSE. <pre>SELECT bool_and(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre> Contoh hasil: `false`  | 
|  bool\$1or (boolean)  |  boolean  |  Mengembalikan TRUE jika ada nilai input TRUE, jika tidak FALSE. <pre>SELECT bool_or(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre> Contoh hasil: `true`  | 
|  menghitung (\$1) hitungan (x)  |  bigint  |  count (\$1) mengembalikan jumlah baris input. count (x) mengembalikan jumlah nilai input non-null. <pre>SELECT count(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre> Contoh hasil: `4`  | 
|  hitungan\$1jika (x)   |  bigint  |  Mengembalikan jumlah nilai input TRUE.  <pre>SELECT count_if(t.c) FROM (VALUES true, true, false, true) AS t(c)</pre> Contoh hasil: `3`  | 
|  geometrik\$1mean (x)  |  double  |  Mengembalikan rata-rata geometris dari semua nilai masukan. <pre>SELECT geometric_mean(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `2.213363839400643`  | 
|  max\$1by (x, y)   |  [sama seperti x]  |  Mengembalikan nilai x terkait dengan nilai maksimum y atas semua nilai masukan. <pre>SELECT max_by(t.c1, t.c2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre> Contoh hasil: `d`  | 
|  maks\$1by (x, y, n)   |  array< [same as x] >  |  Mengembalikan n nilai x terkait dengan n terbesar dari semua nilai masukan y dalam urutan menurun y. <pre>SELECT max_by(t.c1, t.c2, 2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre> Contoh hasil: `[ d,c ]`  | 
|  min\$1by (x, y)  |  [sama seperti x]  |  Mengembalikan nilai x terkait dengan nilai minimum y atas semua nilai masukan. <pre>SELECT min_by(t.c1, t.c2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre> Contoh hasil: `a`  | 
|  min\$1by (x, y, n)  |  array< [same as x] >  |  Mengembalikan n nilai x terkait dengan n terkecil dari semua nilai masukan y dalam urutan menaik y. <pre>SELECT min_by(t.c1, t.c2, 2) FROM (VALUES (('a', 1)), (('b', 2)), (('c', 3)), (('d', 4))) AS t(c1, c2)</pre> Contoh hasil: `[ a,b ]`  | 
|  maks (x)  |  [sama seperti masukan]  |  Mengembalikan nilai maksimum dari semua nilai masukan. <pre>SELECT max(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `4`  | 
|  maks (x, n)  |  array< [same as x] >  |  Mengembalikan n nilai terbesar dari semua nilai masukan x. <pre>SELECT max(t.c, 2) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `[ 4,3 ]`  | 
|  min (x)  |  [sama seperti masukan]  |  Mengembalikan nilai minimum dari semua nilai masukan. <pre>SELECT min(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `1`  | 
|  min (x, n)  |  array< [same as x] >  |  Mengembalikan n nilai terkecil dari semua nilai masukan x. <pre>SELECT min(t.c, 2) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `[ 1,2 ]`  | 
|  jumlah (x)   |  [sama seperti masukan]  |  Mengembalikan jumlah semua nilai masukan. <pre>SELECT sum(t.c) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `10`  | 
|  bitwise\$1and\$1agg (x)  |  bigint  |  Mengembalikan bitwise AND dari semua nilai masukan dalam representasi komplemen 2s. <pre>SELECT bitwise_and_agg(t.c) FROM (VALUES 1, -3) AS t(c)</pre> Contoh hasil: `1`  | 
|  bitwise\$1or\$1agg (x)  |  bigint  |  Mengembalikan bitwise OR dari semua nilai masukan dalam representasi komplemen 2s. <pre>SELECT bitwise_or_agg(t.c) FROM (VALUES 1, -3) AS t(c)</pre> Contoh hasil: `-3`  | 
|  kira-kira\$1beda (x)   |  bigint  |  Mengembalikan perkiraan jumlah nilai masukan yang berbeda. Fungsi ini memberikan perkiraan hitungan (DISTINCT x). Nol dikembalikan jika semua nilai masukan nol. Fungsi ini harus menghasilkan kesalahan standar 2,3%, yang merupakan standar deviasi dari distribusi kesalahan (kira-kira normal) di semua set yang mungkin. Itu tidak menjamin batas atas pada kesalahan untuk setiap set input tertentu. <pre>SELECT approx_distinct(t.c) FROM (VALUES 1, 2, 3, 4, 8) AS t(c)</pre> Contoh hasil: `5`  | 
|  kira-kira\$1berbeda (x, e)  |  bigint  |  Mengembalikan perkiraan jumlah nilai masukan yang berbeda. Fungsi ini memberikan perkiraan hitungan (DISTINCT x). Nol dikembalikan jika semua nilai masukan nol. Fungsi ini harus menghasilkan kesalahan standar tidak lebih dari e, yang merupakan standar deviasi dari distribusi kesalahan (kira-kira normal) atas semua set yang mungkin. Itu tidak menjamin batas atas pada kesalahan untuk setiap set input tertentu. Implementasi fungsi ini saat ini mengharuskan e berada dalam kisaran [0,0040625, 0,26000]. <pre>SELECT approx_distinct(t.c, 0.2) FROM (VALUES 1, 2, 3, 4, 8) AS t(c)</pre> Contoh hasil: `5`  | 
|  kira-kira\$1persentil (x, persentase)   |  [sama seperti x]  |  Mengembalikan perkiraan persentil untuk semua nilai masukan x pada persentase yang diberikan. Nilai persentase harus antara nol dan satu dan harus konstan untuk semua baris input. <pre>SELECT approx_percentile(t.c, 0.4) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `2`  | 
|  kira-kira\$1persentil (x, persentase)   |  array< [same as x] >  |  Mengembalikan perkiraan persentil untuk semua nilai masukan x pada masing-masing persentase yang ditentukan. Setiap elemen dari array persentase harus antara nol dan satu, dan array harus konstan untuk semua baris input. <pre>SELECT approx_percentile(t.c, ARRAY[0.1, 0.8, 0.8]) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `[ 1,4,4 ]`  | 
|  kira-kira\$1persentil (x, w, persentase)   |  [sama seperti x]  |  Mengembalikan perkiraan persentil tertimbang untuk semua nilai masukan x menggunakan berat per item w pada persentase p. Bobot harus berupa nilai integer minimal satu. Ini secara efektif merupakan hitungan replikasi untuk nilai x dalam set persentil. Nilai p harus antara nol dan satu dan harus konstan untuk semua baris input. <pre>SELECT approx_percentile(t.c, 1, 0.1) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `1`  | 
|  kira-kira\$1persentil (x, w, persentase)   |  array< [same as x] >  |  Mengembalikan perkiraan persentil tertimbang untuk semua nilai masukan x menggunakan berat per item w pada masing-masing persentase yang diberikan ditentukan dalam array. Bobot harus berupa nilai integer minimal satu. Ini secara efektif merupakan hitungan replikasi untuk nilai x dalam set persentil. Setiap elemen array harus antara nol dan satu, dan array harus konstan untuk semua baris input. <pre>SELECT approx_percentile(t.c, 1, ARRAY[0.1, 0.8, 0.8]) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `[ 1,4,4 ]`  | 
|  kira-kira\$1persentil (x, w, persentase, akurasi)  |  [sama seperti x]  |  Mengembalikan perkiraan persentil tertimbang untuk semua nilai masukan x menggunakan bobot per item w pada persentase p, dengan kesalahan akurasi peringkat maksimum. Bobot harus berupa nilai integer minimal satu. Ini secara efektif merupakan hitungan replikasi untuk nilai x dalam set persentil. Nilai p harus antara nol dan satu dan harus konstan untuk semua baris input. Akurasi harus bernilai lebih besar dari nol dan kurang dari satu, dan harus konstan untuk semua baris input. <pre>SELECT approx_percentile(t.c, 1, 0.1, 0.5) FROM (VALUES 1, 2, 3, 4) AS t(c)</pre> Contoh hasil: `1`  | 
|  corr (y, x)  |  double  |  Mengembalikan koefisien korelasi nilai masukan. <pre>SELECT corr(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre> Contoh hasil: `1.0`  | 
|  covar\$1pop (y, x)  |  double  |  Mengembalikan kovarians populasi dari nilai masukan. <pre>SELECT covar_pop(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre> Contoh hasil: `1.25`  | 
|  covar\$1samp (y, x)   |  double  |  Mengembalikan kovarians sampel nilai masukan. <pre>SELECT covar_samp(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre> Contoh hasil: `1.6666666666666667`  | 
|  regr\$1intersep (y, x)  |  double  |  Mengembalikan intersep regresi linier nilai input. y adalah nilai dependen. x adalah nilai independen. <pre>SELECT regr_intercept(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre> Contoh hasil: `0.0`  | 
|  kemiringan regr\$1( y, x)  |  double  |  Mengembalikan kemiringan regresi linier nilai input. y adalah nilai dependen. x adalah nilai independen. <pre>SELECT regr_slope(t.c1, t.c2) FROM (VALUES ((1, 1)), ((2, 2)), ((3, 3)), ((4, 4))) AS t(c1, c2)</pre> Contoh hasil: `1.0`  | 
|  kemiringan (x)  |  double  |  Mengembalikan kemiringan semua nilai masukan. <pre>SELECT skewness(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre> Contoh hasil: `0.8978957037987335`  | 
|  stddev\$1pop (x)  |  double  |  Mengembalikan standar deviasi populasi dari semua nilai masukan. <pre>SELECT stddev_pop(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre> Contoh hasil: `2.4166091947189146`  | 
|  stddev\$1samp (x) stddev (x)  |  double  |  Mengembalikan standar deviasi sampel dari semua nilai masukan. <pre>SELECT stddev_samp(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre> Contoh hasil: `2.701851217221259`  | 
|  var\$1pop (x)   |  double  |  Mengembalikan varians populasi dari semua nilai masukan. <pre>SELECT var_pop(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre> Contoh hasil: `5.840000000000001`  | 
|  var\$1samp (x) varians (x)   |  double  |  Mengembalikan varians sampel dari semua nilai masukan. <pre>SELECT var_samp(t.c1) FROM (VALUES 1, 2, 3, 4, 8) AS t(c1)</pre> Contoh hasil: `7.300000000000001`  | 

# Fungsi jendela
<a name="window-functions"></a>

Fungsi jendela melakukan perhitungan di seluruh baris hasil kueri. Mereka berjalan setelah klausa HAVING tetapi sebelum klausa ORDER BY. Memanggil fungsi jendela memerlukan sintaks khusus menggunakan klausa OVER untuk menentukan jendela. Sebuah jendela memiliki tiga komponen:
+ Spesifikasi partisi, yang memisahkan baris input menjadi partisi yang berbeda. Ini analog dengan bagaimana klausa GROUP BY memisahkan baris ke dalam kelompok yang berbeda untuk fungsi agregat.
+ Spesifikasi pemesanan, yang menentukan urutan baris input akan diproses oleh fungsi jendela.
+ Bingkai jendela, yang menentukan jendela geser baris yang akan diproses oleh fungsi untuk baris tertentu. Jika frame tidak ditentukan, maka defaultnya RANGE UNBOUNDED PRECEDING, yang sama dengan RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. Bingkai ini berisi semua baris dari awal partisi hingga rekan terakhir dari baris saat ini.

Semua Fungsi Agregat dapat digunakan sebagai fungsi jendela dengan menambahkan klausa OVER. Fungsi agregat dihitung untuk setiap baris di atas baris dalam bingkai jendela baris saat ini. Selain fungsi agregat, Timestream untuk LiveAnalytics mendukung fungsi peringkat dan nilai berikut.


| Fungsi | Tipe data keluaran | Deskripsi | 
| --- | --- | --- | 
|  cume\$1dist ()  |  bigint  |  Mengembalikan distribusi kumulatif nilai dalam sekelompok nilai. Hasilnya adalah jumlah baris sebelumnya atau peer dengan baris di jendela urutan partisi jendela dibagi dengan jumlah total baris di partisi jendela. Dengan demikian, setiap nilai dasi dalam pemesanan akan mengevaluasi nilai distribusi yang sama.  | 
|  dense\$1rank ()  |  bigint  |  Mengembalikan peringkat nilai dalam sekelompok nilai. Ini mirip dengan rank (), kecuali bahwa nilai dasi tidak menghasilkan celah dalam urutan.  | 
|  ntil (n)  |  bigint  |  Membagi baris untuk setiap partisi jendela menjadi n ember mulai dari 1 hingga paling banyak n. Nilai bucket akan berbeda paling banyak 1. Jika jumlah baris di partisi tidak dibagi secara merata ke dalam jumlah ember, maka nilai sisanya didistribusikan satu per ember, dimulai dengan ember pertama.  | 
|  percent\$1rank ()  |  double  |  Mengembalikan persentase peringkat nilai dalam kelompok nilai. Hasilnya adalah (r - 1)/(n - 1) di mana r adalah peringkat () dari baris dan n adalah jumlah total baris di partisi jendela.  | 
|  peringkat ()  |  bigint  |  Mengembalikan peringkat nilai dalam sekelompok nilai. Peringkat adalah satu ditambah jumlah baris sebelum baris yang tidak sejajar dengan baris. Dengan demikian, nilai dasi dalam urutan akan menghasilkan celah dalam urutan. Peringkat dilakukan untuk setiap partisi jendela.  | 
|  baris\$1number ()  |  bigint  |  Mengembalikan nomor unik dan berurutan untuk setiap baris, dimulai dengan satu, sesuai dengan urutan baris dalam partisi jendela.  | 
|  nilai pertama\$1( x)  |  [sama seperti masukan]  |  Mengembalikan nilai pertama dari jendela. Fungsi ini dicakup ke bingkai jendela. Fungsi mengambil ekspresi atau target sebagai parameternya.  | 
|  nilai terakhir (x)  |  [sama seperti masukan]  |  Mengembalikan nilai terakhir dari jendela. Fungsi ini dicakup ke bingkai jendela. Fungsi mengambil ekspresi atau target sebagai parameternya.  | 
|  nth\$1value (x, offset)  |  [sama seperti masukan]  |  Mengembalikan nilai pada offset yang ditentukan dari awal jendela. Offset mulai dari 1. Offset dapat berupa ekspresi skalar apa pun. Jika offset adalah nol atau lebih besar dari jumlah nilai di jendela, null dikembalikan. Ini adalah kesalahan untuk offset menjadi nol atau negatif. Fungsi mengambil ekspresi atau target sebagai parameter pertamanya.  | 
|  memimpin (x [, offset [, default\$1value]])  |  [sama seperti masukan]  |  Mengembalikan nilai pada baris offset setelah baris saat ini di jendela. Offset mulai dari 0, yang merupakan baris saat ini. Offset dapat berupa ekspresi skalar apa pun. Offset default adalah 1. Jika offset adalah null atau lebih besar dari jendela, default\$1value dikembalikan, atau jika tidak ditentukan null dikembalikan. Fungsi mengambil ekspresi atau target sebagai parameter pertamanya.  | 
|  lag (x [, offset [, default\$1value]])  |  [sama seperti masukan]  |  Mengembalikan nilai pada baris offset sebelum baris saat ini di jendela Offset mulai dari 0, yang merupakan baris saat ini. Offset dapat berupa ekspresi skalar apa pun. Offset default adalah 1. Jika offset adalah null atau lebih besar dari jendela, default\$1value dikembalikan, atau jika tidak ditentukan null dikembalikan. Fungsi mengambil ekspresi atau target sebagai parameter pertamanya.  | 

# Kueri Sampel
<a name="sample-queries"></a>

Bagian ini mencakup contoh kasus penggunaan Timestream untuk bahasa LiveAnalytics kueri.

**Topics**
+ [Kueri sederhana](sample-queries.basic-scenarios.md)
+ [Kueri dengan fungsi deret waktu](sample-queries.devops-scenarios.md)
+ [Kueri dengan fungsi agregat](sample-queries.iot-scenarios.md)

# Kueri sederhana
<a name="sample-queries.basic-scenarios"></a>

Berikut ini mendapatkan 10 titik data yang paling baru ditambahkan untuk sebuah tabel.

```
SELECT * FROM <database_name>.<table_name>
ORDER BY time DESC
LIMIT 10
```

Berikut ini mendapatkan 5 titik data tertua untuk ukuran tertentu.

```
SELECT * FROM <database_name>.<table_name>
WHERE measure_name = '<measure_name>'
ORDER BY time ASC
LIMIT 5
```

Berikut ini bekerja dengan stempel waktu granularitas nanodetik.

```
SELECT now() AS time_now
, now() - (INTERVAL '12' HOUR) AS twelve_hour_earlier -- Compatibility with ANSI SQL 
, now() - 12h AS also_twelve_hour_earlier -- Convenient time interval literals
, ago(12h) AS twelve_hours_ago -- More convenience with time functionality
, bin(now(), 10m) AS time_binned -- Convenient time binning support
, ago(50ns) AS fifty_ns_ago -- Nanosecond support
, now() + (1h + 50ns) AS hour_fifty_ns_future
```

Nilai pengukuran untuk catatan multi-ukuran diidentifikasi dengan nama kolom. Nilai ukuran untuk catatan ukuran tunggal diidentifikasi oleh`measure_value::<data_type>`, di mana `<data_type>` salah satu dari`double`,, `bigint``boolean`, atau `varchar` seperti yang dijelaskan dalam[Jenis data yang didukung](supported-data-types.md). Untuk informasi selengkapnya tentang bagaimana nilai ukuran dimodelkan, lihat [Tabel tunggal vs. beberapa tabel](https://docs.aws.amazon.com/timestream/latest/developerguide/data-modeling.html#data-modeling-multiVsinglerecords).

Berikut ini mengambil nilai untuk ukuran yang dipanggil `speed` dari catatan multi-ukuran dengan a`measure_name`. `IoTMulti-stats`

```
SELECT speed FROM <database_name>.<table_name> where measure_name = 'IoTMulti-stats'
```

Berikut ini mengambil `double` nilai dari catatan ukuran tunggal dengan a `measure_name` dari. `load`

```
SELECT measure_value::double FROM <database_name>.<table_name> WHERE measure_name = 'load'
```

# Kueri dengan fungsi deret waktu
<a name="sample-queries.devops-scenarios"></a>

**Topics**
+ [Contoh dataset dan kueri](#sample-queries.devops-scenarios.example)

## Contoh dataset dan kueri
<a name="sample-queries.devops-scenarios.example"></a>

Anda dapat menggunakan Timestream LiveAnalytics untuk memahami dan meningkatkan kinerja dan ketersediaan layanan dan aplikasi Anda. Di bawah ini adalah contoh tabel dan contoh query berjalan pada tabel itu. 

Tabel `ec2_metrics` menyimpan data telemetri, seperti pemanfaatan CPU dan metrik lainnya dari instans EC2. Anda dapat melihat tabel di bawah ini.


| Waktu | region | az | Hostname | ukuran\$1nama | ukuran\$1nilai: :ganda | ukuran\$1nilai: :bigint | 
| --- | --- | --- | --- | --- | --- | --- | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  pemanfaatan cpu\$1  |  35.1  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  memory\$1utilization  |  55,3  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1in  |  null  |  1.500  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1out  |  null  |  6,700  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  pemanfaatan cpu\$1  |  38,5  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  memory\$1utilization  |  58.4  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1in  |  null  |  23.000  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1out  |  null  |  12.000  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  pemanfaatan cpu\$1  |  45,0  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  memory\$1utilization  |  65.8  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1in  |  null  |  15.000  | 
|  2019-12-04 19:00:00.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1out  |  null  |  836.000  | 
|  2019-12-04 19:00:05.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  pemanfaatan cpu\$1  |  55,2  |  null  | 
|  2019-12-04 19:00:05.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  memory\$1utilization  |  75.0  |  null  | 
|  2019-12-04 19:00:05.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1in  |  null  |  1,245  | 
|  2019-12-04 19:00:05.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1out  |  null  |  68,432  | 
|  2019-12-04 19:00:08.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  pemanfaatan cpu\$1  |  65.6  |  null  | 
|  2019-12-04 19:00:08.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  memory\$1utilization  |  85.3  |  null  | 
|  2019-12-04 19:00:08.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1in  |  null  |  1,245  | 
|  2019-12-04 19:00:08.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1out  |  null  |  68,432  | 
|  2019-12-04 19:00:20.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  pemanfaatan cpu\$1  |  12.1  |  null  | 
|  2019-12-04 19:00:20.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  memory\$1utilization  |  32.0  |  null  | 
|  2019-12-04 19:00:20.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1in  |  null  |  1.400  | 
|  2019-12-04 19:00:20.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1out  |  null  |  345  | 
|  2019-12-04 19:00:10.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  pemanfaatan cpu\$1  |  15.3  |  null  | 
|  2019-12-04 19:00:10.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  memory\$1utilization  |  35.4  |  null  | 
|  2019-12-04 19:00:10.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1in  |  null  |  23  | 
|  2019-12-04 19:00:10.000 000000  |  us-east-1  |  us-east-1a  |  frontend01  |  network\$1bytes\$1out  |  null  |  0  | 
|  2019-12-04 19:00:16.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  pemanfaatan cpu\$1  |  44,0  |  null  | 
|  2019-12-04 19:00:16.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  memory\$1utilization  |  64.2  |  null  | 
|  2019-12-04 19:00:16.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1in  |  null  |  1,450  | 
|  2019-12-04 19:00:16.000 000000  |  us-east-1  |  us-east-1b  |  frontend02  |  network\$1bytes\$1out  |  null  |  200  | 
|  2019-12-04 19:00:40.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  pemanfaatan cpu\$1  |  66.4  |  null  | 
|  2019-12-04 19:00:40.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  memory\$1utilization  |  86.3  |  null  | 
|  2019-12-04 19:00:40.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1in  |  null  |  300  | 
|  2019-12-04 19:00:40.000 000000  |  us-east-1  |  us-east-1c  |  frontend03  |  network\$1bytes\$1out  |  null  |  423  | 

Temukan pemanfaatan CPU rata-rata, p90, p95, dan p99 untuk host EC2 tertentu selama 2 jam terakhir:

```
SELECT region, az, hostname, BIN(time, 15s) AS binned_timestamp,
    ROUND(AVG(measure_value::double), 2) AS avg_cpu_utilization,
    ROUND(APPROX_PERCENTILE(measure_value::double, 0.9), 2) AS p90_cpu_utilization,
    ROUND(APPROX_PERCENTILE(measure_value::double, 0.95), 2) AS p95_cpu_utilization,
    ROUND(APPROX_PERCENTILE(measure_value::double, 0.99), 2) AS p99_cpu_utilization
FROM "sampleDB".DevOps
WHERE measure_name = 'cpu_utilization'
    AND hostname = 'host-Hovjv'
    AND time > ago(2h)
GROUP BY region, hostname, az, BIN(time, 15s)
ORDER BY binned_timestamp ASC
```

Identifikasi host EC2 dengan pemanfaatan CPU yang lebih tinggi sebesar 10% atau lebih dibandingkan dengan pemanfaatan CPU rata-rata seluruh armada selama 2 jam terakhir:

```
WITH avg_fleet_utilization AS (
    SELECT COUNT(DISTINCT hostname) AS total_host_count, AVG(measure_value::double) AS fleet_avg_cpu_utilization
    FROM "sampleDB".DevOps
    WHERE measure_name = 'cpu_utilization'
        AND time > ago(2h)
), avg_per_host_cpu AS (
    SELECT region, az, hostname, AVG(measure_value::double) AS avg_cpu_utilization
    FROM "sampleDB".DevOps
    WHERE measure_name = 'cpu_utilization'
        AND time > ago(2h)
    GROUP BY region, az, hostname
)
SELECT region, az, hostname, avg_cpu_utilization, fleet_avg_cpu_utilization
FROM avg_fleet_utilization, avg_per_host_cpu
WHERE avg_cpu_utilization > 1.1 * fleet_avg_cpu_utilization
ORDER BY avg_cpu_utilization DESC
```

Temukan rata-rata pemanfaatan CPU yang di-binned pada interval 30 detik untuk host EC2 tertentu selama 2 jam terakhir:

```
SELECT 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)
ORDER BY binned_timestamp ASC
```

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

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

# Kueri dengan fungsi agregat
<a name="sample-queries.iot-scenarios"></a>

Di bawah ini adalah contoh contoh skenario IoT kumpulan data untuk menggambarkan query dengan fungsi agregat.

**Topics**
+ [Contoh data](#sample-queries.iot-scenarios.example-data)
+ [Kueri contoh](#sample-queries.iot-scenarios.example-queries)

## Contoh data
<a name="sample-queries.iot-scenarios.example-data"></a>

Timestream memungkinkan Anda menyimpan dan menganalisis data sensor IoT seperti lokasi, konsumsi bahan bakar, kecepatan, dan kapasitas muat satu atau lebih armada truk untuk memungkinkan manajemen armada yang efektif. Di bawah ini adalah skema dan beberapa data tabel iot\$1trucks yang menyimpan telemetri seperti lokasi, konsumsi bahan bakar, kecepatan, dan kapasitas muat truk.


| Waktu | truck\$1id | Membuat | Model | Armada | kapasitas bahan bakar | load\$1capacity | ukuran\$1nama | ukuran\$1nilai: :ganda | ukuran\$1nilai: :varchar | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  2019-12-04 19:00:00.000 000000  |  123456781  |  GMC  |  Astro  |  Alfa  |  100  |  500  |  bahan bakar\$1membaca  |  65.2  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456781  |  GMC  |  Astro  |  Alfa  |  100  |  500  |  muat  |  400,0  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456781  |  GMC  |  Astro  |  Alfa  |  100  |  500  |  kecepatan  |  90.2  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456781  |  GMC  |  Astro  |  Alfa  |  100  |  500  |  lokasi  |  null  |  47.6062 N, 122.3321 W  | 
|  2019-12-04 19:00:00.000 000000  |  123456782  |  Kenworth  |  W900  |  Alfa  |  150  |  1000  |  bahan bakar\$1membaca  |  10.1  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456782  |  Kenworth  |  W900  |  Alfa  |  150  |  1000  |  muat  |  950,3  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456782  |  Kenworth  |  W900  |  Alfa  |  150  |  1000  |  kecepatan  |  50,8  |  null  | 
|  2019-12-04 19:00:00.000 000000  |  123456782  |  Kenworth  |  W900  |  Alfa  |  150  |  1000  |  lokasi  |  null  |  40,7128 derajat N, 74,0060 derajat W  | 

## Kueri contoh
<a name="sample-queries.iot-scenarios.example-queries"></a>

Dapatkan daftar semua atribut sensor dan nilai yang dipantau untuk setiap truk di armada.

```
SELECT
    truck_id,
    fleet,
    fuel_capacity,
    model,
    load_capacity,
    make,
    measure_name
FROM "sampleDB".IoT
GROUP BY truck_id, fleet, fuel_capacity, model, load_capacity, make, measure_name
```

Dapatkan pembacaan bahan bakar terbaru dari setiap truk di armada dalam 24 jam terakhir.

```
WITH latest_recorded_time AS (
    SELECT
        truck_id,
        max(time) as latest_time
    FROM "sampleDB".IoT
    WHERE measure_name = 'fuel-reading'
    AND time >= ago(24h)
    GROUP BY truck_id
)
SELECT
    b.truck_id,
    b.fleet,
    b.make,
    b.model,
    b.time,
    b.measure_value::double as last_reported_fuel_reading
FROM
latest_recorded_time a INNER JOIN "sampleDB".IoT b
ON a.truck_id = b.truck_id AND b.time = a.latest_time
WHERE b.measure_name = 'fuel-reading'
AND b.time > ago(24h)
ORDER BY b.truck_id
```

Identifikasi truk yang menggunakan bahan bakar rendah (kurang dari 10%) dalam 48 jam terakhir:

```
WITH low_fuel_trucks AS (
    SELECT time, truck_id, fleet, make, model, (measure_value::double/cast(fuel_capacity as double)*100) AS fuel_pct
    FROM "sampleDB".IoT
    WHERE time >= ago(48h)
    AND (measure_value::double/cast(fuel_capacity as double)*100) < 10
    AND measure_name = 'fuel-reading'
),
other_trucks AS (
SELECT time, truck_id, (measure_value::double/cast(fuel_capacity as double)*100) as remaining_fuel
    FROM "sampleDB".IoT
    WHERE time >= ago(48h)
    AND truck_id IN (SELECT truck_id FROM low_fuel_trucks)
    AND (measure_value::double/cast(fuel_capacity as double)*100) >= 10
    AND measure_name = 'fuel-reading'
),
trucks_that_refuelled AS (
    SELECT a.truck_id
    FROM low_fuel_trucks a JOIN other_trucks b
    ON a.truck_id = b.truck_id AND b.time >= a.time
)
SELECT DISTINCT truck_id, fleet, make, model, fuel_pct
FROM low_fuel_trucks
WHERE truck_id NOT IN (
    SELECT truck_id FROM trucks_that_refuelled
)
```

Temukan beban rata-rata dan kecepatan maksimal untuk setiap truk selama seminggu terakhir:

```
SELECT
    bin(time, 1d) as binned_time,
    fleet,
    truck_id,
    make,
    model,
    AVG(
        CASE WHEN measure_name = 'load' THEN measure_value::double ELSE NULL END
    ) AS avg_load_tons,
    MAX(
        CASE WHEN measure_name = 'speed' THEN measure_value::double ELSE NULL END
    ) AS max_speed_mph
FROM "sampleDB".IoT
WHERE time >= ago(7d)
AND measure_name IN ('load', 'speed')
GROUP BY fleet, truck_id, make, model, bin(time, 1d)
ORDER BY truck_id
```

Dapatkan efisiensi beban untuk setiap truk selama seminggu terakhir:

```
WITH average_load_per_truck AS (
    SELECT
        truck_id,
        avg(measure_value::double)  AS avg_load
    FROM "sampleDB".IoT
    WHERE measure_name = 'load'
    AND time >= ago(7d)
    GROUP BY truck_id, fleet, load_capacity, make, model
),
truck_load_efficiency AS (
    SELECT
        a.truck_id,
        fleet,
        load_capacity,
        make,
        model,
        avg_load,
        measure_value::double,
        time,
        (measure_value::double*100)/avg_load as load_efficiency -- , approx_percentile(avg_load_pct, DOUBLE '0.9')
    FROM "sampleDB".IoT a JOIN average_load_per_truck b
    ON a.truck_id = b.truck_id
    WHERE a.measure_name = 'load'
)
SELECT
    truck_id,
    time,
    load_efficiency
FROM truck_load_efficiency
ORDER BY truck_id, time
```