Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial ekspresi formula
Anda dapat mengikuti tutorial ini untuk menggunakan ekspresi rumus di AWS IoT SiteWise.
Topik
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 dievaluasi ke angka atau string. Anda dapat menggunakan fungsi jp untuk mengubah string menjadi angka. Nilai Boolean harus 1 (benar) atau 0 (salah). Untuk informasi selengkapnya, lihat Nilai tidak ditentukan, tak terbatas, dan meluap.
AWS IoT SiteWise menyediakan fitur ekspresi rumus berikut yang dapat Anda gunakan untuk beroperasi pada string:
-
Operator indeks (
s[index]) -
Operator irisan (
s[start:end:step]) -
Fungsi perbandingan, yang dapat Anda gunakan membandingkan string dengan urutan leksikografi
-
Fungsi string, yang mencakup
jpfungsi yang dapat mengurai objek JSON serial dan mengubah string menjadi angka
Filter titik data
Anda dapat menggunakan fungsi if untuk menyaring titik data yang tidak memenuhi suatu kondisi. ifFungsi mengevaluasi suatu 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 menyaring titik data yang cocok dengan suatu kondisi
-
Buat transformasi yang menggunakan
iffungsi untuk menentukan kondisi yang memeriksa apakah suatu kondisi terpenuhi, dan mengembalikannonesebagairesult_if_falsenilairesult_if_trueatau.
contoh Contoh: Menyaring titik data di mana air tidak mendidih
Pertimbangkan skenario di mana Anda memiliki pengukurantemp_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 titik data.
Hitung titik data yang cocok dengan suatu 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
-
Buat transformasi yang menggunakan fungsi perbandingan untuk menentukan kondisi filter pada properti lain.
-
Buat metrik yang menjumlahkan titik data di mana kondisi itu terpenuhi.
contoh Contoh: Hitung jumlah titik data tempat air mendidih
Pertimbangkan skenario di mana Anda memiliki pengukurantemp_c,, yang menyediakan suhu (dalam Celcius) air dalam mesin. Anda dapat menentukan transformasi dan properti metrik berikut untuk menghitung jumlah titik data tempat air mendidih:
-
Transform:
is_boiling = gte(temp_c, 100)— Meng1embalikan 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 penyerapan data yang berumur hingga 7 hari. Saat AWS IoT SiteWise menerima data terlambat, ia menghitung ulang nilai yang ada untuk metrik apa pun yang memasukkan data terlambat di jendela sebelumnya. Penghitungan ulang ini mengakibatkan biaya pemrosesan data.
catatan
Saat AWS IoT SiteWise menghitung properti yang memasukkan data terlambat, ia menggunakan ekspresi rumus masing-masing 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 dengan 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 menjadi salah satu dari berikut ini:
-
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 yang tidak ditentukan, tak terbatas, atau meluap.
Untuk informasi selengkapnya tentang cara menanyakan data dan memfilter berdasarkan kualitas data, lihatData kueri dari AWS IoT SiteWise.
Nilai tidak ditentukan, tak terbatas, dan meluap
Beberapa ekspresi rumus (sepertix / 0,sqrt(-1), ataulog(0)) menghitung nilai yang tidak ditentukan dalam sistem bilangan real, tak terbatas, atau di luar rentang yang didukung oleh AWS IoT SiteWise. Ketika ekspresi properti aset menghitung nilai yang tidak ditentukan, tak terbatas, atau luapan, AWS IoT SiteWise tidak menghasilkan titik data untuk perhitungan itu.
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 konstan ta 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 direpresentasikan 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 array. -
if(gte(temp, 300), temp, none)tempadalahnoneketika kurang dari300.