Deklarationssats för frågeparametrar
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Frågor som skickas till Kusto kan innehålla en uppsättning namn- eller värdepar. Paren kallas frågeparametrar, tillsammans med själva frågetexten. Frågan kan referera till ett eller flera värden genom att ange namn och typ i en deklarationsuttryck för frågeparametrar.
Frågeparametrar har två huvudsakliga användningsområden:
- Som en skyddsmekanism mot inmatningsattacker.
- Som ett sätt att parametrisera frågor.
I synnerhet bör klientprogram som kombinerar användarindata i frågor som de sedan skickar till Kusto använda mekanismen för att skydda mot Kusto-motsvarigheten till SQL-inmatning attacker.
Deklarera frågeparametrar
Om du vill referera till frågeparametrar måste frågetexten eller funktionerna den använder först deklarera vilken frågeparameter den använder. För varje parameter innehåller deklarationen namn och skalär typ. Parametern kan också ha ett standardvärde. Standardvärdet används om begäran inte ger något konkret värde för parametern. Kusto parsar sedan frågeparameterns värde enligt dess normala parsningsregler för den typen.
Syntax
declare
query_parameters
(
Name1:
Type1 [=
DefaultValue1] [,
...] );
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
Namn1 | string |
✔️ | Namnet på en frågeparameter som används i frågan. |
Type1 | string |
✔️ | Motsvarande typ, till exempel string eller datetime . Värdena som tillhandahålls av användaren kodas som strängar. Lämplig parsningsmetod tillämpas på frågeparametern för att få ett starkt skrivet värde. |
DefaultValue1 | string |
Ett standardvärde för parametern. Det här värdet måste vara en literal av lämplig skalartyp. |
Not
- Precis som användardefinierade funktionerkan frågeparametrar av typen
dynamic
inte ha standardvärden. - Let, set och tabular-instruktioner är sammanspända/avgränsade med ett semikolon, annars betraktas de inte som en del av samma fråga.
Exempel
I hjälpklusterfinns det en Samples
databas med en StormEvents
tabell.
declare query_parameters(maxInjured:long = 90);
StormEvents
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect
utdata
EpisodeId | EventType | totalInjuries |
---|---|---|
12459 | Vinterväder | 137 |
10477 | Överdriven värme | 200 |
10391 | Värme | 187 |
10217 | Överdriven värme | 422 |
10217 | Överdriven värme | 519 |
Ange frågeparametrar i ett klientprogram
Namn och värden för frågeparametrar anges som string
värden av programmet som gör frågan. Inget namn får upprepas.
Tolkningen av värdena görs enligt deklarationssatsen för frågeparametrar. Varje värde parsas som om det vore en literal i en frågas brödtext. Parsningen görs enligt den typ som anges av deklarationssatsen för frågeparametrar.
REST API
Frågeparametrar tillhandahålls av klientprogram via properties
plats för begärandetextens JSON-objekt i en kapslad egenskapsväska med namnet Parameters
. Här är till exempel brödtexten i ett REST API-anrop till Kusto som beräknar ålder för en viss användare, förmodligen genom att programmet ber om användarens födelsedag.
{
"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++'])\"}}"
}
Kusto SDK:er
Information om hur du anger namn och värden för frågeparametrar när du använder Kusto klientbibliotekfinns i Använda frågeparametrar för att skydda användarens indata.
Kusto.Explorer
Om du vill ange de frågeparametrar som skickas när du skickar en begäran till tjänsten använder du Frågeparametrar ikonen "skiftnyckel" (ALT
+ P
).