Deklarationsanweisung für Abfrageparameter
An Kusto gesendete Abfragen können eine Reihe von Namens- oder Wertpaaren enthalten. Die Paare werden zusammen mit dem Abfragetext selbst als Abfrageparameter bezeichnet. Die Abfrage kann durch Angabe von Namen und Typ in einer Abfrageparameterdeklarationsanweisung auf einen oder mehrere Werte verweisen.
Abfrageparameter verwenden zwei Standard:
- Als Schutzmechanismus gegen Injektionsangriffe.
- Als Möglichkeit zum Parametrisieren von Abfragen.
Insbesondere Clientanwendungen, die vom Benutzer bereitgestellte Eingaben in Abfragen kombinieren, die sie dann an Kusto senden, sollten den Mechanismus zum Schutz vor dem Kusto-Äquivalent von SQL Injection-Angriffen verwenden.
Deklarieren von Abfrageparametern
Um auf Abfrageparameter zu verweisen, muss der abfragetext oder die funktionen, die er verwendet, zuerst deklarieren, welcher Abfrageparameter verwendet wird. Für jeden Parameter stellt die Deklaration den Namen und den Skalartyp bereit. Optional kann der Parameter auch einen Standardwert aufweisen. Der Standardwert wird verwendet, wenn die Anforderung keinen konkreten Wert für den Parameter bereitstellt. Kusto analysiert dann den Wert des Abfrageparameters gemäß seinen normalen Analyseregeln für diesen Typ.
Syntax
declare
query_parameters
(
Name1:
Type1 [=
DefaultValue1] [,
...] );
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | BESCHREIBUNG |
---|---|---|---|
Name1 | string |
✔️ | Der Name eines Abfrageparameters, der in der Abfrage verwendet wird. |
Typ1 | string |
✔️ | Der entsprechende Typ, z string . B. oder datetime . Die vom Benutzer bereitgestellten Werte werden als Zeichenfolgen codiert. Die entsprechende Analysemethode wird auf den Abfrageparameter angewendet, um einen stark typisierten Wert abzurufen. |
DefaultValue1 | string |
Ein Standardwert für den Parameter. Dieser Wert muss ein Literal des entsprechenden Skalartyps sein. |
Hinweis
- Wie benutzerdefinierte Funktionen können Abfrageparameter des Typs
dynamic
keine Standardwerte aufweisen. - Let-, set- und tabellarische Anweisungen werden durch ein Semikolon miteinander verknüpft bzw. getrennt. Andernfalls werden sie nicht als Teil derselben Abfrage betrachtet.
Beispiel
declare query_parameters(maxInjured:long = 90);
StormEvents
| where InjuriesDirect + InjuriesIndirect > maxInjured
| project EpisodeId, EventType, totalInjuries = InjuriesDirect + InjuriesIndirect
Ausgabe
EpisodeId | EventType | totalInjuries |
---|---|---|
12459 | Winterwetter | 137 |
10477 | Übermäßige Hitze | 200 |
10391 | Hitze | 187 |
10217 | Übermäßige Hitze | 422 |
10217 | Übermäßige Hitze | 519 |
Angeben von Abfrageparametern in einer Clientanwendung
Die Namen und Werte von Abfrageparametern werden von der abfragebereiten Anwendung als string
Werte bereitgestellt. Es darf sich kein Name wiederholen.
Die Interpretation der Werte erfolgt gemäß der Deklarationsanweisung der Abfrageparameter. Jeder Wert wird so analysiert, als wäre er ein Literal im Text einer Abfrage. Die Analyse erfolgt gemäß dem Typ, der in der Deklarationsanweisung der Abfrageparameter angegeben wird.
REST-API
Abfrageparameter werden von Clientanwendungen über den properties
Slot des JSON-Objekts des Anforderungstexts in einem geschachtelten Eigenschaftenbehälter namens Parameters
bereitgestellt. Hier sehen Sie beispielsweise den Text eines REST-API-Aufrufs an Kusto, der das Alter eines Benutzers berechnet, vermutlich indem die Anwendung nach dem Geburtstag des Benutzers fragt.
{
"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 SDKs
Informationen zum Bereitstellen der Namen und Werte von Abfrageparametern bei Verwendung von Kusto-Clientbibliotheken finden Sie unter Verwenden von Abfrageparametern zum Schutz von Benutzereingaben.
Kusto.Explorer
Um die Abfrageparameter festzulegen, die beim Senden einer Anforderung an den Dienst gesendet werden, verwenden Sie das Symbol "Schraubenschlüssel" (ALT
+ P
) für Abfrageparameter.
Diese Funktion wird in Azure Monitor nicht unterstützt.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für