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.
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 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:
-
Operator indeks (
s[index]
) -
Operator irisan (
s[start:end:step]
) -
Fungsi perbandingan, yang dapat Anda gunakan membandingkan string berdasarkan urutan leksikografis
-
Fungsi string, yang mencakup
jp
fungsi yang dapat mengurai JSON objek serial dan mengonversi string menjadi angka
Filter titik data
Anda dapat menggunakan fungsi if untuk memfilter 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 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 kembalinone
sebagairesult_if_false
nilairesult_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
-
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 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)
— Kembali1
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 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
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 / 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
adalahnone
kapan kurang dari300
.