Bagikan melalui


Pernyataan deklarasi parameter kueri

Beralih layanan menggunakan menu tarik-turun Versi. Pelajari selengkapnya tentang navigasi.
Berlaku untuk: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Kueri yang dikirim ke Kusto mungkin menyertakan satu set pasangan nama atau nilai. Pasangan disebut parameter kueri, bersama dengan teks kueri itu sendiri. Kueri dapat mereferensikan satu atau beberapa nilai, dengan menentukan nama dan jenis, dalam pernyataan deklarasi parameter kueri.

Parameter kueri memiliki dua kegunaan utama:

  • Sebagai mekanisme perlindungan terhadap serangan injeksi.
  • Sebagai sarana untuk membuat parameter kueri.

Secara khusus, aplikasi klien yang menggabungkan input yang disediakan pengguna dalam kueri yang kemudian mereka kirim ke Kusto harus menggunakan mekanisme untuk melindungi dari serangan Injeksi SQL yang setara dengan Kusto.

Mendeklarasikan parameter kueri

Untuk mereferensikan parameter kueri, teks kueri, atau fungsi yang digunakannya, harus terlebih dahulu mendeklarasikan parameter kueri mana yang digunakannya. Untuk setiap parameter, deklarasi tersebut mencantumkan nama dan jenis skalar. Secara opsional, parameter juga dapat memiliki nilai default. Nilai default digunakan jika permintaan tidak memberikan nilai konkret untuk parameter. Lalu, Kusto mengurai nilai parameter kueri, sesuai dengan aturan penguraian normal untuk jenis tersebut.

Syntax

declare query_parameters ( Nama1:Type1 [=DefaultValue1] [,...] );

Pelajari selengkapnya tentang konvensi sintaksis.

Parameters

Name Type Required Description
Name1 string ✔️ Nama parameter kueri yang digunakan dalam kueri.
Type1 string ✔️ Jenis yang sesuai, seperti string atau datetime. Nilai yang disediakan oleh pengguna dikodekan sebagai string. Metode penguraian yang sesuai diterapkan ke parameter kueri untuk mendapatkan nilai yang sangat di ketik.
DefaultValue1 string Nilai default untuk parameter . Nilai ini harus merupakan literal dari jenis skalar yang sesuai.

Note

  • Seperti fungsi yang ditentukan pengguna, parameter kueri mengenai jenis dynamic tidak dapat memiliki nilai default.
  • Pernyataan dalam tabel, pernyataan set, dan pernyataan let dirangkai/dipisahkan oleh titik koma, jika tidak, tidak akan dianggap sebagai bagian dari kueri yang sama.

Example

Contoh di bagian ini memperlihatkan cara menggunakan sintaks untuk membantu Anda memulai.

Contoh dalam artikel ini menggunakan tabel yang tersedia untuk umum di kluster bantuan, seperti StormEvents tabel dalam database Sampel .

Contoh dalam artikel ini menggunakan tabel yang tersedia untuk umum, seperti Weather tabel di galeri sampel Analitik cuaca. Anda mungkin perlu mengubah nama tabel dalam contoh kueri agar sesuai dengan tabel di ruang kerja Anda.

Mendeklarasikan parameter kueri

Kueri ini mengambil peristiwa badai dari tabel StormEvents di mana jumlah total cedera langsung dan tidak langsung melebihi ambang yang ditentukan (defaultnya adalah 90). Kemudian memproyeksikan EpisodeId, EventType, dan jumlah total cedera untuk masing-masing peristiwa ini.

declare query_parameters(maxInjured:long = 90);
StormEvents 
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect

Output

EpisodeId EventType totalInjuries
12459 Cuaca Musim Dingin 137
10477 Panas Berlebihan 200
10391 Heat 187
10217 Panas Berlebihan 422
10217 Panas Berlebihan 519

Menentukan parameter kueri dalam aplikasi klien

Nama dan nilai parameter kueri diberikan sebagai nilai string oleh aplikasi yang membuat kueri. Tidak ada nama yang bisa diulang.

Interpretasi nilai dilakukan sesuai dengan pernyataan deklarasi parameter kueri. Setiap nilai diurai seolah-olah nilai itu adalah literal dalam isi kueri. Penguraian dilakukan sesuai dengan jenis yang ditentukan oleh pernyataan deklarasi parameter kueri.

REST API

Parameter kueri diberikan oleh aplikasi klien melalui properties slot objek JSON isi permintaan, dalam tas properti bertumpuk yang disebut Parameters. Misalnya, berikut adalah isi panggilan REST API ke Kusto yang menghitung usia beberapa pengguna, kemungkinan dengan meminta aplikasi menanyakan ulang tahun pengguna.

{
    "ns": null,
    "db": "myDB",
    "csl": "declare query_parameters(birthday:datetime); print strcat(\"Your age is: \", tostring(now() - birthday))",
    "properties": "{\"Options\":{},\"Parameters\":{\"birthday\":\"datetime(1970-05-11)\",\"courses\":\"dynamic(['Java', 'C++'])\"}}"
}

SDK Kusto

Untuk mempelajari cara memberikan nama dan nilai parameter kueri saat menggunakan pustaka klien Kusto, lihat Menggunakan parameter kueri untuk melindungi input pengguna.

Kusto.Explorer

Untuk mengatur parameter kueri yang dikirim saat membuat permintaan ke layanan, gunakan ikon "kunci inggris" parameter kueri (ALT + P).