Bagikan melalui


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:Jam
  • m: menit
  • s:Kedua
  • ms:Milidetik
  • us, µs: microsecond
  • ns: 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