Lekérdezési paraméterek deklarációs utasítása

A Kusto-nak küldött lekérdezések tartalmazhatnak név- vagy értékpárokat. A párokat lekérdezési paramétereknek nevezzük, a lekérdezés szövegével együtt. A lekérdezés nevek és típus megadásával hivatkozhat egy vagy több értékre a lekérdezési paraméterek deklarációs utasításában.

A lekérdezési paramétereknek két fő felhasználási módja van:

  • Az injektálási támadások elleni védelmi mechanizmusként.
  • Lekérdezések paraméterezésének módjaként.

Különösen azok az ügyfélalkalmazások, amelyek a felhasználó által megadott bemeneteket kombinálják a Kusto-nak küldött lekérdezésekben, a mechanizmust kell használniuk az SQL-injektálási támadások Kusto-megfelelője elleni védelemhez.

Lekérdezési paraméterek deklarálása

A lekérdezési paraméterekre való hivatkozáshoz a lekérdezés szövegének vagy függvényeinek először deklarálniuk kell, hogy melyik lekérdezési paramétert használja. A deklaráció minden paraméterhez megadja a nevet és a skaláris típust. Opcionálisan a paraméter alapértelmezett értékkel is rendelkezhet. Az alapértelmezett érték akkor használatos, ha a kérés nem ad meg konkrét értéket a paraméterhez. A Kusto ezután elemzi a lekérdezési paraméter értékét az adott típushoz tartozó szokásos elemzési szabályok szerint.

Syntax

declarequery_parameters(Név1:Type1 [=DefaultValue1] [,...] );

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
Név1 string ✔️ A lekérdezésben használt lekérdezési paraméter neve.
Típus1 string ✔️ A megfelelő típus, például string vagy datetime. A felhasználó által megadott értékek sztringekként vannak kódolva. A megfelelő elemzési metódust alkalmazza a rendszer a lekérdezési paraméterre egy erős típusú érték lekéréséhez.
DefaultValue1 string A paraméter alapértelmezett értéke. Ennek az értéknek a megfelelő skaláris típusú literálnak kell lennie.

Megjegyzés

  • A felhasználó által definiált függvényekhez hasonlóan a típusú dynamic lekérdezési paramétereknek nem lehetnek alapértelmezett értékei.
  • A táblázatos utasítások összefűzhetők vagy pontosvesszővel elválaszthatók, ellenkező esetben nem lesznek ugyanannak a lekérdezésnek a részei.

Példa

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

Kimenet

EpisodeId EventType totalInjuries
12459 Téli időjárás 137
10477 Túlzott hő 200
10391 187
10217 Túlzott hő 422
10217 Túlzott hő 519

Lekérdezési paraméterek megadása ügyfélalkalmazásban

A lekérdezési paraméterek neveit és értékeit a lekérdezést végző alkalmazás adja meg értékként string . A név nem ismétlődhet.

Az értékek értelmezése a lekérdezési paraméterek deklarációs utasítása alapján történik. Minden érték úgy lesz elemezve, mintha egy lekérdezés törzsében konstans lenne. Az elemzés a lekérdezési paraméterek deklarációs utasítása által megadott típusnak megfelelően történik.

REST API

A lekérdezési paramétereket az ügyfélalkalmazások a properties kérelemtörzs JSON-objektumának tárolóhelyén keresztül, egy nevű beágyazott tulajdonságcsomagban Parametersbiztosítják. Íme például a Kustóhoz irányuló REST API-hívás törzse, amely kiszámítja egy felhasználó életkorát, feltehetően azzal, hogy az alkalmazás kéri a felhasználó születésnapját.

{
    "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-k

Ha meg szeretné tudni, hogyan adhatja meg a lekérdezési paraméterek nevét és értékeit a Kusto-ügyfélkódtárak használatakor, olvassa el a Lekérdezési paraméterek használata a felhasználói bemenet védelméhez című témakört.

Kusto.Explorer

A szolgáltatásnak küldött kérések során küldött lekérdezési paraméterek beállításához használja a Lekérdezési paraméterek "csavarkulcs" ikont (ALT + P).

Ez a képesség nem támogatott az Azure Monitorban