Deklarationssats för frågeparametrar
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 deklarationsinstrukment 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-inmatningsattacker .
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 anger 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
(
Namn1:
Type1 [=
DefaultValue1] [,
...] );
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
Namn1 | string |
✔️ | Namnet på en frågeparameter som används i frågan. |
Typ 1 | 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 typifierat värde. |
DefaultValue1 | string |
Ett standardvärde för parametern . Det här värdet måste vara en literal av lämplig skalärtyp. |
Anteckning
- Precis som användardefinierade funktioner kan frågeparametrar av typen
dynamic
inte ha standardvärden. - Let-, set- och tabular-instruktioner är sammanspända/avgränsade med semikolon, annars betraktas de inte som en del av samma fråga.
Exempel
declare query_parameters(maxInjured:long = 90);
StormEvents
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect
Resultat
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 värden av programmet som string
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 brödtexten i en fråga. Parsningen görs enligt den typ som anges av deklarationssatsen för frågeparametrar.
REST-API
Frågeparametrar tillhandahålls av klientprogram via properties
platsen för begärandetextens JSON-objekt i en kapslad egenskapsuppsättning 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-klientbibliotek finns i Använda frågeparametrar för att skydda användarindata.
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ågeparametrarnas skiftnyckelikon (ALT
+ P
).
Den här funktionen stöds inte i Azure Monitor
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för