Gunakan fungsi temporal dalam 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.

Gunakan fungsi temporal dalam ekspresi rumus

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

Gunakan fungsi temporal dalam metrik

Hanya dalam metrik, 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 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 untuk detail.

statetime(x)

Mengembalikan jumlah waktu dalam detik bahwa variabel yang diberikan positif selama interval waktu saat ini. Anda dapat menggunakan fungsi perbandingan untuk membuat properti transform untuk statetime fungsi yang akan digunakan.

Misalnya, jika Anda memiliki Idle properti yang 0 atau1, Anda dapat menghitung waktu idle per interval waktu dengan ekspresi ini:IdleTime = statetime(Idle). Untuk informasi selengkapnya, lihat contoh skenario statetime.

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 untuk detail komputasi dan interval.

Argumen opsional interpolaton harus berupa konstanta string:

  • locfIni adalah defaultnya. 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.

    Nilai setelah titik data yang baik diekstrapolasi sebagai nilainya hingga stempel waktu titik data berikutnya.

  • linear— Perhitungan menggunakan algoritma komputasi interpolasi linier untuk interval antar titik data.

    Nilai antara dua titik data yang baik diekstrapolasi sebagai interpolasi linier antara nilai titik data tersebut.

    Nilai antara titik data baik dan buruk atau nilai setelah titik data baik terakhir akan diekstrapolasi sebagai titik data yang baik.

TimeWeightedStDev(x, [algo])

Mengembalikan standar deviasi data input tertimbang dengan interval waktu antar titik.

Lihat Parameter fungsi berbobot waktu 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:

  • fIni adalah defaultnya. Ini mengembalikan varians sampel tertimbang yang tidak bias dengan bobot Frekuensi, di mana TimeWeight dihitung dalam hitungan detik. Algoritma ini biasanya diasumsikan di bawah standar deviasi dan dikenal sebagai koreksi standar deviasi Bessel untuk sampel tertimbang.

  • p— Mengembalikan varians sampel berbobot bias, juga dikenal sebagai Varians populasi.

Rumus berikut digunakan untuk perhitungan di mana:

  • S p = deviasi standar populasi

  • S f = standar deviasi frekuensi

  • X i = data masuk

  • ω i = berat yang sama dengan interval waktu dalam detik

  • μ* = rata-rata tertimbang dari data yang masuk

Persamaan untuk standar deviasi populasi:

Persamaan untuk standar deviasi populasi.

Persamaan untuk standar deviasi frekuensi:

Persamaan untuk standar deviasi frekuensi.

Diagram berikut menunjukkan bagaimana AWS IoT SiteWise menghitung fungsi temporalfirst,,last, dan earliestlatest, relatif terhadap interval waktu saat ini.

AWS IoT SiteWise fungsi temporal mengembalikan titik data berdasarkan stempel waktu mereka.
catatan
  • Rentang waktu untukfirst(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 rumus.

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.

contoh
Contoh skenario statetime

Pertimbangkan contoh di mana Anda memiliki aset dengan properti berikut:

  • Idle— Pengukuran yang 0 atau1. Ketika nilainya1, 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.

IdleProperti 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 (Idlesedang0).

    • Pada 14:00:30, mesin dalam keadaan idle (Idleis). 1

    • Idletidak 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.

    • Idletidak 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.

    • Idletidak 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).

    • Idletidak berubah lagi sebelum akhir interval pada 2:04:00 PM, begitu Idle Time juga 0 detik.

contoh
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:

catatan

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:

catatan

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

Dalam transformasi 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 dan fungsi timestamp ().

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 dany, dan transformasi,z, yang sama. x + y + pretrigger(y) Tabel berikut menunjukkan nilai untukx,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.

09:00AM 09:05AM 09:10AM 09:15AM

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

ytidak menerima titik data apa pun sebelum pukul 09:00. Oleh karena itu, z tidak dihitung pada pukul 09:00.

23 = 20 + 2 + 1

pretrigger(y)sama dengan 1.

25 = 20 + 3 + 2

xtidak menerima titik data baru. pretrigger(y)sama dengan 2.

36 = 30 + 3 + 3

ytidak menerima titik data baru. Oleh karena itu, pretrigger(y) sama dengan 3 pada 09:15 AM.