

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

# Boolean, perbandingan, numerik, datetime, dan fungsi lainnya
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Log Insights mendukung banyak operasi dan fungsi lain dalam kueri, seperti yang dijelaskan di bagian berikut. 

**Topics**
+ [Operator aritmatika](#CWL_QuerySyntax-operations-arithmetic)
+ [Operator Boolean](#CWL_QuerySyntax-operations-Boolean)
+ [Operator perbandingan](#CWL_QuerySyntax-operations-comparison)
+ [Operator numerik](#CWL_QuerySyntax-operations-numeric)
+ [Jenis struktur](#CWL_QuerySyntax-structure-types)
+ [Fungsi datetime](#CWL_QuerySyntax-datetime)
+ [Fungsi umum](#CWL_QuerySyntax-general-functions)
+ [Fungsi JSON](#CWL_QuerySyntax-json-functions)
+ [Fungsi string alamat IP](#CWL_QuerySyntax-IPaddress-functions)
+ [Fungsi string](#CWL_QuerySyntax-string-functions)

## Operator aritmatika
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Operator aritmatika menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operator aritmatika dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operasi | Deskripsi | 
| --- | --- | 
|  `a + b` |  Penambahan  | 
|  `a - b` |  Pengurangan  | 
|  `a * b` |  Perkalian  | 
|  `a / b` |  Pembagian  | 
|  `a ^ b` |   Eksponensiasi (pengembalian) `2 ^ 3` `8`   | 
|  `a % b` |   Sisa atau modulus (pengembalian) `10 % 3` `1`   | 

## Operator Boolean
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Gunakan operator Boolean`and`,`or`, dan`not`. 

**catatan**  
 Gunakan operator Boolean hanya dalam fungsi yang mengembalikan nilai **TRUE** atau **FALSE**. 

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

 Operator perbandingan menerima semua tipe data sebagai argumen dan mengembalikan hasil Boolean. Gunakan operasi perbandingan dalam `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operator | Deskripsi | 
| --- | --- | 
|   `=`   |   Sama   | 
|   `!=`   |   Tidak sama   | 
|   `<`   |   Kurang dari   | 
|  `>` |   Lebih besar dari   | 
|  `<=` |   Kurang dari atau sama dengan   | 
|   `>=`   |   Lebih besar dari atau sama dengan   | 

## Operator numerik
<a name="CWL_QuerySyntax-operations-numeric"></a>

 Operasi numerik menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operasi numerik dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operasi | Tipe Hasil | Deskripsi | 
| --- | --- | --- | 
|   `abs(a: number)`   |   number   |   Nilai absolut   | 
|   `ceil(a: number)`   |   number   |   Bulat ke langit-langit (bilangan bulat terkecil yang lebih besar dari nilai) `a`   | 
|   `floor(a: number)`   |  number |   Bulat ke lantai (bilangan bulat terbesar yang lebih kecil dari nilai) `a`   | 
|   `greatest(a: number, ...numbers: number[])`   |   number   |   Mengembalikan nilai terbesar   | 
|   `least(a: number, ...numbers: number[])`   |  number |   Mengembalikan nilai terkecil   | 
|   `log(a: number)`   |   number   |   Log alami   | 
|   `sqrt(a: number)`   |   number   |   Akar kuadrat   | 

## Jenis struktur
<a name="CWL_QuerySyntax-structure-types"></a>

 Peta atau daftar adalah tipe struktur dalam Wawasan CloudWatch Log yang memungkinkan Anda mengakses dan menggunakan atribut untuk kueri. 

**Contoh: Untuk mendapatkan peta atau daftar**  
 Gunakan `jsonParse` untuk mengurai bidang yang berupa string json ke dalam peta atau daftar. 

```
fields jsonParse(@message) as json_message
```

**Contoh: Untuk mengakses atribut**  
 Gunakan operator akses titik (map.attribute) untuk mengakses item di peta.. Jika atribut dalam peta berisi karakter khusus, gunakan backticks untuk melampirkan nama atribut (map.attributes. `special.char`). 

```
fields jsonParse(@message) as json_message
| stats count() by json_message.status_code
```

 Gunakan operator akses braket (list [index]) untuk mengambil item pada posisi tertentu dalam daftar. 

```
fields jsonParse(@message) as json_message
| filter json_message.users[1].action = "PutData"
```

 Bungkus karakter khusus dalam backticks (``) ketika karakter khusus hadir dalam nama kunci. 

```
fields jsonParse(@message) as json_message
| filter json_message.`user.id` = "123"
```

**Contoh: hasil kosong**  
 Peta dan daftar diperlakukan sebagai null untuk fungsi string, nomor, dan datetime. 

```
fields jsonParse(@message) as json_message
| display toupper(json_message)
```

 Membandingkan peta dan daftar dengan bidang lain menghasilkan`false`. 

**catatan**  
 Menggunakan peta dan daftar di `dedup``pattern`,`sort`,, dan `stats` tidak didukung. 

## Fungsi datetime
<a name="CWL_QuerySyntax-datetime"></a>

 **Fungsi Datetime** 

 Gunakan fungsi datetime dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. Gunakan fungsi ini untuk membuat bucket waktu untuk kueri dengan fungsi agregat. Gunakan periode waktu yang terdiri dari angka dan salah satu dari yang berikut:
+ `ms`untuk milidetik 
+ `s`selama beberapa detik 
+ `m`selama beberapa menit 
+ `h`selama berjam-jam 

 Misalnya, `10m` adalah 10 menit, dan `1h` 1 jam. 

**catatan**  
Gunakan unit waktu yang paling tepat untuk fungsi datetime Anda. CloudWatch Log membatasi permintaan Anda sesuai dengan satuan waktu yang Anda pilih. Misalnya, ini membatasi 60 sebagai nilai maksimum untuk setiap permintaan yang menggunakan`s`. Jadi, jika Anda menentukan`bin(300s)`, CloudWatch Log sebenarnya mengimplementasikan ini sebagai 60 detik, karena 60 adalah jumlah detik dalam satu menit sehingga CloudWatch Log tidak akan menggunakan angka yang lebih tinggi dari 60 dengan`s`. Untuk membuat ember 5 menit, gunakan `bin(5m)` sebagai gantinya.  
Tutup untuk `ms` adalah 1000, tutup untuk `s` dan `m` 60, dan tutupnya `h` adalah 24.

Tabel berikut berisi daftar fungsi datetime yang berbeda yang dapat Anda gunakan dalam perintah query. Tabel mencantumkan jenis hasil setiap fungsi dan berisi deskripsi dari setiap fungsi. 

**Tip**  
 Saat Anda membuat perintah kueri, Anda dapat menggunakan pemilih interval waktu untuk memilih periode waktu yang ingin Anda kueri. Misalnya, Anda dapat mengatur periode waktu antara interval 5 dan 30 menit; interval 1, 3, dan 12 jam; atau kerangka waktu khusus. Anda juga dapat mengatur periode waktu antara tanggal tertentu. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Stempel waktu |  Membulatkan nilai `@timestamp` ke periode waktu tertentu dan kemudian memotong. Misalnya, `bin(5m)` bulatkan nilai `@timestamp` ke 5 menit terdekat. Anda dapat menggunakan ini untuk mengelompokkan beberapa entri log bersama-sama dalam kueri. Contoh berikut mengembalikan jumlah pengecualian per jam: <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> Satuan waktu dan singkatan berikut didukung dengan `bin` fungsi tersebut. Untuk semua unit dan singkatan yang menyertakan lebih dari satu karakter, menambahkan s ke pluralisasi didukung. Jadi keduanya `hr` dan `hrs` bekerja untuk menentukan jam. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Stempel waktu |  Memotong stempel waktu ke periode tertentu. Misalnya, `datefloor(@timestamp, 1h)` memotong semua nilai `@timestamp` ke bagian bawah jam.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Stempel waktu |  Membulatkan stempel waktu ke periode tertentu dan kemudian memotong. Misalnya, `dateceil(@timestamp, 1h)` memotong semua nilai `@timestamp` ke bagian atas jam.  | 
|  `fromMillis(fieldName: number)` |  Stempel waktu |  Menafsirkan bidang input sebagai jumlah milidetik sejak jangka waktu Unix dan mengubahnya menjadi stempel waktu.  | 
|  `toMillis(fieldName: Timestamp)` |  nomor |  Mengonversi stempel waktu yang ditemukan di bidang bernama menjadi angka yang mewakili milidetik sejak jangka waktu Unix. Misalnya, `toMillis(@timestamp)` mengubah stempel waktu `2022-01-14T13:18:031.000-08:00` menjadi. `1642195111000`  | 
|  `now()`  |  number  |  Mengembalikan waktu pemrosesan query dimulai, dalam detik epoch. Fungsi ini tidak membutuhkan argumen. Anda dapat menggunakan ini untuk memfilter hasil kueri Anda sesuai dengan waktu saat ini. Misalnya, query berikut mengembalikan semua kesalahan 4xx dari dua jam terakhir: <pre>parse @message "Status Code: *;" as statusCode\n <br />| filter statusCode >= 400 and statusCode <= 499  \n <br />| filter toMillis(@timestamp) >= (now() * 1000 - 7200000)</pre> Contoh berikut mengembalikan semua entri log dari lima jam terakhir yang berisi kata `error` atau `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**catatan**  
 Saat ini, CloudWatch Logs Insights tidak mendukung pemfilteran log dengan stempel waktu yang dapat dibaca manusia. 

## Fungsi umum
<a name="CWL_QuerySyntax-general-functions"></a>

 **Fungsi umum** 

 Gunakan fungsi umum dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Boolean   |   Mengembalikan `true` jika bidang ada   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Mengembalikan nilai non-null pertama dari daftar   | 

## Fungsi JSON
<a name="CWL_QuerySyntax-json-functions"></a>

 **Fungsi JSON** 

 Gunakan fungsi JSON dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Peta \$1 Daftar \$1 Kosong   |   Mengembalikan peta atau daftar ketika input adalah representasi string dari objek JSON atau array JSON. Mengembalikan nilai kosong, jika masukan bukan salah satu representasi.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   String   |   Mengembalikan string JSON dari peta atau daftar data.   | 

## Fungsi string alamat IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Fungsi string alamat IP** 

 Gunakan fungsi string alamat IP dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah valid IPv4 atau IPv6 alamat.  | 
|  `isValidIpV4(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv4 alamat yang valid.  | 
|  `isValidIpV6(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv6 alamat yang valid.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah valid IPv4 atau IPv6 alamat dalam v4 atau v6 subnet yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `192.0.2.0/24` atau`2001:db8::/32`, di mana `192.0.2.0` atau `2001:db8::` merupakan awal dari blok CIDR.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv4 alamat yang valid dalam subnet v4 yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `192.0.2.0/24` di `192.0.2.0` mana awal blok CIDR..  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv6 alamat yang valid dalam subnet v6 yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `2001:db8::/32` di `2001:db8::` mana awal blok CIDR.  | 

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

 **Fungsi string** 

 Gunakan fungsi string dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Bilangan |  Mengembalikan `1` jika bidang tidak ada atau string kosong.  | 
|  `isblank(fieldName: string)` |  Bilangan |  Mengembalikan `1` jika bidang tidak ada, string kosong, atau hanya berisi spasi.  | 
|  `concat(str: string, ...strings: string[])` |  string |  Menyatukan string.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kiri string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari kiri`str`. Misalnya, `ltrim("xyZxyfooxyZ","xyZ")` mengembalikan `"fooxyZ"`.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kanan string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari dari kanan`str`. Misalnya, `rtrim("xyZfooxyxyZ","xyZ")` mengembalikan `"xyZfoo"`.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kedua ujung string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari kedua sisi`str`. Misalnya, `trim("xyZxyfooxyxyZ","xyZ")` mengembalikan `"foo"`.  | 
|  `strlen(str: string)` |  nomor |  Mengembalikan panjang string dalam poin kode Unicode.  | 
|  `toupper(str: string)` |  string |  Mengonversi string menjadi huruf besar.  | 
|  `tolower(str: string)` |  string |  Mengonversi string menjadi huruf kecil.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  string |  Mengembalikan substring dari indeks yang ditentukan oleh argumen angka ke akhir string. Jika fungsi memiliki argumen angka kedua, itu berisi panjang substring yang akan diambil. Misalnya, `substr("xyZfooxyZ",3, 3)` mengembalikan `"foo"`.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  string |  Mengganti semua `searchValue` dalam `fieldName: string`dengan `replaceValue`. Misalnya, fungsi `replace(logGroup,"smoke_test","Smoke")` mencari peristiwa log di mana bidang `logGroup` berisi nilai string `smoke_test` dan menggantikan nilai dengan string. `Smoke`  | 
|  `strcontains(str: string, searchValue: string)` |  number |  Mengembalikan 1 jika `str` berisi `searchValue` dan 0 sebaliknya.  | 