Apa itu pola konfigurasi di Pratinjau Prosesor Data Azure IoT?
Penting
Pratinjau Operasi Azure IoT – diaktifkan oleh Azure Arc saat ini dalam PRATINJAU. Anda tidak boleh menggunakan perangkat lunak pratinjau ini di lingkungan produksi.
Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.
Beberapa jenis konfigurasi umum untuk beberapa tahap alur. Artikel ini menjelaskan pola konfigurasi jalur, batch, templat, coba lagi, dan durasi .
Jalur
Beberapa tahap alur menggunakan jalur untuk mengidentifikasi lokasi dalam pesan tempat data harus dibaca atau ditulis. Untuk menentukan lokasi ini, Anda menggunakan Path
bidang yang menggunakan sintaks jq:
- Jalur didefinisikan sebagai string di UI, dan menggunakan sintaks jq .
- Jalur didefinisikan relatif terhadap akar pesan Pemroses Data. Jalur
.
mengacu pada seluruh pesan. - Semua jalur dimulai dengan
.
. - Setiap segmen jalur dapat berupa:
.<identifier>
untuk kunci objek alfanumerik seperti.topic
.."<identifier>"
untuk kunci objek arbitrer seperti."asset-id"
.["<identifier>"]
untuk kunci objek arbitrer seperti["asset-id"]
.[<index>]
untuk indeks array seperti[2]
.
- Segmen dapat ditautkan untuk membentuk jalur kompleks.
Segmen jalur individual harus sesuai dengan ekspresi reguler berikut:
Pola | Regex | Contoh |
---|---|---|
.<identifier> |
\.[a-zA-Z_][a-zA-Z0-9_]* |
.topic |
."<identifier>" |
\."(\\"\|[^"])*" |
."asset-id" |
["<identifier>"] |
\["(\\"\|[^"])*"\] |
["asset-id"] |
[<index>] |
\[-?[0-9]+\] |
[2] |
Untuk mempelajari selengkapnya, lihat Jalur di panduan jq.
Contoh jalur
Jalur berikut adalah contoh berdasarkan struktur Pesan pemroses data standar:
.systemProperties
menghasilkan:{ "partitionKey": "foo", "partitionId": 5, "timestamp": "2023-01-11T10:02:07Z" }
.payload.humidity
menghasilkan:10
.userProperties[0]
menghasilkan:{ "key": "prop1", "value": "value1" }
.userProperties[0].value
menghasilkan:value1
Durasi
Beberapa tahap memerlukan definisi durasi rentang waktu. Misalnya, jendela dalam tahap agregat dan batas waktu dalam tahap panggilan keluar. Tahapan ini menggunakan Duration
bidang untuk mewakili nilai ini.
Beberapa tahap alur menggunakan durasi rentang waktu. Misalnya, tahap agregat memiliki properti windows dan tahap panggilan keluar memiliki properti batas waktu. Untuk menentukan rentang waktu ini, Anda menggunakan Duration
bidang:
Durasi adalah nilai string dengan format <number><char><number><char>
berikut di mana 'char'' dapat berupa:
h
:Jamm
: menits
:Keduams
:Milidetikus
,µs
: microsecondns
: nanodetik
Contoh durasi
2h
1h10m30s
3m9ms400ns
Templat
Beberapa tahap mengharuskan Anda menentukan string dengan campuran nilai dinamis dan statis. Tahapan ini menggunakan nilai templat .
Templat Pemroses Data menggunakan sintaks Kumis untuk menentukan nilai dinamis dalam string.
Nilai sistem dinamis yang tersedia untuk digunakan dalam templat adalah:
instanceId
: ID instans prosesor data.pipelineId
: ID alur tahapan adalah bagian dari.YYYY
: Tahun berjalan.MM
: Bulan ini.DD
: Tanggal saat ini.HH
: Jam saat ini.mm
: Menit saat ini.
Saat ini, Anda dapat menggunakan templat untuk menentukan jalur file dalam tahap tujuan.
Bidang statis dan dinamis
Beberapa tahap memerlukan definisi nilai yang dapat berupa string statis atau nilai dinamis yang Path
berasal dari dalam Pesan. Untuk menentukan nilai-nilai ini, Anda dapat menggunakan bidang statis atau dinamis .
Bidang statis atau dinamis selalu ditulis sebagai objek dengan type
bidang yang memiliki salah satu dari dua nilai: static
atau dynamic
. Skema bervariasi berdasarkan type
.
Bidang statis
Definisi statis adalah nilai tetap untuk type
adalah static
. Nilai aktual disimpan dalam value
.
Bidang | Jenis | Deskripsi | Wajib diisi | Default | Contoh |
---|---|---|---|---|---|
jenis | string const | Jenis bidang . | Ya | - | static |
value | any | Nilai statis yang digunakan untuk konfigurasi (biasanya string). | Ya | - | "static" |
Contoh berikut menunjukkan beberapa definisi bidang statis:
{
"some-field": {
"type": "static",
"value": "some-static-value"
}
}
{
"some-boolean-field": {
"type": "static",
"value": true
}
}
{
"some-complex-field": {
"type": "static",
"value": {
"some": [
"nested",
"data"
]
}
}
}
Bidang dinamis
Nilai tetap untuk type
adalah dynamic
. Nilainya adalah jalur jq.
Bidang | Jenis | Deskripsi | Wajib diisi | Default | Contoh |
---|---|---|---|---|---|
jenis | string const | Jenis bidang | Ya | - | dynamic |
value | Jalur | Jalur di setiap pesan di mana nilai untuk bidang dapat diambil secara dinamis. | Ya | - | .systemProperties.partitionKey |
Contoh berikut menunjukkan definisi bidang dinamis:
{
"some-field": {
"type": "dynamic",
"value": ".systemProperties.topic"
}
}
Coba lagi
Tahapan yang memanggil layanan eksternal dapat menggunakan percobaan ulang untuk menangani kegagalan sementara dan meningkatkan keandalan. Anda dapat mengambil alih kebijakan coba lagi default saat mengonfigurasi tahapan.
Ada empat kemungkinan kebijakan coba lagi:
default
: Kebijakan coba lagi default adalah menggunakan coba lagi backoff eksponensial dengan tiga percobaan ulang dan interval percobaan ulang awal 500 ms.none
: Tidak ada percobaan ulang yang dilakukan.fixed
: Kebijakan percobaan kembali tetap mencoba kembali beberapa kali dengan interval tetap antara setiap percobaan ulang.exponential
: Kebijakan percobaan kembali eksponensial mencoba kembali beberapa kali dengan interval yang meningkat secara eksponensial antara setiap percobaan ulang.
Jika Anda memilih default
atau none
, Anda tidak perlu menyediakan konfigurasi lagi. Jika Anda memilih fixed
atau exponential
, Anda harus menyediakan lebih banyak konfigurasi:
Diperbaiki
Bidang | Jenis | Deskripsi | Wajib diisi? | Default | Contoh |
---|---|---|---|---|---|
type |
string | Nama jenis coba lagi: fixed |
Ya | T/A | fixed |
interval |
Durasi | Periode waktu awal antara setiap coba lagi. | No | 500ms |
2s |
maxRetries |
int | Jumlah percobaan ulang, dari 1 ke 20 |
No | 3 |
20 |
Eksponensial
Bidang | Jenis | Deskripsi | Wajib diisi? | Default | Contoh |
---|---|---|---|---|---|
type |
string | Nama jenis coba lagi: exponential |
Ya | T/A | exponential |
interval |
Durasi | Periode waktu awal antara setiap coba lagi. | No | 500ms |
2s |
maxRetries |
int | Jumlah percobaan ulang, dari 1 ke 20 |
No | 3 |
20 |
maxInterval |
Durasi | Periode waktu maksimum antara setiap percobaan ulang. | No | Tidak | 100s |
Waktu coba lagi eksponensial dihitung sebagai berikut: Jika interval dimulai dengan 500ms
, beberapa interval coba lagi berikutnya adalah randInt(500ms, 500ms * 2^1)
, , randInt(500ms, 500ms * 2^2)
..., randInt(500ms, 500ms * 2^maxRetries)
.
Batch
Beberapa tujuan dalam tahap output memungkinkan Anda membuat batch pesan sebelum menulis ke tujuan. Tujuan ini menggunakan batch untuk menentukan parameter batching.
Saat ini, Anda dapat menentukan batch berdasarkan waktu. Untuk menentukan batching, Anda perlu menentukan interval waktu dan jalur. Path
menentukan bagian mana dari pesan masuk yang akan disertakan dalam output batch.
Bidang | Jenis | Deskripsi | Wajib diisi | Default | Contoh |
---|---|---|---|---|---|
Waktu | Durasi | Berapa lama untuk membuat batch data | No | 60s (Di tujuan tempat batching diberlakukan) |
120s |
Jalur | Jalur | Jalur ke nilai di setiap pesan untuk disertakan dalam output. | No | .payload |
.payload.output |