

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

# Gunakan ekspresi rumus
<a name="formula-expressions"></a>

Dengan ekspresi rumus, Anda dapat menentukan fungsi matematika untuk mengubah dan menggabungkan data industri mentah Anda untuk mendapatkan wawasan tentang operasi Anda. Ekspresi rumus menggabungkan literal, operator, fungsi, dan variabel untuk memproses data. Untuk informasi selengkapnya tentang cara mendefinisikan properti aset yang menggunakan ekspresi rumus, lihat [Mengubah data (mengubah)](transforms.md) dan[Data agregat dari properti dan aset lainnya (metrik)](metrics.md). Transformasi dan metrik adalah properti rumus.

**Topics**
+ [Gunakan variabel dalam ekspresi rumus](expression-variables.md)
+ [Gunakan literal dalam ekspresi rumus](expression-literals.md)
+ [Gunakan operator dalam ekspresi rumus](expression-operators.md)
+ [Gunakan konstanta dalam ekspresi rumus](expression-constants.md)
+ [Gunakan fungsi dalam ekspresi rumus](expression-functions.md)
+ [Tutorial ekspresi formula](expression-tutorials.md)

# Gunakan variabel dalam ekspresi rumus
<a name="expression-variables"></a>

Variabel mewakili properti AWS IoT SiteWise aset dalam ekspresi rumus. Gunakan variabel untuk memasukkan nilai dari properti aset lain dalam ekspresi Anda, sehingga Anda dapat memproses data dari properti konstan ([atribut](attributes.md)), aliran data mentah ([pengukuran](measurements.md)), dan properti rumus lainnya.

Variabel dapat mewakili properti aset dari model aset yang sama atau dari model aset anak terkait. Hanya rumus metrik yang dapat memasukkan variabel dari model aset anak.

Anda mengidentifikasi variabel dengan nama yang berbeda di konsol dan API.
+ **AWS IoT SiteWise konsol** — Gunakan nama properti aset sebagai variabel dalam ekspresi Anda.
+ **AWS IoT SiteWise API (AWS CLI, AWS SDKs)** — Tentukan variabel dengan [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html)struktur, yang memerlukan nama variabel dan referensi ke properti aset. Nama variabel dapat berisi huruf kecil, angka, dan garis bawah. Kemudian, gunakan nama variabel untuk mereferensikan properti aset dalam ekspresi Anda.

Nama variabel peka huruf besar/kecil.

Untuk informasi selengkapnya, lihat [Mendefinisikan transformasi](transforms.md) dan [Mendefinisikan](metrics.md) metrik.

## Gunakan variabel untuk mereferensikan properti
<a name="variable-values"></a>

*Nilai* variabel mendefinisikan properti yang direferensikannya. AWS IoT SiteWise menyediakan berbagai cara untuk melakukan ini.
+ **Berdasarkan ID properti:** Anda dapat menentukan ID unik properti (UUID) untuk mengidentifikasinya.
+ **Dengan nama:** Jika properti berada pada model aset yang sama, Anda dapat menentukan namanya di bidang ID properti.
+ **Dengan jalur:** Nilai variabel dapat merujuk ke properti dengan *jalurnya.* Untuk informasi selengkapnya, lihat [Gunakan jalur untuk mereferensikan properti model komposit khusus](custom-composite-models.md#property-paths).

**catatan**  
 Variabel tidak didukung oleh AWS IoT SiteWise konsol. Mereka digunakan oleh AWS IoT SiteWise API, termasuk AWS Command Line Interface AWS CLI) dan AWS SDKs. 

 Variabel yang Anda terima dalam respons AWS IoT SiteWise mencakup informasi lengkap tentang nilai, termasuk ID dan jalur.

 Namun, ketika Anda meneruskan variabel ke AWS IoT SiteWise (misalnya, dalam panggilan “buat” atau “perbarui”), Anda hanya perlu menentukan salah satunya. Misalnya, jika Anda menentukan jalur, Anda tidak perlu memberikan ID. 

# Gunakan literal dalam ekspresi rumus
<a name="expression-literals"></a>

AWS IoT SiteWise mendukung penggunaan literal dalam ekspresi dan rumus. Literal adalah nilai tetap yang mewakili tipe data tertentu. Di AWS IoT SiteWise, Anda dapat menentukan angka dan string literal dalam ekspresi rumus. Literal dapat digunakan dalam berbagai konteks, termasuk transformasi data, kondisi alarm, dan perhitungan visualisasi.


