Tutorial ekspresi rumus - AWS IoT SiteWise

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

Tutorial ekspresi rumus

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

Gunakan string dalam rumus

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

penting

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 untuk mengonversi string ke angka. Nilai Boolean harus 1 (true) atau 0 (false). Untuk informasi selengkapnya, lihat Nilai tidak terdefinisi, tak terbatas, dan meluap.

AWS IoT SiteWise menyediakan fitur ekspresi rumus berikut yang dapat Anda gunakan untuk beroperasi pada string:

Filter titik data

Anda dapat menggunakan fungsi if untuk menyaring titik data yang tidak memenuhi kondisi. ifFungsi mengevaluasi kondisi dan mengembalikan nilai yang berbeda untuk true dan false hasil. Anda dapat menggunakan konstanta none 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 suatu kondisi terpenuhi, dan kembali none sebagai result_if_false nilai result_if_true atau.

contoh 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

Anda dapat menggunakan fungsi perbandingan dan sum () 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.

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

contoh 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 kembali0.

  • Metrik: boiling_count = sum(is_boiling) — Mengembalikan jumlah titik data di mana air mendidih.

Data terlambat dalam rumus

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

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, lihatData kueri dari AWS IoT SiteWise.

Nilai tidak terdefinisi, tak terbatas, dan meluap

Beberapa ekspresi rumus (sepertix / 0,sqrt(-1), ataulog(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, maka AWS IoT SiteWise tidak menampilkan titik data untuk perhitungan itu.

contoh 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 / 0tidak 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)tempadalah none kapan kurang dari300.