View a markdown version of this page

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 cap waktu titik data.

Gunakan fungsi temporal dalam metrik

Dalam metrik saja, Anda dapat menggunakan fungsi berikut yang mengembalikan nilai berdasarkan cap 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. Saat Anda menggunakan ekspresi bersarang, aturan berikut berlaku:

  • Setiap argumen hanya dapat memiliki satu variabel.

    Misalnya, latest( t*9/5 + 32 ) didukung.

  • Argumen tidak bisa menjadi 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 stempel waktu 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 yang variabel yang diberikan positif selama interval waktu saat ini. Anda dapat menggunakan fungsi per bandingan untuk membuat properti transformasi untuk digunakan statetime fungsi.

Misalnya, jika Anda memiliki Idle properti 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 input tertimbang dengan interval waktu antar titik.

Lihat Param eter fungsi tertimbang waktu untuk detail perhitungan dan interval.

Argumen opsional interpolaton harus berupa konstanta string:

  • locf— Ini adalah default. Perhitungan menggunakan algoritma komputasi Last Obected Carry Forward untuk interval antara titik data. Dalam pendekatan ini, titik data dihitung sebagai nilai terakhir yang diamati sampai stempel 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 antara titik data.

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

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

TimeWeightedStDev(x, [algo])

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

Lihat Param eter fungsi tertimbang waktu untuk detail perhitungan dan interval.

Perhitungan menggunakan algoritma komputasi Last Obected Carry Forward untuk interval antara titik data. Dalam pendekatan ini, titik data dihitung sebagai nilai terakhir yang diamati sampai stempel waktu titik data input berikutnya. Berat dihitung sebagai interval waktu dalam detik antara titik data atau batas jendela.

Argumen opsional algo harus berupa konstanta string:

  • f— Ini adalah default. 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 tertimbang bias, juga dikenal sebagai Varians Populasi.

Rumus berikut digunakan untuk perhitungan di mana:

  • S p = standar deviasi populasi

  • S f = deviasi standar 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 (awal 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].

Time-weighted parameter fungsi

Time-weighted fungsi yang dihitung untuk jendela agregat memperhitungkan hal berikut:

  • Poin 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 tidak baik atau nilai non-angka. Ini tidak dipertimbangkan dalam perhitungan hasil jendela.

  • Interval buruk — Interval setelah titik data buruk. Interval sebelum titik data pertama yang diketahui juga dianggap sebagai interval yang buruk.

  • Titik data yang baik — Setiap titik data dengan kualitas yang baik dan nilai numerik.

catatan
  • AWS IoT SiteWise hanya mengkonsumsi data GOOD berkualitas ketika menghitung transformasi dan metrik. Ini mengabaikan UNCERTAIN dan titik BAD data.

  • Interval sebelum titik data pertama yang diketahui dianggap sebagai interval buruk. Untuk informasi selengkapnya, lihat Tutorial ekspresi formula.

Interval setelah titik data terakhir yang diketahui berlanjut tanpa batas waktu, 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 sejarahnya 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 tidak aktif.

  • Idle Time— Metrik yang menggunakan rumus statetime(Idle) untuk menghitung jumlah waktu dalam detik di mana mesin tidak aktif, per interval 1 menit.

Pro Idle perti ini memiliki titik data berikut.

Stempel waktu 2:00:00 SORE 2:00:30 SORE 2:01:15 SORE 2:02:45 SORE 2:04:00 SORE
Idle 0 1 1 0 0

AWS IoT SiteWise menghitung Idle Time properti setiap menit dari nilai-nilaiIdle. Setelah perhitungan ini selesai, Idle Time properti memiliki titik data berikut.

Stempel waktu 2:00:00 SORE 2:01:00 SORE 2:02:00 SORE 2:03:00 SORE 2:04:00 SORE
Idle Time N/A 30 60 45 0

AWS IoT SiteWise melakukan perhitungan berikut untuk Idle Time di akhir setiap menit.

  • Pukul 2:00 PM (untuk 13:59 hingga 2:00 PM)

    • Tidak ada data Idle sebelum pukul 14.00, jadi tidak ada titik data yang dihitung.

  • Pada 14:01 PM (untuk 2:00 PM hingga 2:01 PM)

    • Pada 14:00:00 PM, mesin aktif (Idleis0).

    • Pada 14:00:30, mesin diam (Idleis1).

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

  • Pada 14:02 PM (untuk 14:01 PM ke 14:02 PM)

    • Pada pukul 2:01:00 PM, mesin tidak aktif (per titik data terakhir pukul 14:00:30).

    • Pukul 2:01:15, mesin masih diam.

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

  • Pada 14:03 PM (untuk 14:02 hingga 14:03 PM)

    • Pada pukul 2:02:00 PM, mesin tidak aktif (per titik data terakhir pukul 2:01:15 PM).

    • Pukul 2:02:45, mesin aktif.

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

  • Pada 14:04 PM (untuk 14:03 PM ke 14:04 PM)

    • Pada pukul 2:03:00 PM, mesin aktif (per titik data terakhir pukul 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 memberikan contoh input dan output untuk metrik jendela satu menit ini:Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p').

Sampel masukan 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 dihasilkan 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 transform asi 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 pabrikan menggunakan AWS IoT SiteWise untuk memantau status mesin. Pabrikan menggunakan pengukuran dan transformasi berikut untuk mewakili proses:

  • Pengukuran,current_state, itu 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, yang samaif(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none). Transformasi ini mengembalikan berapa lama mesin telah dalam keadaan pembersihan dalam hitungan detik, dalam format zaman Unix. Untuk informasi selengkapnya, lihat Gunakan fungsi kondisional dalam ekspresi rumus dan fungsi timestamp ().

Jika mesin tetap dalam keadaan 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 samax + y + pretrigger(y). Tabel berikut menunjukkan nilai untukx,y, dan z dari jam 9:00 pagi sampai 9:15.

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 pagi tiba sebelum titik data untuk pukul 9:00 pagi, z tidak dihitung pada 9:05 AM.

  • Jika nilai x untuk 9:05 pagi tiba sebelum nilai x untuk 09:00 AM dan nilai-nilai y tiba secara kronologis, z sama dengan 22 = 20 + 1 + 1 pukul 9:05 AM.

09:00 PAGI 09:05 PAGI 09:10 PAGI 09:15 PAGI

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

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

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 itupretrigger(y), sama dengan 3 pada 09:15.