+ <a name="number-literal-definition"></a>**Angka**

  Gunakan angka dan notasi ilmiah untuk mendefinisikan bilangan bulat dan ganda. Anda dapat menggunakan [notasi E](https://en.wikipedia.org/wiki/Scientific_notation#E_notation) untuk mengekspresikan angka dengan notasi ilmiah.

  Contoh:`1`,`2.0`,`.9`,`-23.1`,`7.89e3`, `3.4E-5`
+ <a name="string-literal-definition"></a>**String**

  Gunakan karakter `'` (kutipan) dan `"` (kutipan ganda) untuk menentukan string. Jenis kutipan untuk awal dan akhir harus cocok. Untuk menghindari kutipan yang cocok dengan yang Anda gunakan untuk mendeklarasikan string, sertakan karakter kutipan itu dua kali. Ini adalah satu-satunya karakter pelarian dalam AWS IoT SiteWise string.

  Contoh:`'active'`,`"inactive"`,`'{"temp": 52}'`, `"{""temp"": ""high""}"`

# Gunakan operator dalam ekspresi rumus
<a name="expression-operators"></a>

Anda dapat menggunakan operator umum berikut dalam ekspresi rumus.


| Operator | Deskripsi | 
| --- | --- | 
|  `+`  |  Jika kedua operan adalah angka, operator ini menambahkan operan kiri dan kanan. Jika salah satu operan adalah string, operator ini menggabungkan operan kiri dan kanan sebagai string. Misalnya, ekspresi `1 + 2 + " is three"` mengevaluasi. `"3 is three"` String gabungan dapat memiliki hingga 1024 karakter. Jika string melebihi 1024 karakter, maka AWS IoT SiteWise tidak menampilkan titik data untuk perhitungan itu.  | 
|  `-`  |  Mengurangi operan kanan dari operan kiri. <a name="operator-numbers-only"></a>Anda hanya dapat menggunakan operator ini dengan operan numerik.  | 
|  `/`  |  Membagi operan kiri dengan operan kanan. <a name="operator-numbers-only"></a>Anda hanya dapat menggunakan operator ini dengan operan numerik.  | 
|  `*`  |  Mengalikan operan kiri dan kanan. <a name="operator-numbers-only"></a>Anda hanya dapat menggunakan operator ini dengan operan numerik.  | 
|  `^`  |  Meningkatkan operan kiri ke kekuatan operan kanan (eksponensial). <a name="operator-numbers-only"></a>Anda hanya dapat menggunakan operator ini dengan operan numerik.  | 
|  `%`  |  Mengembalikan sisanya dari membagi operan kiri dengan operan kanan. Hasilnya memiliki tanda yang sama dengan operan kiri. Perilaku ini berbeda dari operasi modulo. <a name="operator-numbers-only"></a>Anda hanya dapat menggunakan operator ini dengan operan numerik.  | 
|  `x < y`  |  Mengembalikan `1` `x` jika kurang dari`y`, jika tidak`0`.  | 
|  `x > y`  |  Mengembalikan `1` jika `x` lebih besar dari`y`, jika tidak`0`.  | 
|  `x <= y`  |  Mengembalikan `1` `x` jika kurang dari atau sama dengan`y`, jika tidak`0`.  | 
|  `x >= y`  |  Mengembalikan `1` jika `x` lebih besar dari atau sama dengan`y`, jika tidak`0`.  | 
|  `x == y`  |  Mengembalikan `1` `x` jika sama dengan`y`, jika tidak`0`.  | 
|  `x != y`  |  Mengembalikan `1` `x` jika tidak sama dengan`y`, jika tidak`0`.  | 
|  `!x`  |  Mengembalikan `1` jika `x` dievaluasi ke `0` (false), jika tidak`0`. `x`dievaluasi menjadi false jika:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  Mengembalikan `0` jika `x` dievaluasi ke `0` (false). Jika tidak, mengembalikan hasil evaluasi dari. `y` `x`atau `y` dievaluasi menjadi false jika:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  Mengembalikan `1` jika `x` dievaluasi ke `1` (true). Jika tidak, mengembalikan hasil evaluasi dari. `y` `x`atau `y` dievaluasi menjadi false jika:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  Mengembalikan `1` jika `x` dievaluasi ke `0` (false), jika tidak`0`. `x`dievaluasi menjadi false jika:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  Mengembalikan karakter `index` pada indeks string`s`. Ini setara dengan sintaks indeks di Python. 

**Example Contoh**  
+ `"Hello!"[1]`kembali`e`.
+ `"Hello!"[-2]`kembali`o`.  | 
|   `[]` `s[start:end:step]`  |  Mengembalikan sepotong string`s`. Ini setara dengan sintaks slice di Python. Operator ini memiliki argumen berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-operators.html) Anda dapat menghilangkan `step` argumen untuk menggunakan nilai defaultnya. Misalnya, `s[1:4:1]` setara dengan `s[1:4]`. Argumen harus bilangan bulat atau [tidak ada](expression-constants.md#none-definition) konstanta. Jika Anda menentukan`none`, AWS IoT SiteWise menggunakan nilai default untuk argumen itu. 

**Example Contoh**  
+ `"Hello!"[1:4]`kembali`"ell"`.
+ `"Hello!"[:2]`kembali`"He"`.
+ `"Hello!"[3:]`kembali`"lo!"`.
+ `"Hello!"[:-4]`kembali`"He"`.
+ `"Hello!"[::2]`kembali`"Hlo"`.
+ `"Hello!"[::-1]`kembali`"!olleH"`.  | 

# Gunakan konstanta dalam ekspresi rumus
<a name="expression-constants"></a>

Di AWS IoT SiteWise, Anda dapat menggunakan konstanta dalam ekspresi dan rumus Anda untuk mewakili nilai tetap atau parameter yang telah ditentukan sebelumnya. Konstanta dapat digunakan dalam berbagai konteks, seperti transformasi data, kondisi alarm, atau perhitungan visualisasi. Dengan menggunakan konstanta, Anda dapat menyederhanakan ekspresi Anda dan membuatnya lebih mudah dibaca dan dipelihara.

Anda dapat menggunakan konstanta matematika umum berikut dalam ekspresi Anda. Semua konstanta tidak peka huruf besar/kecil.

**catatan**  
Jika Anda mendefinisikan variabel dengan nama yang sama dengan konstanta, variabel mengesampingkan konstanta.


| Konstan | Deskripsi | 
| --- | --- | 
|  `pi`  |  Angka pi (`π`): `3.141592653589793`  | 
|  `e`  |  Angka e: `2.718281828459045`  | 
|  `true`  |  Setara dengan angka 1. Pada tahun AWS IoT SiteWise, Boolean mengonversi ke jumlah yang setara.  | 
|  `false`  |  Setara dengan angka 0. Pada tahun AWS IoT SiteWise, Boolean mengonversi ke jumlah yang setara.  | 
|   `none`  |  Setara dengan tidak ada nilai. Anda dapat menggunakan konstanta ini untuk tidak menghasilkan apa pun sebagai hasil dari [ekspresi bersyarat](expression-conditional-functions.md).  | 

# Gunakan fungsi dalam ekspresi rumus
<a name="expression-functions"></a>

Anda dapat menggunakan fungsi berikut untuk mengoperasikan data dalam ekspresi rumus Anda.

Transformasi dan metrik mendukung fungsi yang berbeda. Tabel berikut menunjukkan jenis fungsi yang kompatibel dengan setiap jenis properti rumus.

**catatan**  
Anda dapat menyertakan maksimal 10 fungsi dalam ekspresi rumus.


| Jenis fungsi | Mengubah | Metrik-metrik | 
| --- | --- | --- | 
|  [Gunakan fungsi umum dalam ekspresi rumus](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi perbandingan dalam ekspresi rumus](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi kondisional dalam ekspresi rumus](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi string dalam ekspresi rumus](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi agregasi dalam ekspresi rumus](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-no.png) Tidak  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi temporal dalam ekspresi rumus](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 
|  [Gunakan fungsi tanggal dan waktu dalam ekspresi rumus](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/icon-yes.png) Ya  | 

## Sintaks fungsi
<a name="expression-function-syntax"></a>

Anda dapat menggunakan sintaks berikut untuk membuat fungsi:

Sintaks biasa  
Dengan sintaks reguler, nama fungsi diikuti oleh tanda kurung dengan nol atau lebih argumen.  
`function_name(argument1, argument2, argument3, ...)`. Misalnya, fungsi dengan sintaks biasa mungkin terlihat seperti `log(x)` dan`contains(s, substring)`.

Sintaks panggilan fungsi seragam (UFCS)  
UFCS memungkinkan Anda untuk memanggil fungsi menggunakan sintaks untuk panggilan metode dalam pemrograman berorientasi objek. Dengan UFCS, argumen pertama diikuti oleh dot (`.`), lalu nama fungsi dan argumen yang tersisa (jika ada) di dalam tanda kurung.  
`argument1.function_name(argument2, argument3, ...)`. Misalnya, fungsi dengan UFCS mungkin terlihat seperti `x.log()` dan. `s.contains(substring)`  
Anda juga dapat menggunakan UFCS untuk merantai fungsi selanjutnya. AWS IoT SiteWise menggunakan hasil evaluasi dari fungsi saat ini sebagai argumen pertama untuk fungsi berikutnya.  
Misalnya, Anda dapat menggunakan `message.jp('$.status').lower().contains('fail')` sebagai pengganti`contains(lower(jp(message, '$.status')),'fail')`.  
Untuk informasi lebih lanjut, kunjungi situs web [D Programming Language](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs).

**catatan**  
Anda dapat menggunakan UFCS untuk semua AWS IoT SiteWise fungsi.  
AWS IoT SiteWise fungsi tidak peka huruf besar/kecil. Misalnya, Anda dapat menggunakan `lower(s)` dan secara `Lower(s)` bergantian.

# Gunakan fungsi umum dalam ekspresi rumus
<a name="expression-common-functions"></a>

Dalam [transformasi](transforms.md) dan [metrik](metrics.md), Anda dapat menggunakan fungsi berikut untuk menghitung fungsi matematika umum dalam transformasi dan metrik.


| Fungsi | Deskripsi | 
| --- | --- | 
|  `abs(x)`  |  Mengembalikan nilai absolut dari`x`.  | 
|  `acos(x)`  |  Mengembalikan arccosine dari. `x`  | 
|  `asin(x)`  |  Mengembalikan arcsine dari. `x`  | 
|  `atan(x)`  |  Mengembalikan arctangent dari. `x`  | 
|  `cbrt(x)`  |  Mengembalikan akar kubik. `x`  | 
|  `ceil(x)`  |  Mengembalikan integer terdekat lebih besar dari`x`.  | 
|  `cos(x)`  |  Mengembalikan cosinus dari. `x`  | 
|  `cosh(x)`  |  Mengembalikan kosinus hiperbolik dari. `x`  | 
|  `cot(x)`  |  Mengembalikan kotangen dari. `x`  | 
|  `exp(x)`  |  Kembali `e` ke kekuatan`x`.  | 
|  `expm1(x)`  |  Pengembalian`exp(x) - 1`. Gunakan fungsi ini untuk menghitung lebih akurat `exp(x) - 1` untuk nilai kecil`x`.  | 
|  `floor(x)`  |  Mengembalikan integer terdekat kurang dari`x`.  | 
|  `log(x)`  |  Mengembalikan `loge` (basis`e`) dari`x`.  | 
|  `log10(x)`  |  Mengembalikan `log10` (basis`10`) dari`x`.  | 
|  `log1p(x)`  |  Pengembalian`log(1 + x)`. Gunakan fungsi ini untuk menghitung lebih akurat `log(1 + x)` untuk nilai kecil`x`.  | 
|  `log2(x)`  |  Mengembalikan `log2` (basis`2`) dari`x`.  | 
|  `pow(x, y)`  |  Kembali `x` ke kekuatan`y`. Ini setara dengan`x ^ y`.  | 
|  `signum(x)`  |  Mengembalikan tanda `x` (`-1`untuk input negatif, `0` untuk input nol, `+1` untuk input positif).  | 
|  `sin(x)`  |  Mengembalikan sinus dari. `x`  | 
|  `sinh(x)`  |  Mengembalikan sinus hiperbolik dari. `x`  | 
|  `sqrt(x)`  |  Mengembalikan akar kuadrat dari`x`.  | 
|  `tan(x)`  |  Mengembalikan garis singgung. `x`  | 
|  `tanh(x)`  |  Mengembalikan tangen hiperbolik dari. `x`  | 

# Gunakan fungsi perbandingan dalam ekspresi rumus
<a name="expression-comparison-functions"></a>

Dalam [transformasi](transforms.md) dan [metrik](metrics.md), Anda dapat menggunakan fungsi perbandingan berikut untuk membandingkan dua nilai dan output `1` (true) atau `0` (false). AWS IoT SiteWise membandingkan string dengan urutan [leksikografi](https://en.wikipedia.org/wiki/Lexicographic_order).


| Fungsi | Deskripsi | 
| --- | --- | 
|  `gt(x, y)`  |  Mengembalikan `1` jika `x` lebih besar dari`y`, jika tidak `0` (`x > y`). <a name="comparison-function-incompatible-types"></a>Fungsi ini tidak mengembalikan nilai if `x` dan tipe `y` yang tidak kompatibel, seperti angka dan string.  | 
|  `gte(x, y)`  |  Mengembalikan `1` jika `x` lebih besar dari atau sama dengan`y`, jika tidak `0` (`x ≥ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise menganggap argumen sama jika mereka berada dalam toleransi relatif`1E-9`. Ini berperilaku mirip dengan fungsi [isclose](https://docs.python.org/3/library/math.html#math.isclose) di Python. <a name="comparison-function-incompatible-types"></a>Fungsi ini tidak mengembalikan nilai if `x` dan tipe `y` yang tidak kompatibel, seperti angka dan string.  | 
|  `eq(x, y)`  |  Mengembalikan `1` `x` jika sama dengan`y`, jika tidak `0` (`x == y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise menganggap argumen sama jika mereka berada dalam toleransi relatif`1E-9`. Ini berperilaku mirip dengan fungsi [isclose](https://docs.python.org/3/library/math.html#math.isclose) di Python. <a name="comparison-function-incompatible-types"></a>Fungsi ini tidak mengembalikan nilai if `x` dan tipe `y` yang tidak kompatibel, seperti angka dan string.  | 
|  `lt(x, y)`  |  Mengembalikan `1` `x` jika kurang dari`y`, jika tidak `0` (`x < y`). <a name="comparison-function-incompatible-types"></a>Fungsi ini tidak mengembalikan nilai if `x` dan tipe `y` yang tidak kompatibel, seperti angka dan string.  | 
|  `lte(x, y)`  |  Mengembalikan `1` `x` jika kurang dari atau sama dengan`y`, jika tidak `0` (`x ≤ y`). <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise menganggap argumen sama jika mereka berada dalam toleransi relatif`1E-9`. Ini berperilaku mirip dengan fungsi [isclose](https://docs.python.org/3/library/math.html#math.isclose) di Python. <a name="comparison-function-incompatible-types"></a>Fungsi ini tidak mengembalikan nilai if `x` dan tipe `y` yang tidak kompatibel, seperti angka dan string.  | 
|  `isnan(x)`  |  Mengembalikan `1` `x` jika sama dengan`NaN`, jika tidak`0`. Fungsi ini tidak mengembalikan nilai jika `x` adalah string.  | 

# Gunakan fungsi kondisional dalam ekspresi rumus
<a name="expression-conditional-functions"></a>

Dalam [transformasi](transforms.md) dan [metrik](metrics.md), Anda dapat menggunakan fungsi berikut untuk memeriksa kondisi dan mengembalikan hasil yang berbeda, apakah kondisi dievaluasi menjadi benar atau salah.


| Fungsi | Deskripsi | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  Mengevaluasi `condition` dan mengembalikan `result_if_true` jika kondisi dievaluasi menjadi benar atau `result_if_false` jika kondisi dievaluasi. `false` `condition`harus berupa angka. Fungsi ini mempertimbangkan `0` dan string kosong sebagai `false` dan segala sesuatu yang lain (termasuk`NaN`) sebagai`true`. Boolean mengkonversi ke `0` (false) dan `1` (true). Anda dapat mengembalikan [konstanta none](expression-constants.md#none-definition) dari fungsi ini untuk membuang output untuk kondisi tertentu. Ini berarti Anda dapat memfilter titik data yang tidak memenuhi suatu kondisi. Untuk informasi selengkapnya, lihat [Filter titik data](expression-tutorials.md#filter-data). 

**Example Contoh**  
+ `if(0, x, y)`mengembalikan variabel`y`.
+ `if(5, x, y)`mengembalikan variabel`x`.
+ `if(gt(temp, 300), x, y)`mengembalikan variabel `x` jika variabel `temp` lebih besar dari`300`.
+ `if(gt(temp, 300), temp, none)`mengembalikan variabel `temp` jika lebih besar dari atau sama dengan`300`, atau `none` (tidak ada nilai) jika `temp` kurang dari`300`. Kami menyarankan Anda menggunakan UFCS untuk fungsi bersyarat bersarang di mana satu atau lebih argumen adalah fungsi bersyarat. Anda dapat menggunakan `if(condition, result_if_true)` untuk mengevaluasi suatu kondisi dan `elif(condition, result_if_true, result_if_false)` untuk mengevaluasi kondisi tambahan. Misalnya, Anda dapat menggunakan `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)` sebagai pengganti`if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`. Anda juga dapat menghubungkan fungsi kondisional menengah tambahan. Misalnya, Anda dapat menggunakan `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)` alih-alih menyarangkan beberapa `if` pernyataan, seperti`if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`.  Anda harus menggunakan `elif(condition, result_if_true, result_if_false)` dengan UFCS.   | 

# Gunakan fungsi string dalam ekspresi rumus
<a name="expression-string-functions"></a>

Dalam [transformasi](transforms.md) dan [metrik](metrics.md), Anda dapat menggunakan fungsi berikut untuk beroperasi pada string. Untuk informasi selengkapnya, lihat [Gunakan string dalam rumus](expression-tutorials.md#use-strings-in-formulas).

**penting**  
<a name="formula-output-rules"></a>Ekspresi rumus hanya dapat menampilkan nilai ganda atau string. Ekspresi bersarang dapat menampilkan tipe data lain, seperti string, tetapi rumus secara keseluruhan harus mengevaluasi ke angka atau string. Anda dapat menggunakan [fungsi jp](#jp-definition) untuk mengonversi string ke angka. Nilai Boolean harus 1 (true) atau 0 (false). Untuk informasi selengkapnya, lihat [Nilai tidak terdefinisi, tak terbatas, dan meluap](expression-tutorials.md#undefined-values).


| Fungsi | Deskripsi | 
| --- | --- | 
|  `len(s)`  |  Mengembalikan panjang string`s`.  | 
|  `find(s, substring)`  |  Mengembalikan indeks string `substring` dalam string`s`.  | 
|  `contains(s, substring)`  |  Mengembalikan `1` jika string `s` berisi string`substring`, jika tidak`0`.  | 
|  `upper(s)`  |  Mengembalikan string `s` dalam bentuk huruf besar.  | 
|  `lower(s)`  |  Mengembalikan string `s` dalam bentuk huruf kecil.  | 
|   `jp(s, json_path)`  |  Mengevaluasi string `s` dengan [JsonPath](https://github.com/json-path/JsonPath)ekspresi `json_path` dan mengembalikan hasilnya. Gunakan fungsi ini untuk melakukan hal berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-string-functions.html) Untuk mengekstrak nilai string dari struktur JSON dan mengembalikannya sebagai angka, Anda harus menggunakan beberapa fungsi bersarang`jp`. `jp`Fungsi luar mengekstrak string dari struktur JSON, dan `jp` fungsi dalam mengubah string menjadi angka. String `json_path` harus berisi string literal. Ini berarti bahwa tidak `json_path` bisa menjadi ekspresi yang mengevaluasi ke string. 

**Example Contoh**  
+ `jp('{"status":"active","value":15}', '$.value')`kembali`15`.
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')`kembali`25`.
+ `jp('[2,8,23]', '$[2]')`kembali`23`.
+ `jp('{"values":[3,6,7]}', '$.values[1]')`kembali`6`.
+ `jp('111', '$')`kembali`111`.
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')`kembali`0.95`.  | 
|  `join(s0, s1, s2, s3, ...)`  |  Mengembalikan string gabungan dengan pembatas. Fungsi ini menggunakan string input pertama sebagai pembatas dan menggabungkan string input yang tersisa bersama-sama. Ini berperilaku mirip dengan fungsi [join (CharSequence delimiter, CharSequence... elements)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-) di Java. 

**Example Contoh**  
+ `join("-", "aa", "bb", "cc")`kembali `aa-bb-cc`  | 
|  `format(expression: "format")` atau `format("format", expression)`  |  Mengembalikan string dalam format yang ditentukan. Fungsi ini mengevaluasi `expression` nilai, dan kemudian mengembalikan nilai dalam format yang ditentukan. Ini berperilaku mirip dengan fungsi [format (String format, Object... args)](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-) di Java. Untuk informasi selengkapnya tentang format yang didukung, lihat Konversi di bawah [Formatter Kelas](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) di *Platform Java, Spesifikasi API Edisi Standar 7*. 

**Example Contoh**  
+ `format(100+1: "d")`mengembalikan string,`101`.
+ `format("The result is %d", 100+1)`mengembalikan string,`The result is 101`.  | 
|  `f'expression'`  |  Mengembalikan string gabungan. Dengan fungsi diformat ini, Anda dapat menggunakan ekspresi sederhana untuk menggabungkan dan memformat string. Fungsi-fungsi ini mungkin berisi ekspresi bersarang. Anda dapat menggunakan `{}` (kurawal kurawal) untuk menginterpolasi ekspresi. Ini berperilaku mirip dengan [literal string yang diformat di](https://docs.python.org/3/reference/lexical_analysis.html#f-strings) Python. 

**Example Contoh**  
+ `f'abc{1+2: "f"}d'`kembali`abc3.000000d`. Untuk mengevaluasi ekspresi contoh ini, lakukan hal berikut:

  1. `format(1+2: "f")`mengembalikan nomor floating point,`3.000000`.

  1. `join('', "abc", 1+2, 'd')`mengembalikan string,`abc3.000000d`.

  Anda juga dapat menulis ekspresi dengan cara berikut:`join('', "abc", format(1+2: "f"), 'd')`.  | 

# Gunakan fungsi agregasi dalam ekspresi rumus
<a name="expression-aggregation-functions"></a>

Hanya dalam [metrik](metrics.md), Anda dapat menggunakan fungsi berikut yang menggabungkan nilai input setiap interval waktu dan menghitung nilai output tunggal. Fungsi agregasi dapat mengumpulkan data dari aset terkait.

Argumen fungsi agregasi dapat berupa [variabel](expression-variables.md), [literal angka](expression-literals.md#number-literal-definition), [fungsi temporal](expression-temporal-functions.md), ekspresi bersarang, atau fungsi agregasi. Rumus `max(latest(x), latest(y), latest(z))` menggunakan fungsi agregasi sebagai argumen dan mengembalikan nilai saat ini terbesar dari`x`,`y`, dan `z` properti.

Anda dapat menggunakan ekspresi bersarang dalam fungsi agregasi. Bila Anda menggunakan ekspresi bersarang, aturan berikut berlaku: 
+ Setiap argumen hanya dapat memiliki satu variabel.  
**Example**  

  Misalnya, `avg(x*(x-1))` dan `sum(x/2 )/avg(y^2 )` didukung.

  Misalnya, `min(x/y)` tidak didukung.
+ Setiap argumen dapat memiliki ekspresi bersarang bertingkat.  
**Example**  

  Misalnya, `sum(avg(x^2 )/2)` didukung.
+ Argumen yang berbeda dapat memiliki variabel yang berbeda.  
**Example**  

  Misalnya, `sum(x/2, y*2)` didukung.

**catatan**  
Jika ekspresi Anda berisi pengukuran, AWS IoT SiteWise gunakan nilai terakhir selama interval waktu saat ini untuk pengukuran untuk menghitung agregat.
Jika ekspresi Anda berisi atribut, AWS IoT SiteWise gunakan nilai terbaru untuk atribut untuk menghitung agregat.


| Fungsi | Deskripsi | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  Mengembalikan rata-rata nilai variabel yang diberikan selama interval waktu saat ini. <a name="aggregation-function-no-output"></a>Fungsi ini menghasilkan titik data hanya jika variabel yang diberikan memiliki setidaknya satu titik data selama interval waktu saat ini.  | 
|   `sum(x0, ..., xn)`  |  Mengembalikan jumlah nilai variabel yang diberikan selama interval waktu saat ini. <a name="aggregation-function-no-output"></a>Fungsi ini menghasilkan titik data hanya jika variabel yang diberikan memiliki setidaknya satu titik data selama interval waktu saat ini.  | 
|  `min(x0, ..., xn)`  |  Mengembalikan nilai minimum variabel yang diberikan selama interval waktu saat ini. <a name="aggregation-function-no-output"></a>Fungsi ini menghasilkan titik data hanya jika variabel yang diberikan memiliki setidaknya satu titik data selama interval waktu saat ini.  | 
|  `max(x0, ..., xn)`  |  Mengembalikan nilai maksimum variabel yang diberikan selama interval waktu saat ini. <a name="aggregation-function-no-output"></a>Fungsi ini menghasilkan titik data hanya jika variabel yang diberikan memiliki setidaknya satu titik data selama interval waktu saat ini.  | 
|  `count(x0, ..., xn)`  |  Mengembalikan jumlah total titik data untuk variabel yang diberikan selama interval waktu saat ini. Untuk informasi selengkapnya tentang cara menghitung jumlah titik data yang memenuhi suatu kondisi, lihat[Hitung titik data yang cocok dengan kondisi](expression-tutorials.md#count-filtered-data). <a name="aggregation-function-always-output"></a>Fungsi ini menghitung titik data untuk setiap interval waktu.  | 
| `stdev(x0, ..., xn)` | Mengembalikan standar deviasi nilai variabel yang diberikan selama interval waktu saat ini. Fungsi ini menghasilkan titik data hanya jika variabel yang diberikan memiliki setidaknya satu titik data selama interval waktu saat ini.  | 

# Gunakan fungsi temporal dalam ekspresi rumus
<a name="expression-temporal-functions"></a>

Gunakan fungsi temporal untuk mengembalikan nilai berdasarkan stempel waktu titik data.

## Gunakan fungsi temporal dalam metrik
<a name="temporal-functions-in-metrics"></a>

Hanya dalam [metrik](metrics.md), Anda dapat menggunakan fungsi berikut yang mengembalikan nilai berdasarkan stempel waktu titik data.

Argumen fungsi temporal harus berupa properti dari model aset lokal atau ekspresi bersarang. Ini berarti Anda tidak dapat menggunakan properti dari model aset anak dalam fungsi temporal.

Anda dapat menggunakan ekspresi bersarang dalam fungsi temporal. Bila Anda menggunakan ekspresi bersarang, aturan berikut berlaku: 
+ Setiap argumen hanya dapat memiliki satu variabel.

  Misalnya, `latest( t*9/5 + 32 )` didukung.
+ Argumen tidak bisa berupa fungsi agregasi.

  Misalnya, `first( sum(x) )` tidak didukung.


| Fungsi | Deskripsi | 
| --- | --- | 
|  `first(x)`  |  Mengembalikan nilai variabel yang diberikan dengan stempel waktu paling awal selama interval waktu saat ini.  | 
|   `last(x)` |  Mengembalikan nilai variabel yang diberikan dengan timestamp terbaru selama interval waktu saat ini.  | 
|  `earliest(x)`  |  Mengembalikan nilai terakhir variabel yang diberikan sebelum dimulainya interval waktu saat ini. Fungsi ini menghitung titik data untuk setiap interval waktu, jika properti input memiliki setidaknya satu titik data dalam sejarahnya. Lihat [time-range-defintion](#time-range-def) untuk detail.   | 
|   `latest(x)` |  Mengembalikan nilai terakhir variabel yang diberikan dengan stempel waktu terbaru sebelum akhir interval waktu saat ini. Fungsi ini menghitung titik data untuk setiap interval waktu, jika properti input memiliki setidaknya satu titik data dalam sejarahnya. Lihat [time-range-defintion](#time-range-def) untuk detail.  | 
|   `statetime(x)`  |  Mengembalikan jumlah waktu dalam detik bahwa variabel yang diberikan positif selama interval waktu saat ini. Anda dapat menggunakan [fungsi perbandingan](expression-comparison-functions.md) untuk membuat properti transform untuk `statetime` fungsi yang akan digunakan.  Misalnya, jika Anda memiliki `Idle` properti yang `0` atau`1`, Anda dapat menghitung waktu idle per interval waktu dengan ekspresi ini:`IdleTime = statetime(Idle)`. Untuk informasi selengkapnya, lihat [contoh skenario statetime](#statetime-example). Fungsi ini tidak mendukung properti metrik sebagai variabel input. Fungsi ini menghitung titik data untuk setiap interval waktu, jika properti input memiliki setidaknya satu titik data dalam sejarahnya.  | 
|   `TimeWeightedAvg(x, [interpolation])`  | Mengembalikan rata-rata data masukan yang ditimbang dengan interval waktu antar titik.Lihat [Parameter fungsi berbobot waktu](#timeweighted-parameter) untuk detail komputasi dan interval.Argumen opsional `interpolaton` harus berupa konstanta string:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  Mengembalikan standar deviasi data masukan tertimbang dengan interval waktu antar titik.  Lihat [Parameter fungsi berbobot waktu](#timeweighted-parameter) untuk detail komputasi dan interval.  Perhitungan menggunakan algoritma komputasi Last Observated Carry Forward untuk interval antar titik data. Dalam pendekatan ini, titik data dihitung sebagai nilai terakhir yang diamati hingga cap waktu titik data input berikutnya. Berat dihitung sebagai interval waktu dalam hitungan detik antara titik data atau batas jendela.  Argumen opsional `algo` harus berupa konstanta string: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-temporal-functions.html) Rumus berikut digunakan untuk perhitungan di mana: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-temporal-functions.html) Persamaan untuk standar deviasi populasi: ![\[Persamaan untuk standar deviasi populasi.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) Persamaan untuk standar deviasi frekuensi: ![\[Persamaan untuk standar deviasi frekuensi.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

Diagram berikut menunjukkan bagaimana AWS IoT SiteWise menghitung fungsi temporal`first`,,`last`, dan `earliest``latest`, relatif terhadap interval waktu saat ini.

![\[AWS IoT SiteWise fungsi temporal mengembalikan titik data berdasarkan stempel waktunya.\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**catatan**  
Rentang waktu untuk`first(x)`, `last(x)` adalah (mulai jendela saat ini, akhir jendela saat ini].
Rentang waktu untuk `latest(x)` adalah (awal waktu, akhir jendela saat ini].
Rentang waktu untuk `earliest(x)` adalah (awal waktu, akhir jendela sebelumnya].

**Parameter fungsi berbobot waktu**

Fungsi berbobot waktu yang dihitung untuk jendela agregat memperhitungkan hal-hal berikut:
+ Titik data di dalam jendela
+ Interval waktu antara titik data
+ Titik data terakhir sebelum jendela
+ Titik data pertama setelah jendela (untuk beberapa algoritma)

**Ketentuan:**
+ **Titik data buruk — Setiap titik** data dengan kualitas yang tidak baik atau nilai non-angka. Ini tidak dipertimbangkan dalam perhitungan hasil jendela.
+ **Interval buruk** — Interval setelah titik data yang buruk. Interval sebelum titik data pertama yang diketahui juga dianggap sebagai interval yang buruk.
+ **Titik data yang baik** — Setiap titik data dengan kualitas dan nilai numerik yang baik.

**catatan**  
AWS IoT SiteWise hanya mengkonsumsi data `GOOD` berkualitas saat menghitung transformasi dan metrik. Ini mengabaikan `UNCERTAIN` dan titik `BAD` data.
Interval sebelum titik data pertama yang diketahui dianggap sebagai **interval yang buruk**. Untuk informasi selengkapnya, lihat [Tutorial ekspresi formula](expression-tutorials.md).

Interval setelah titik data terakhir yang diketahui berlanjut tanpa batas, mempengaruhi semua jendela berikut. Ketika titik data baru tiba, fungsi menghitung ulang interval.

Mengikuti aturan di atas, hasil jendela agregat dihitung dan terbatas pada batas jendela. Secara default, fungsi hanya mengirimkan hasil jendela jika seluruh jendela adalah **interval yang baik**.

Jika **interval jendela yang baik** lebih kecil dari panjang jendela, fungsi tidak mengirim jendela. 

Ketika titik data yang mempengaruhi hasil jendela berubah, fungsi menghitung ulang jendela, bahkan jika titik data berada di luar jendela. 

Jika properti input memiliki setidaknya satu titik data dalam histori dan perhitungan telah dimulai, fungsi menghitung fungsi agregat berbobot waktu untuk setiap interval waktu.

**Example Contoh skenario statetime**  
Pertimbangkan contoh di mana Anda memiliki aset dengan properti berikut:  
+ `Idle`— Pengukuran yang `0` atau`1`. Ketika nilainya`1`, mesin menganggur.
+ `Idle Time`— Metrik yang menggunakan rumus `statetime(Idle)` untuk menghitung jumlah waktu dalam detik di mana mesin dalam keadaan idle, per interval 1 menit.
`Idle`Properti ini memiliki titik data berikut.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Stempel waktu | 14:00:00 | 14:00:30 | 14:01:15 SORE | 14:02:45 SORE | 14:04:00 SORE | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise menghitung `Idle Time` properti setiap menit dari nilai. `Idle` Setelah perhitungan ini selesai, `Idle Time` properti memiliki titik data berikut.  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Stempel waktu | 14:00:00 | 14:01:00PM | 14:02:00PM | 14:03:00 SORE | 14:04:00 SORE | 
| Idle Time | N/A | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise melakukan perhitungan berikut untuk `Idle Time` pada akhir setiap menit.  
+ Pukul 14:00 (untuk 13:59 hingga 14:00)
  + Tidak ada data `Idle` sebelum pukul 14:00, jadi tidak ada titik data yang dihitung.
+ Pukul 14:01 (untuk 2:00 PM hingga 14:01 PM)
  + Pada pukul 14:00:00, mesin aktif (`Idle`sedang`0`).
  + Pada 14:00:30, mesin dalam keadaan idle (`Idle`is). `1`
  + `Idle`tidak berubah lagi sebelum akhir interval pada 2:01:00 PM, begitu `Idle Time` juga 30 detik.
+ Pukul 14:02 (untuk 14:01 PM hingga 14:02 PM)
  + Pada pukul 14:01:00, mesin dalam keadaan idle (per titik data terakhir pada pukul 14:00:30).
  + Pukul 14:01:15, mesin masih menganggur.
  + `Idle`tidak berubah lagi sebelum akhir interval pada 2:02:00 PM, begitu `Idle Time` juga 60 detik.
+ Pukul 14:03 (untuk 14:02 PM hingga 14:03 PM)
  + Pada pukul 14:02:00, mesin dalam keadaan idle (per titik data terakhir pada 2:01:15 PM).
  + Pada pukul 14:02:45, mesin aktif.
  + `Idle`tidak berubah lagi sebelum akhir interval pada 2:03:00 PM, begitu `Idle Time` juga 45 detik.
+ Pukul 14:04 (untuk 14:03 PM hingga 14:04 PM)
  + Pada 2:03:00 PM, mesin aktif (per titik data terakhir pada 2:02:45 PM).
  + `Idle`tidak berubah lagi sebelum akhir interval pada 2:04:00 PM, begitu `Idle Time` juga 0 detik.

**Example Contoh TimeWeightedAvg dan TimeWeightedStDev skenario**  
Tabel berikut menyediakan contoh input dan output untuk metrik jendela satu menit ini:. `Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`  
Masukan sampel untuk jendela agregat satu menit:  
Semua titik data ini memiliki `GOOD` kualitas.


|  |  | 
| --- |--- |
| 03:00:00 | 4.0 | 
| 03:01:00 | 2.0 | 
| 03:01:10 | 8.0 | 
| 03:01:50 | 20.0 | 
| 03:02:00 | 14.0 | 
| 03:02:05 | 10.0 | 
| 03:02:10 | 3.0 | 
| 03:02:30 | 20.0 | 
| 03:03:30 | 0.0 | 
Output hasil agregat:  
Tidak ada - Hasil tidak diproduksi untuk jendela ini.


| Waktu | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3:00:00 | 4 | Tidak ada | Tidak ada | 0 | Tidak ada | Tidak ada | 
| 3:01:00 | 2 | 4 | 3 | 0 | 0 | 0 | 
| 3:02:00 | 14 | 9 | 13 | 6 | 5.430610041581775 | 5.385164807134504 | 
| 3:03:00 | 11 | 13 | 12.875 | 8.54400374531753 | 7.724054437220943 | 7.659416862050705 | 
| 3:04:00 | 0 | 10 | 2.5 | 0 | 10.084389681792215 | 10 | 
| 3:05:00 | Tidak ada | 0 | 0 | Tidak ada | 0 | 0 | 

## Gunakan fungsi temporal dalam transformasi
<a name="temporal-functions-in-transforms"></a>

Dalam [transformasi](transforms.md) saja, Anda dapat menggunakan `pretrigger()` fungsi untuk mengambil nilai `GOOD` kualitas untuk variabel sebelum pembaruan properti yang memulai perhitungan transformasi saat ini.

Pertimbangkan contoh di mana produsen menggunakan AWS IoT SiteWise untuk memantau status mesin. Pabrikan menggunakan pengukuran dan transformasi berikut untuk mewakili proses:
+ Pengukuran,`current_state`, yang bisa 0 atau 1.
  + Jika mesin dalam keadaan pembersihan, `current_state` sama dengan 1.
  + Jika mesin dalam keadaan manufaktur, `current_state` sama dengan 0.
+ Sebuah transformasi,`cleaning_state_duration`, itu sama. `if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)` Transformasi ini mengembalikan berapa lama mesin berada dalam keadaan pembersihan dalam hitungan detik, dalam format epoch Unix. Untuk informasi selengkapnya, lihat [Gunakan fungsi kondisional dalam ekspresi rumus](expression-conditional-functions.md) dan fungsi [timestamp ()](expression-date-and-time-functions.md).

Jika mesin tetap dalam kondisi pembersihan lebih lama dari yang diharapkan, pabrikan mungkin menyelidiki mesin.

Anda juga dapat menggunakan `pretrigger()` fungsi dalam transformasi multivariat. Misalnya, Anda memiliki dua pengukuran bernama `x` dan`y`, dan transformasi,`z`, yang sama. `x + y + pretrigger(y)` Tabel berikut menunjukkan nilai untuk`x`,`y`, dan `z` dari 9:00 AM sampai 9:15 AM.

**catatan**  
Contoh ini mengasumsikan bahwa nilai untuk pengukuran tiba secara kronologis. Misalnya, nilai `x` untuk 09:00 AM tiba sebelum nilai `x` untuk 09:05 AM.
Jika titik data untuk 9:05 tiba sebelum titik data untuk 9:00 AM, `z` tidak dihitung pada 9:05 AM.
Jika nilai `x` untuk 9:05 tiba sebelum nilai `x` untuk 09:00 AM dan nilai `y` tiba secara kronologis, `z` sama `22 = 20 + 1 + 1` dengan pukul 9:05 pagi.


|  | 09:00AM | 09:05AM | 09:10AM | 09:15AM | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y`tidak menerima titik data apa pun sebelum pukul 09:00. Oleh karena itu, `z` tidak dihitung pada pukul 09:00.  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)`sama dengan 1.  |  25 = 20 \$1 3 \$1 2 `x`tidak menerima titik data baru. `pretrigger(y)`sama dengan 2.  |  36 = 30 \$1 3 \$1 3 `y`tidak menerima titik data baru. Oleh karena itu, `pretrigger(y)` sama dengan 3 pada 09:15 AM.  | 

# Gunakan fungsi tanggal dan waktu dalam ekspresi rumus
<a name="expression-date-and-time-functions"></a>

Dalam [transformasi](transforms.md) dan [metrik](metrics.md), Anda dapat menggunakan fungsi tanggal dan waktu dengan cara berikut:
+ Ambil stempel waktu saat ini dari titik data di UTC atau di zona waktu lokal.
+ Membangun stempel waktu dengan argumen, seperti,`year`, `month` dan. `day_of_month`
+ Ekstrak periode waktu seperti satu tahun atau bulan dengan `unix_time` argumen.


| Fungsi | Deskripsi | 
| --- | --- | 
|  `now()`  |  Mengembalikan tanggal dan waktu saat ini, dalam detik, dalam format epoch Unix.  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  Mengembalikan waktu input dalam hitungan detik, dalam format epoch Unix. Persyaratan berikut berlaku untuk menggunakan fungsi ini: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Batasan berikut berlaku untuk menggunakan fungsi ini: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Contoh: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  Mengembalikan tahun, hari dalam sebulan, hari dalam seminggu, hari dalam setahun, jam, menit, atau yang kedua di zona waktu yang ditentukan dari waktu Unix. Persyaratan berikut berlaku untuk menggunakan fungsi ini: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) Contoh respon: `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)`bukan fungsi mandiri. `sec()`Fungsi `year()``mon()`,`mday`,`wday()`,`yday()`, `hour()``minute()`,, dan diambil `localtime(unix_time, time_zone)` sebagai argumen. Contoh: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  Mengembalikan tahun dari`localtime(unix_time, time_zone)`.  | 
|  `mon(localtime(unix_time, time_zone))`  |  Mengembalikan bulan dari`localtime(unix_time, time_zone)`.  | 
|  `mday(localtime(unix_time, time_zone))`  |  Mengembalikan hari dalam sebulan dari`localtime(unix_time, time_zone)`.  | 
|  `wday(localtime(unix_time, time_zone))`  |  Mengembalikan hari dalam seminggu dari`localtime(unix_time, time_zone)`.  | 
|  `yday(localtime(unix_time, time_zone))`  |  Mengembalikan hari dalam setahun dari`localtime(unix_time, time_zone)`.  | 
|  `hour(localtime(unix_time, time_zone))`  |  Mengembalikan jam dari`localtime(unix_time, time_zone)`.  | 
|  `minute(localtime(unix_time, time_zone))`  |  Mengembalikan menit dari`localtime(unix_time, time_zone)`.  | 
|  `sec(localtime(unix_time, time_zone))`  |  Mengembalikan yang kedua dari`localtime(unix_time, time_zone)`.  | 

## Format zona waktu yang didukung
<a name="time-zone-expressions"></a>

Anda dapat menentukan argumen zona waktu dengan cara berikut:
+ Offset zona waktu - Tentukan `'Z'` untuk UTC atau offset (`'+2'`atau). `'-5'`
+ Offset IDs - Gabungkan singkatan zona waktu dan offset. Misalnya, `'GMT+2'` dan `'UTC-01:00'`. Singkatan zona waktu harus berisi hanya tiga huruf.
+ Berbasis wilayah IDs - Misalnya, `'Etc/GMT+12'` dan`'Pacific/Pago_Pago'`.

### Singkatan zona waktu yang didukung
<a name="spported-time-zones"></a>

Fungsi tanggal dan waktu mendukung singkatan zona waktu tiga huruf berikut: 
+ EST - - 05:00
+ HST - - 10:00
+ MST - - 07:00
+ ACT - Australia/Darwin
+ AET - Australia/Sydney
+ AGT - America/Argentina/Buenos Aires
+ ART - Afrika/Kairo
+ AST - Amerika/Anchorage
+ TARUHAN - Amerika/Sao\$1Paulo
+ BST - Asia/Dhaka
+ CAT - Afrika/Harare
+ CET - Eropa/Paris
+ CNT - Amerika/St\$1Johns
+ CST - Amerika/Chicago
+ CTT - Asia/Shanghai 
+ MAKAN - Afrika/Addis\$1Ababa
+ IET - America/Indiana/Indianapolis
+ IST - Asia/Kolkata
+ JST - Asia/Tokyo
+ MIT - Pasifik/Apia
+ NET - Asia/Yerevan
+ NST - Pasifik/Auckland
+ PLT - Asia/Karachi
+ PRT - Amerika/Puerto\$1Rico
+ PST - Amerika/Los\$1Angeles
+ SST - Pasifik/Guadalkanal
+ VST - Asia/Ho\$1Chi\$1Minh

### Berbasis wilayah yang didukung IDs
<a name="supported-region-based-ids"></a>

Fungsi tanggal dan waktu mendukung berbasis Wilayah berikut IDs, yang diatur berdasarkan hubungannya dengan UTC\$1 00:00:
+ Dll/GMT\$112 (UTC- 12:00)
+ Pasifik/Pago\$1Pago (UTC- 11:00)
+ Pasifik/Samoa (UTC- 11:00)
+ Pasifik/Niue (UTC- 11:00)
+ AS/Samoa (UTC- 11:00)
+ Dll/GMT\$111 (UTC- 11:00)
+ Pasifik/Midway (UTC- 11:00)
+ Pasifik/Honolulu (UTC- 10:00)
+ Pasifik/Rarotonga (UTC- 10:00)
+ Pasifik/Tahiti (UTC- 10:00)
+ Pasifik/Johnston (UTC- 10:00)
+ AS/Hawaii (UTC- 10:00)
+ SystemV/ HST10 (UTC- 10:00)
+ Dll/GMT\$110 (UTC- 10:00)
+ Pasifik/Marquesas (UTC- 09:30)
+ Dll/GMT\$19 (UTC- 09:00)
+ Pasifik/Gambier (UTC- 09:00)
+ Amerika/Atka (UTC- 09:00)
+ SystemV/ YST9 (UTC- 09:00)
+ Amerika/Adak (UTC- 09:00)
+ AS/Aleutian (UTC- 09:00)
+ Dll/GMT\$18 (UTC- 08:00)
+ AS/Alaska (UTC- 08:00)
+ Amerika/Juneau (UTC- 08:00)
+ Amerika/Metlakatla (UTC- 08:00)
+ Amerika/Yakutat (UTC- 08:00)
+ Pasifik/Pitcairn (UTC- 08:00)
+ Amerika/Sitka (UTC- 08:00)
+ Amerika/Anchorage (UTC- 08:00)
+ SystemV/ PST8 (UTC- 08:00)
+ Amerika/Nama (UTC- 08:00)
+ YST9SystemV/YDT (UTC- 08:00)
+ Kanada/Yukon (UTC- 07:00)
+ AS/Pasifik-Baru (UTC- 07:00)
+ Dll/GMT\$17 (UTC- 07:00)
+ Amerika Serikat/Arizona (UTC- 07:00)
+ Amerika/Dawson\$1Creek (UTC- 07:00)
+ Kanada/Pasifik (UTC- 07:00)
+ PST8PDT (UTC- 07:00)
+ SystemV/ MST7 (UTC- 07:00)
+ Amerika/Dawson (UTC- 07:00)
+ Meksiko/ BajaNorte (UTC- 07:00)
+ Amerika/Tijuana (UTC- 07:00)
+ Amerika/Creston (UTC- 07:00)
+ Amerika/Hermosillo (UTC- 07:00)
+ Amerika/Santa\$1Isabel (UTC- 07:00)
+ Amerika/Vancouver (UTC- 07:00)
+ Amerika/Ensenada (UTC- 07:00)
+ Amerika/Phoenix (UTC- 07:00)
+ Amerika/Whitehorse (UTC- 07:00)
+ Amerika/Fort\$1Nelson (UTC- 07:00)
+ PST8SystemV/PDT (UTC- 07:00)
+ Amerika/Los\$1Angeles (UTC- 07:00)
+ AS/Pasifik (UTC- 07:00)
+ Amerika/El\$1Salvador (UTC- 06:00)
+ Amerika/Guatemala (UTC- 06:00)
+ Amerika/Belize (UTC- 06:00)
+ Amerika/Managua (UTC- 06:00)
+ Amerika/Tegucigalpa (UTC- 06:00)
+ Dll/GMT\$16 (UTC- 06:00)
+ Pasifik/Paskah (UTC- 06:00)
+ Meksiko/ BajaSur (UTC- 06:00)
+ Amerika/Regina (UTC- 06:00)
+ Amerika/Denver (UTC- 06:00)
+ Pasifik/Galapagos (UTC- 06:00)
+ Amerika/Yellowknife (UTC- 06:00)
+ Amerika/Swift\$1Current (UTC- 06:00)
+ Amerika/Inuvik (UTC- 06:00)
+ Amerika/Mazatlan (UTC- 06:00)
+ Amerika/Boise (UTC- 06:00)
+ Amerika/Costa\$1Rica (UTC- 06:00)
+ MST7MDT (UTC- 06:00)
+ SystemV/ CST6 (UTC- 06:00)
+ Amerika/Chihuahua (UTC- 06:00)
+ Amerika/Ojinaga (UTC- 06:00)
+ Chili/ EasterIsland (UTC- 06:00)
+ AS/Gunung (UTC- 06:00)
+ Amerika/Edmonton (UTC- 06:00)
+ Kanada/Gunung (UTC- 06:00)
+ Amerika/Cambridge\$1Bay (UTC- 06:00)
+ Navajo (UTC- 06:00)
+ MST7SistemV/MDT (UTC- 06:00)
+ Kanada/Saskatchewan (UTC- 06:00)
+ Amerika/Shiprock (UTC- 06:00)
+ Amerika/Panama (UTC- 05:00)
+ Amerika/Chicago (UTC- 05:00)
+ Amerika/Eirunepe (UTC- 05:00)
+ Dll/GMT\$15 (UTC- 05:00)
+ Meksiko/Umum (UTC- 05:00)
+ Amerika/Porto\$1Acre (UTC- 05:00)
+ Amerika/Guayaquil (UTC- 05:00)
+ Amerika/Rankin\$1Inlet (UTC- 05:00)
+ AS/Tengah (UTC- 05:00)
+ Amerika/Rainy\$1River (UTC- 05:00)
+ America/Indiana/Knox(UTC- 05:00)
+ America/North\$1Dakota/Beulah(UTC- 05:00)
+ Amerika/Monterrey (UTC- 05:00)
+ Amerika/Jamaika (UTC- 05:00)
+ Amerika/Atikokan (UTC- 05:00)
+ Amerika/Coral\$1Harbour (UTC- 05:00)
+ America/North\$1Dakota/Center(UTC- 05:00)
+ Amerika/Cayman (UTC- 05:00)
+ America/Indiana/Tell\$1Kota (UTC- 05:00)
+ Amerika/Meksiko\$1Kota (UTC- 05:00)
+ Amerika/Matamoros (UTC- 05:00)
+ CST6CDT (UTC- 05:00)
+ Amerika/Knox\$1in (UTC- 05:00)
+ Amerika/Bogota (UTC- 05:00)
+ Amerika/Menominey (UTC- 05:00)
+ Amerika/Tegas (UTC- 05:00)
+ SystemV/ EST5 (UTC- 05:00)
+ Kanada/Pusat (UTC- 05:00)
+ Brasil/Acre (UTC- 05:00)
+ Amerika/Cancun (UTC- 05:00)
+ Amerika/Lima (UTC- 05:00)
+ Amerika/Bahia\$1Banderas (UTC- 05:00)
+ Amerika Serikat/Indiana (UTC- 05:00)
+ Amerika/Rio\$1Branco (UTC- 05:00)
+ CST6SystemV/CDT (UTC- 05:00)
+ Jamaika (UTC- 05:00)
+ Amerika/Merida (UTC- 05:00)
+ America/North\$1Dakota/New\$1Salem (UTC- 05:00)
+ Amerika/Winnipeg (UTC- 05:00)
+ Amerika/Cuiaba (UTC- 04:00)
+ Amerika/Marigot (UTC- 04:00)
+ America/Indiana/Petersburg(UTC- 04:00)
+ Chili/Kontinental (UTC- 04:00)
+ Amerika/Grand\$1Turk (UTC- 04:00)
+ Kuba (UTC- 04:00)
+ Dll/GMT\$14 (UTC- 04:00)
+ Amerika/Manaus (UTC- 04:00)
+ Amerika/Fort\$1Wayne (UTC- 04:00)
+ Amerika/St\$1Thomas (UTC- 04:00)
+ Amerika/Anguilla (UTC- 04:00)
+ Amerika/Havana (UTC- 04:00)
+ AS/Michigan (UTC- 04:00)
+ Amerika/Barbados (UTC- 04:00)
+ Amerika/Louisville (UTC- 04:00)
+ Amerika/Curacao (UTC- 04:00)
+ Amerika/Guyana (UTC- 04:00)
+ Amerika/Martinik (UTC- 04:00)
+ Amerika/Puerto\$1Rico (UTC- 04:00)
+ Amerika/PORT\$1OF\$1Spanyol (UTC- 04:00)
+ SystemV/ AST4 (UTC- 04:00)
+ America/Indiana/Vevay(UTC- 04:00)
+ America/Indiana/Vincennes(UTC- 04:00)
+ Amerika/Kralendijk (UTC- 04:00)
+ Amerika/Antigua (UTC- 04:00)
+ Amerika/Indianapolis (UTC- 04:00)
+ Amerika/Iqaluit (UTC- 04:00)
+ Amerika/St\$1Vincent (UTC- 04:00)
+ America/Kentucky/Louisville(UTC- 04:00)
+ Amerika/Dominika (UTC- 04:00)
+ Amerika/Asuncion (UTC- 04:00)
+ EST5EDT (UTC- 04:00)
+ Amerika/Nassau (UTC- 04:00)
+ America/Kentucky/Monticello(UTC- 04:00)
+ Brasil/Barat (UTC- 04:00)
+ Amerika/Aruba (UTC- 04:00)
+ America/Indiana/Indianapolis(UTC- 04:00)
+ Amerika/Santiago (UTC- 04:00)
+ Amerika/La\$1Paz (UTC- 04:00)
+ Amerika/Thunder\$1Bay (UTC- 04:00)
+ America/Indiana/Marengo(UTC- 04:00)
+ Amerika/Blanc-Sablon (UTC- 04:00)
+ Amerika/Santo\$1Domingo (UTC- 04:00)
+ AS/Timur (UTC- 04:00)
+ Kanada/Timur (UTC- 04:00)
+ Amerika/ Port-au-Prince (UTC- 04:00)
+ Amerika/St\$1Barthelemy (UTC- 04:00)
+ Amerika/Nipigon (UTC- 04:00)
+ AS/Indiana Timur (UTC- 04:00)
+ Amerika/St\$1Lucia (UTC- 04:00)
+ Amerika/Montserrat (UTC- 04:00)
+ Amerika/Lower\$1Princes (UTC- 04:00)
+ Amerika/Detroit (UTC- 04:00)
+ Amerika/Tortola (UTC- 04:00)
+ Amerika/Porto\$1Velho (UTC- 04:00)
+ Amerika/Campo\$1Grande (UTC- 04:00)
+ Amerika/Perawan (UTC- 04:00)
+ Amerika/Pangnirtung (UTC- 04:00)
+ Amerika/Montreal (UTC- 04:00)
+ America/Indiana/Winamac(UTC- 04:00)
+ Amerika/Boa\$1Vista (UTC- 04:00)
+ Amerika/Grenada (UTC- 04:00)
+ Amerika/New\$1York (UTC- 04:00)
+ Amerika/St\$1Kitts (UTC- 04:00)
+ Amerika/Caracas (UTC- 04:00)
+ Amerika/Guadeloupe (UTC- 04:00)
+ Amerika/Toronto (UTC- 04:00)
+ EST5SystemV/EDT (UTC- 04:00)
+ America/Argentina/Catamarca(UTC- 03:00)
+ Kanada/Atlantik (UTC- 03:00)
+ America/Argentina/Cordoba(UTC- 03:00)
+ Amerika/Araguaina (UTC- 03:00)
+ America/Argentina/Salta(UTC- 03:00)
+ Dll/GMT\$13 (UTC- 03:00)
+ Amerika/Montevideo (UTC- 03:00)
+ Brasil/Timur (UTC- 03:00)
+ America/Argentina/Mendoza(UTC- 03:00)
+ America/Argentina/Rio\$1Gallegos (UTC- 03:00)
+ Amerika/Catamarca (UTC- 03:00)
+ Amerika/Cordoba (UTC- 03:00)
+ Amerika/Sao\$1Paulo (UTC- 03:00)
+ America/Argentina/Jujuy(UTC- 03:00)
+ Amerika/Cayenne (UTC- 03:00)
+ Amerika/Recife (UTC- 03:00)
+ Amerika/Buenos\$1Aires (UTC- 03:00)
+ Amerika/Paramaribo (UTC- 03:00)
+ Amerika/Moncton (UTC- 03:00)
+ Amerika/Mendoza (UTC- 03:00)
+ Amerika/Santarem (UTC- 03:00)
+ Atlantik/Bermuda (UTC- 03:00)
+ Amerika/Maceio (UTC- 03:00)
+ Atlantik/Stanley (UTC- 03:00)
+ Amerika/Halifax (UTC- 03:00)
+ Antartika/Rothera (UTC- 03:00)
+ America/Argentina/San\$1Luis (UTC- 03:00)
+ America/Argentina/Ushuaia(UTC- 03:00)
+ Antartika/Palmer (UTC- 03:00)
+ Amerika/Punta\$1Arenas (UTC- 03:00)
+ Amerika/Glace\$1Bay (UTC- 03:00)
+ Amerika/Fortaleza (UTC- 03:00)
+ Amerika/Thule (UTC- 03:00)
+ America/Argentina/La\$1Rioja (UTC- 03:00)
+ Amerika/Belem (UTC- 03:00)
+ Amerika/Jujuy (UTC- 03:00)
+ Amerika/Bahia (UTC- 03:00)
+ Amerika/Goose\$1Bay (UTC- 03:00)
+ America/Argentina/San\$1Juan (UTC- 03:00)
+ America/Argentina/ComodRivadavia(UTC- 03:00)
+ America/Argentina/Tucuman(UTC- 03:00)
+ Amerika/Rosario (UTC- 03:00)
+ AST4SystemV/ADT (UTC- 03:00)
+ America/Argentina/Buenos\$1Aires (UTC- 03:00)
+ Amerika/St\$1Johns (UTC- 02:30)
+ Kanada/Newfoundland (UTC- 02:30)
+ Amerika/Miquelon (UTC- 02:00)
+ Dll/GMT\$12 (UTC- 02:00)
+ Amerika/Godthab (UTC- 02:00)
+ Amerika/Noronha (UTC- 02:00)
+ Brasil/ DeNoronha (UTC- 02:00)
+ Atlantik/South\$1Georgia (UTC- 02:00)
+ Dll/GMT\$11 (UTC- 01:00)
+ Atlantik/Cape\$1Verde (UTC- 01:00)
+ Pasifik/Kiritimati (UTC\$1 14:00)
+ Dll/GMT-14 (UTC\$1 14:00)
+ Pasifik/Fakaofo (UTC\$1 13:00)
+ Pasifik/Enderbury (UTC\$1 13:00)
+ Pasifik/Apia (UTC\$1 13:00)
+ Pasifik/Tongatapu (UTC\$1 13:00)
+ Dll/GMT-13 (UTC\$113:00)
+ NZ-OBROLAN (UTC\$1 12:45)
+ Pasifik/Chatham (UTC\$1 12:45)
+ Pasifik/Kwajalein (UTC\$1 12:00)
+ Antartika/ (UTC\$1 12:00) McMurdo 
+ Pasifik/Wallis (UTC\$1 12:00)
+ Pasifik/Fiji (UTC\$1 12:00)
+ Pasifik/Funafuti (UTC\$1 12:00)
+ Pasifik/Nauru (UTC\$1 12:00)
+ Kwajalein (UTC\$1 12:00)
+ NZ (UTC\$1 12:00)
+ Pasifik/Bangun (UTC\$1 12:00)
+ Antartika/South\$1Pole (UTC\$1 12:00)
+ Pasifik/Tarawa (UTC\$1 12:00)
+ Pasifik/Auckland (UTC\$1 12:00)
+ Asia/Kamchatka (UTC\$1 12:00)
+ Dll/GMT-12 (UTC\$112:00)
+ Asia/Anadyr (UTC\$1 12:00)
+ Pasifik/Majuro (UTC\$1 12:00)
+ Pasifik/Ponape (UTC\$1 11:00)
+ Pasifik/Bougainville (UTC\$1 11:00)
+ Antartika/Macquarie (UTC\$1 11:00)
+ Pasifik/Pohnpei (UTC\$1 11:00)
+ Pasifik/Efate (UTC\$1 11:00)
+ Pasifik/Norfolk (UTC\$1 11:00)
+ Asia/Magadan (UTC\$1 11:00)
+ Pasifik/Kosrae (UTC\$1 11:00)
+ Asia/Sakhalin (UTC\$1 11:00)
+ Pasifik/Noumea (UTC\$1 11:00)
+ Dll/GMT-11 (UTC\$1 11:00)
+ Asia/Srednekolymsk (UTC\$1 11:00)
+ Pasifik/Guadalkanal (UTC\$1 11:00)
+ Australia/Lord\$1Howe (UTC\$1 10:30)
+ Australia/LHI (UTC\$1 10:30)
+ Australia/Hobart (UTC\$1 10:00)
+ Pasifik/Yap (UTC\$1 10:00)
+ Australia/Tasmania (UTC\$1 10:00)
+ Pasifik/Port\$1Moresby (UTC\$1 10:00)
+ Australia/ACT (UTC\$110:00)
+ Australia/Victoria (UTC\$1 10:00)
+ Pasifik/Chuuk (UTC\$1 10:00)
+ Australia/Queensland (UTC\$1 10:00)
+ Australia/Canberra (UTC\$1 10:00)
+ Australia/Currie (UTC\$1 10:00)
+ Pasifik/Guam (UTC\$1 10:00)
+ Pasifik/Truk (UTC\$1 10:00)
+ Australia/NSW (UTC\$1 10:00)
+ Asia/Vladivostok (UTC\$1 10:00)
+ Pasifik/Saipan (UTC\$1 10:00)
+ Antartika/Dumont (UTC\$1 10:00DUrville )
+ Australia/Sydney (UTC\$1 10:00)
+ Australia/Brisbane (UTC\$1 10:00)
+ Dll/GMT-10 (UTC\$110:00)
+ Asia/Ust-Nera (UTC\$1 10:00)
+ Australia/Melbourne (UTC\$1 10:00)
+ Australia/Lindeman (UTC\$1 10:00)
+ Australia/Utara (UTC\$1 09:30)
+ Australia/Yancowinna (UTC\$1 09:30)
+ Australia/Adelaide (UTC\$1 09:30)
+ Australia/Broken\$1Hill (UTC\$1 09:30)
+ Australia/Selatan (UTC\$1 09:30)
+ Australia/Darwin (UTC\$1 09:30)
+ Dll/GMT-9 (UTC\$1 09:00)
+ Pasifik/Palau (UTC\$1 09:00)
+ Asia/Chita (UTC\$1 09:00)
+ Asia/Dili (UTC\$1 09:00)
+ Asia/Jayapura (UTC\$1 09:00)
+ Asia/Yakutsk (UTC\$1 09:00)
+ Asia/Pyongyang (UTC\$1 09:00)
+ ROK (UTC\$1 09:00)
+ Asia/Seoul (UTC\$1 09:00)
+ Asia/Khandyga (UTC\$1 09:00)
+ Jepang (UTC\$1 09:00)
+ Asia/Tokyo (UTC\$1 09:00)
+ Australia/Eucla (UTC\$1 08:45)
+ Asia/Kuching (UTC\$1 08:00)
+ Asia/Chungking (UTC\$1 08:00)
+ Dll/GMT-8 (UTC\$108:00)
+ Australia/Perth (UTC\$1 08:00)
+ Asia/Makau (UTC\$1 08:00)
+ Asia/Makau (UTC\$1 08:00)
+ Asia/Choibalsan (UTC\$1 08:00)
+ Asia/Shanghai (UTC\$1 08:00)
+ Antartika/Casey (UTC\$1 08:00)
+ Asia/Ulan\$1Bator (UTC\$1 08:00)
+ Asia/Chongqing (UTC\$1 08:00)
+ Asia/Ulaanbaatar (UTC\$1 08:00)
+ Asia/Taipei (UTC\$1 08:00)
+ Asia/Manila (UTC\$1 08:00)
+ PRC (UTC\$1 08:00)
+ Asia/Ujung\$1Pandang (UTC\$1 08:00)
+ Asia/Harbin (UTC\$1 08:00)
+ Singapura (UTC\$1 08:00)
+ Asia/Brunei (UTC\$1 08:00)
+ Australia/Barat (UTC\$1 08:00)
+ Asia/Hong Kong (UTC\$1 08:00)
+ Asia/Makassar (UTC\$1 08:00)
+ Hong Kong (UTC\$1 08:00)
+ Asia/Kuala\$1Lumpur (UTC\$1 08:00)
+ Asia/Irkutsk (UTC\$1 08:00)
+ Asia/Singapura (UTC\$1 08:00)
+ Asia/Pontianak (UTC\$1 07:00)
+ Dll/GMT-7 (UTC\$1 07:00)
+ Asia/Phnom\$1Penh (UTC\$1 07:00)
+ Asia/Novosibirsk (UTC\$1 07:00)
+ Antartika/Davis (UTC\$1 07:00)
+ Asia/Tomsk (UTC\$1 07:00)
+ Asia/Jakarta (UTC\$1 07:00)
+ Asia/Barnaul (UTC\$1 07:00)
+ India/Natal (UTC\$1 07:00)
+ Asia/Ho\$1Chi\$1Minh (UTC\$1 07:00)
+ Asia/Hovd (UTC\$1 07:00)
+ Asia/Bangkok (UTC\$1 07:00)
+ Asia/Vientiane (UTC\$1 07:00)
+ Asia/Novokuznetsk (UTC\$1 07:00)
+ Asia/Krasnoyarsk (UTC\$1 07:00)
+ Asia/Saigon (UTC\$1 07:00)
+ Asia/Yangon (UTC\$1 06:30)
+ Asia/Rangun (UTC\$1 06:30)
+ India/Cocos (UTC\$1 06:30)
+ Asia/Kashgar (UTC\$1 06:00)
+ Dll/GMT-6 (UTC\$1 06:00)
+ Asia/Almaty (UTC\$1 06:00)
+ Asia/Dacca (UTC\$1 06:00)
+ Asia/Omsk (UTC\$1 06:00)
+ Asia/Dhaka (UTC\$1 06:00)
+ India/Chagos (UTC\$1 06:00)
+ Asia/Qyzylorda (UTC\$1 06:00)
+ Asia/Bishkek (UTC\$1 06:00)
+ Antartika/Vostok (UTC\$1 06:00)
+ Asia/Urumqi (UTC\$1 06:00)
+ Asia/Thimbu (UTC\$1 06:00)
+ Asia/Thimphu (UTC\$1 06:00)
+ Asia/Kathmandu (UTC\$1 05:45)
+ Asia/Katmandu (UTC\$1 05:45)
+ Asia/Kolkata (UTC\$1 05:30)
+ Asia/Kolombo (UTC\$1 05:30)
+ Asia/Kalkuta (UTC\$1 05:30)
+ Asia/Aqtau (UTC\$1 05:00)
+ Dll/GMT-5 (UTC\$1 05:00)
+ Asia/Samarkand (UTC\$1 05:00)
+ Asia/Karachi (UTC\$1 05:00)
+ Asia/Yekaterinburg (UTC\$1 05:00)
+ Asia/Dushanbe (UTC\$1 05:00)
+ India/Maladewa (UTC\$1 05:00)
+ Asia/Lisan (UTC\$1 05:00)
+ Asia/Tashkent (UTC\$1 05:00)
+ Antartika/Mawson (UTC\$1 05:00)
+ Asia/Aqtobe (UTC\$1 05:00)
+ Asia/Ashkhabad (UTC\$1 05:00)
+ Asia/Ashgabat (UTC\$1 05:00)
+ Asia/Atyrau (UTC\$1 05:00)
+ India/Kerguelen (UTC\$1 05:00)
+ Iran (UTC\$1 04:30)
+ Asia/Teheran (UTC\$1 04:30)
+ Asia/Kabul (UTC\$1 04:30)
+ Asia/Yerevan (UTC\$1 04:00)
+ Dll/GMT-4 (UTC\$1 04:00)
+ Dll/GMT-4 (UTC\$1 04:00)
+ Asia/Dubai (UTC\$1 04:00)
+ India/Reuni (UTC\$1 04:00)
+ Eropa/Saratov (UTC\$1 04:00)
+ Eropa/Samara (UTC\$1 04:00)
+ India/Mahe (UTC\$1 04:00)
+ Asia/Baku (UTC\$1 04:00)
+ Asia/Muscat (UTC\$1 04:00)
+ Eropa/Volgograd (UTC\$1 04:00)
+ Eropa/Astrakhan (UTC\$1 04:00)
+ Asia/Tbilisi (UTC\$1 04:00)
+ Eropa/Ulyanovsk (UTC\$1 04:00)
+ Asia/Aden (UTC\$1 03:00)
+ Afrika/Nairobi (UTC\$1 03:00)
+ Eropa/Istanbul (UTC\$1 03:00)
+ Dll/GMT-3 (UTC\$1 03:00)
+ Eropa/Zaporozhye (UTC\$1 03:00)
+ Israel (UTC\$1 03:00)
+ India/Comoro (UTC\$1 03:00)
+ Antartika/Syowa (UTC\$1 03:00)
+ Afrika/Mogadishu (UTC\$1 03:00)
+ Eropa/Bukares (UTC\$1 03:00)
+ Afrika/Asmera (UTC\$1 03:00)
+ Eropa/Mariehamn (UTC\$1 03:00)
+ Asia/Istanbul (UTC\$1 03:00)
+ Eropa/Tiraspol (UTC\$1 03:00)
+ Eropa/Moskow (UTC\$1 03:00)
+ Eropa/Chisinau (UTC\$1 03:00)
+ Eropa/Helsinki (UTC\$1 03:00)
+ Asia/Beirut (UTC\$1 03:00)
+ Asia/Tel\$1Aviv (UTC\$1 03:00)
+ Afrika/Djibouti (UTC\$1 03:00)
+ Eropa/Simferopol (UTC\$1 03:00)
+ Eropa/Sofia (UTC\$1 03:00)
+ Asia/Gaza (UTC\$1 03:00)
+ Afrika/Asmara (UTC\$1 03:00)
+ Eropa/Riga (UTC\$1 03:00)
+ Asia/Baghdad (UTC\$1 03:00)
+ Asia/Damaskus (UTC\$1 03:00)
+ Afrika/Dar\$1es\$1Salaam (UTC\$1 03:00)
+ Afrika/Addis\$1Ababa (UTC\$1 03:00)
+ Eropa/Uzhgorod (UTC\$1 03:00)
+ Asia/Yerusalem (UTC\$1 03:00)
+ Asia/Riyadh (UTC\$1 03:00)
+ Asia/Kuwait (UTC\$1 03:00)
+ Eropa/Kirov (UTC\$1 03:00)
+ Afrika/Kampala (UTC\$1 03:00)
+ Eropa/Minsk (UTC\$1 03:00)
+ Asia/Qatar (UTC\$1 03:00)
+ Eropa/Kiev (UTC\$1 03:00)
+ Asia/Bahrain (UTC\$1 03:00)
+ Eropa/Vilnius (UTC\$1 03:00)
+ India/Antananarivo (UTC\$1 03:00)
+ India/Mayotte (UTC\$1 03:00)
+ Eropa/Tallinn (UTC\$1 03:00)
+ Turki (UTC\$1 03:00)
+ Afrika/Juba (UTC\$1 03:00)
+ Asia/Nikosia (UTC\$1 03:00)
+ Asia/Keluarga (UTC\$1 03:00)
+ W-SU (UTC\$1 03:00)
+ MALAM (UTC\$1 03:00)
+ Asia/Hebron (UTC\$1 03:00)
+ Asia/Amman (UTC\$1 03:00)
+ Eropa/Nikosia (UTC\$1 03:00)
+ Eropa/Athena (UTC\$1 03:00)
+ Afrika/Kairo (UTC\$1 02:00)
+ Afrika/Mbabane (UTC\$1 02:00)
+ Eropa/Brussel (UTC\$1 02:00)
+ Eropa/Warsawa (UTC\$1 02:00)
+ CET (UTC\$1 02:00)
+ Eropa/Luksemburg (UTC\$1 02:00)
+ Dll/GMT-2 (UTC\$1 02:00)
+ Libya (UTC\$1 02:00)
+ Afrika/Kigali (UTC\$1 02:00)
+ Afrika/Tripoli (UTC\$1 02:00)
+ Eropa/Kaliningrad (UTC\$1 02:00)
+ Afrika/Windhoek (UTC\$1 02:00)
+ Eropa/Malta (UTC\$1 02:00)
+ Eropa/Busingen (UTC\$1 02:00)
+ 
+ Eropa/Skopje (UTC\$1 02:00)
+ Eropa/Sarajevo (UTC\$1 02:00)
+ Eropa/Roma (UTC\$1 02:00)
+ Eropa/Zürich (UTC\$1 02:00)
+ Eropa/Gibraltar (UTC\$1 02:00)
+ Afrika/Lubumbashi (UTC\$1 02:00)
+ Eropa/Vaduz (UTC\$1 02:00)
+ Eropa/Ljubljana (UTC\$1 02:00)
+ Eropa/Berlin (UTC\$1 02:00)
+ Eropa/Stockholm (UTC\$1 02:00)
+ Eropa/Budapest (UTC\$1 02:00)
+ Eropa/Zagreb (UTC\$1 02:00)
+ Eropa/Paris (UTC\$1 02:00)
+ Afrika/Ceuta (UTC\$1 02:00)
+ Eropa/Praha (UTC\$1 02:00)
+ Antartika/Troll (UTC\$1 02:00)
+ Afrika/Gaborone (UTC\$1 02:00)
+ Eropa/Kopenhagen (UTC\$1 02:00)
+ Eropa/Wina (UTC\$1 02:00)
+ Eropa/Tirane (UTC\$1 02:00)
+ BERTEMU (UTC\$1 02:00)
+ Eropa/Amsterdam (UTC\$1 02:00)
+ Afrika/Maputo (UTC\$1 02:00)
+ Eropa/San\$1Marino (UTC\$1 02:00)
+ Polandia (UTC\$1 02:00)
+ Eropa/Andorra (UTC\$1 02:00)
+ Eropa/Oslo (UTC\$1 02:00)
+ Eropa/Podgorica (UTC\$1 02:00)
+ Afrika/Bujumbura (UTC\$1 02:00)
+ Atlantik/Jan\$1Mayen (UTC\$1 02:00)
+ Afrika/Maseru (UTC\$1 02:00)
+ Eropa/Madrid (UTC\$1 02:00)
+ Afrika/Blantyre (UTC\$1 02:00)
+ Afrika/Lusaka (UTC\$1 02:00)
+ Afrika/Harare (UTC\$1 02:00)
+ Afrika/Khartoum (UTC\$1 02:00)
+ Afrika/Johannesburg (UTC\$1 02:00)
+ Eropa/Beograd (UTC\$1 02:00)
+ Eropa/Bratislava (UTC\$1 02:00)
+ Arktik/Longyearbyen (UTC\$1 02:00)
+ Mesir (UTC\$1 02:00)
+ Eropa/Vatikan (UTC\$1 02:00)
+ Eropa/Monako (UTC\$1 02:00)
+ Eropa/London (UTC\$1 01:00)
+ Dll/GMT-1 (UTC\$1 01:00)
+ Eropa/Jersey (UTC\$1 01:00)
+ Eropa/Guernsey (UTC\$1 01:00)
+ Eropa/Isle\$1of\$1man (UTC\$1 01:00)
+ Afrika/Tunis (UTC\$1 01:00)
+ Afrika/Malabo (UTC\$1 01:00)
+ GB-Eire (UTC\$1 01:00)
+ Afrika/Lagos (UTC\$1 01:00)
+ Afrika/Aljir (UTC\$1 01:00)
+ GB (UTC\$1 01:00)
+ Portugal (UTC\$1 01:00)
+ Afrika/Sao\$1Tome (UTC\$1 01:00)
+ Afrika/Ndjamena (UTC\$1 01:00)
+ Atlantik/Faeroe (UTC\$1 01:00)
+ Eire (UTC\$1 01:00)
+ Atlantik/Faroe (UTC\$1 01:00)
+ Eropa/Dublin (UTC\$1 01:00)
+ Afrika/Libreville (UTC\$1 01:00)
+ Afrika/El\$1Aaiun (UTC\$1 01:00)
+ Afrika/El\$1Aaiun (UTC\$1 01:00)
+ Afrika/Douala (UTC\$1 01:00)
+ Afrika/Brazzaville (UTC\$1 01:00)
+ Afrika/Porto-Novo (UTC\$1 01:00)
+ Atlantik/Madeira (UTC\$1 01:00)
+ Eropa/Lisbon (UTC\$1 01:00)
+ Atlantik/Kenari (UTC\$1 01:00)
+ Afrika/Casablanca (UTC\$1 01:00)
+ Eropa/Belfast (UTC\$1 01:00)
+ Afrika/Luanda (UTC\$1 01:00)
+ Afrika/Kinshasa (UTC\$1 01:00)
+ Afrika/Bangui (UTC\$1 01:00)
+ BASAH (UTC\$1 01:00)
+ Afrika/Niamey (UTC\$1 01:00)
+ GMT (UTC\$1 00:00)
+ Dll/GMT-0 (UTC\$1 00:00)
+ Atlantik/St\$1Helena (UTC\$1 00:00)
+ Dll/GMT\$10 (UTC\$1 00:00)
+ Afrika/Banjul (UTC\$1 00:00)
+ Dll/GMT (UTC\$100:00)
+ Afrika/Freetown (UTC\$1 00:00)
+ Afrika/Bamako (UTC\$1 00:00)
+ Afrika/Conakry (UTC\$1 00:00)
+ Universal (UTC\$1 00:00)
+ Afrika/Nouakchott (UTC\$1 00:00)
+ UTC (UTC\$1 00:00)
+ Dll/Universal (UTC\$100:00)
+ Atlantik/Azores (UTC\$1 00:00)
+ Afrika/Abidjan (UTC\$1 00:00)
+ Afrika/Accra (UTC\$1 00:00)
+ Dll/UCT (UTC\$100:00)
+ GMT0 (UTC\$1 00:00)
+ Zulu (UTC\$1 00:00) Zulu (UTC\$1 00:00)
+ Afrika/Ouagadougou (UTC\$1 00:00)
+ Atlantik/Reykjavik (UTC\$1 00:00)
+ Dll/Zulu (UTC\$1 00:00)
+ Islandia (UTC\$1 00:00)
+ Afrika/Lome (UTC\$1 00:00)
+ Greenwich (UTC\$1 00:00)
+ Dll/ GMT0 (UTC\$1 00:00)
+ Amerika/Danmarkshavn (UTC\$1 00:00)
+ Afrika/Dakar (UTC\$1 00:00)
+ Afrika/Bissau (UTC\$1 00:00)
+ Dll/Greenwich (UTC\$1 00:00)
+ Afrika/Timbuktu (UTC\$1 00:00)
+ UCT (UTC\$1 00:00)
+ Afrika/Monrovia (UTC\$1 00:00)
+ Dll/UTC (UTC\$1 00:00)

# Tutorial ekspresi formula
<a name="expression-tutorials"></a>

Anda dapat mengikuti tutorial ini untuk menggunakan ekspresi rumus di AWS IoT SiteWise.

**Topics**
+ [Gunakan string dalam rumus](#use-strings-in-formulas)
+ [Filter titik data](#filter-data)
+ [Hitung titik data yang cocok dengan kondisi](#count-filtered-data)
+ [Data terlambat dalam rumus](#late-data)
+ [Kualitas data dalam rumus](#data-quality)
+ [Nilai tidak terdefinisi, tak terbatas, dan meluap](#undefined-values)

## Gunakan string dalam rumus
<a name="use-strings-in-formulas"></a>

Anda dapat beroperasi pada string dalam ekspresi rumus Anda. Anda juga dapat memasukkan string dari variabel yang mereferensikan atribut dan properti pengukuran.

**penting**  
<a name="formula-output-rules"></a>Ekspresi rumus hanya dapat menampilkan nilai ganda atau string. Ekspresi bersarang dapat menampilkan tipe data lain, seperti string, tetapi rumus secara keseluruhan harus mengevaluasi ke angka atau string. Anda dapat menggunakan [fungsi jp](expression-string-functions.md#jp-definition) untuk mengonversi string ke angka. Nilai Boolean harus 1 (true) atau 0 (false). Untuk informasi selengkapnya, lihat [Nilai tidak terdefinisi, tak terbatas, dan meluap](#undefined-values).

AWS IoT SiteWise menyediakan fitur ekspresi rumus berikut yang dapat Anda gunakan untuk beroperasi pada string:
+ [String literal](expression-literals.md#string-literal-definition)
+ [Operator indeks](expression-operators.md#index-operator-definition) (`s[index]`)
+ [Operator irisan](expression-operators.md#slice-operator-definition) (`s[start:end:step]`)
+ [Fungsi perbandingan](expression-comparison-functions.md), yang dapat Anda gunakan membandingkan string berdasarkan urutan [leksikografis](https://en.wikipedia.org/wiki/Lexicographic_order)
+ [Fungsi string](expression-string-functions.md), yang mencakup `jp` fungsi yang dapat mengurai objek JSON serial dan mengonversi string menjadi angka

## Filter titik data
<a name="filter-data"></a>

Anda dapat menggunakan [fungsi if](expression-conditional-functions.md#if-definition) untuk menyaring titik data yang tidak memenuhi kondisi. `if`Fungsi mengevaluasi kondisi dan mengembalikan nilai yang berbeda untuk `true` dan `false` hasil. Anda dapat menggunakan [konstanta none](expression-constants.md#none-definition) sebagai output untuk satu kasus `if` fungsi untuk membuang titik data untuk kasus itu.

**Untuk memfilter titik data yang cocok dengan kondisi**
+ Buat transformasi yang menggunakan `if` fungsi untuk menentukan kondisi yang memeriksa apakah kondisi terpenuhi, dan kembali `none` sebagai `result_if_false` nilai `result_if_true` atau.

**Example Contoh: Saring titik data di mana air tidak mendidih**  
Pertimbangkan skenario di mana Anda memiliki pengukuran,`temp_c`, yang menyediakan suhu (dalam Celcius) air dalam mesin. Anda dapat menentukan transformasi berikut untuk menyaring titik data di mana air tidak mendidih:  
+ Transform: `boiling_temps = if(gte(temp_c, 100), temp_c, none)` — Mengembalikan suhu jika lebih besar dari atau sama dengan 100 derajat Celcius, jika tidak mengembalikan tidak ada titik data.

## Hitung titik data yang cocok dengan kondisi
<a name="count-filtered-data"></a>

Anda dapat menggunakan [fungsi perbandingan](expression-comparison-functions.md) dan [sum ()](expression-aggregation-functions.md#sum-definition) untuk menghitung jumlah titik data yang kondisinya benar.

**Untuk menghitung titik data yang cocok dengan suatu kondisi**

1. Buat transformasi yang menggunakan fungsi perbandingan untuk menentukan kondisi filter pada properti lain.

1. Buat metrik yang menjumlahkan titik data di mana kondisi itu terpenuhi.

**Example Contoh: Hitung jumlah titik data di mana air mendidih**  
Pertimbangkan skenario di mana Anda memiliki pengukuran,`temp_c`, yang menyediakan suhu (dalam Celcius) air dalam mesin. Anda dapat menentukan sifat transformasi dan metrik berikut untuk menghitung jumlah titik data tempat air mendidih:  
+ Transform: `is_boiling = gte(temp_c, 100)` — Kembali `1` jika suhu lebih besar dari atau sama dengan 100 derajat Celcius, jika tidak kembali`0`.
+ Metrik: `boiling_count = sum(is_boiling)` — Mengembalikan jumlah titik data di mana air mendidih.

## Data terlambat dalam rumus
<a name="late-data"></a>

AWS IoT SiteWise mendukung keterlambatan konsumsi data yang berusia hingga 7 hari. Saat AWS IoT SiteWise menerima data terlambat, itu menghitung ulang nilai yang ada untuk metrik apa pun yang memasukkan data akhir di jendela sebelumnya. Penghitungan ulang ini menghasilkan biaya pemrosesan data.

**catatan**  
Saat AWS IoT SiteWise menghitung properti yang memasukkan data terlambat, ia menggunakan ekspresi rumus setiap properti saat ini.

Setelah AWS IoT SiteWise menghitung ulang jendela masa lalu untuk metrik, itu menggantikan nilai sebelumnya untuk jendela itu. Jika Anda mengaktifkan notifikasi untuk metrik tersebut, AWS IoT SiteWise juga akan memancarkan notifikasi nilai properti. Ini berarti Anda dapat menerima pemberitahuan pembaruan nilai properti baru untuk properti dan stempel waktu yang sama yang sebelumnya Anda terima notifikasi. Jika aplikasi atau data lake Anda menggunakan notifikasi nilai properti, Anda harus memperbarui nilai sebelumnya dengan nilai baru sehingga datanya akurat.

## Kualitas data dalam rumus
<a name="data-quality"></a>

Di AWS IoT SiteWise, setiap titik data memiliki kode kualitas, yang dapat berupa salah satu dari yang berikut:
+ `GOOD`— Data tidak terpengaruh oleh masalah apa pun.
+ `BAD`— Data dipengaruhi oleh masalah seperti kegagalan sensor.
+ `UNCERTAIN`— Data dipengaruhi oleh masalah seperti ketidakakuratan sensor.

AWS IoT SiteWise hanya mengkonsumsi data `GOOD` berkualitas ketika menghitung transformasi dan metrik. AWS IoT SiteWise hanya menghasilkan data `GOOD` berkualitas untuk perhitungan yang berhasil. Jika komputasi tidak berhasil, maka AWS IoT SiteWise tidak menampilkan titik data untuk perhitungan itu. Hal ini dapat terjadi jika perhitungan menghasilkan nilai undefined, infinite, atau overflow.

Untuk informasi selengkapnya tentang cara menanyakan data dan memfilter berdasarkan kualitas data, lihat[Data kueri dari AWS IoT SiteWise](query-industrial-data.md).

## Nilai tidak terdefinisi, tak terbatas, dan meluap
<a name="undefined-values"></a>

Beberapa ekspresi rumus (seperti`x / 0`,`sqrt(-1)`, atau`log(0)`) menghitung nilai yang tidak terdefinisi dalam sistem bilangan real, tak terbatas, atau di luar rentang yang didukung oleh AWS IoT SiteWise. Ketika ekspresi properti aset menghitung nilai undefined, infinite, atau overflow, AWS IoT SiteWise tidak menampilkan titik data untuk perhitungan tersebut.

AWS IoT SiteWise juga tidak menampilkan titik data jika menghitung nilai non-numerik sebagai hasil dari ekspresi rumus. Ini berarti bahwa jika Anda mendefinisikan rumus yang menghitung string, array, atau [konstanta none](expression-constants.md#none-definition), maka AWS IoT SiteWise tidak menampilkan titik data untuk perhitungan itu.

**Example Contoh**  
Masing-masing ekspresi rumus berikut menghasilkan nilai yang tidak AWS IoT SiteWise dapat mewakili sebagai angka. AWS IoT SiteWise tidak menampilkan titik data saat menghitung ekspresi rumus ini.  
+ `x / 0`tidak terdefinisi.
+ `log(0)`tidak terdefinisi.
+ `sqrt(-1)`tidak terdefinisi dalam sistem bilangan real.
+ `"hello" + " world"`adalah string.
+ `jp('{"values":[3,6,7]}', '$.values')`adalah sebuah array.
+ `if(gte(temp, 300), temp, none)``temp`adalah `none` kapan kurang dari`300`.