Megosztás a következőn keresztül:


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

Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőkre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

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 egy vagy több értékre hivatkozhat, ha neveket és típusokat ad meg egy 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:

  • Védelmi mechanizmus az injektálási támadások ellen.
  • A lekérdezések paraméterezésének módjaként.

Különösen azoknak az ügyfélalkalmazásoknak kell használniuk a mechanizmust, amelyek a felhasználó által megadott bemeneteket egyesítik a Kusto-nak küldött lekérdezésekben, az SQL-injektálási támadásokkal egyenértékű Kusto-támadásokkal szembeni védelem érdekében.

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 konkrét értéket a paraméternek. A Kusto ezután elemzi a lekérdezési paraméter értékét az adott típusra vonatkozó szokásos elemzési szabályok szerint.

Syntax

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

További információ szintaxiskonvenciákról.

Parameters

Name Típus Required Description
Name1 string ✔️ A lekérdezésben használt lekérdezési paraméter neve.
Type1 string ✔️ A megfelelő típus, például string vagy datetime. A felhasználó által megadott értékek sztringekként vannak kódolva. A rendszer a megfelelő elemzési módszert alkalmazza a lekérdezési paraméterre egy erősen beírt é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.

Note

  • felhasználó által definiált függvényekhez hasonlóan a dynamic típusú 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.

Example

Az ebben a szakaszban szereplő példák bemutatják, hogyan használhatja a szintaxist az első lépésekhez.

A cikkben szereplő példák nyilvánosan elérhető táblákat használnak a súgófürtben, például a StormEventsMintaadatbázis tábláját.

A cikkben szereplő példák nyilvánosan elérhető táblákat használnak, például a Weather Weather Analytics mintagyűjteményében található táblázatot. Előfordulhat, hogy módosítania kell a tábla nevét a példa lekérdezésben, hogy megfeleljen a munkaterület táblájának.

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

Ez a lekérdezés a StormEvents táblából kéri le a stormeseményeket, ahol a közvetlen és közvetett sérülések teljes száma meghaladja a megadott küszöbértéket (alapértelmezés szerint 90). Ezután az EpisodeId, az EventType és az egyes események sérüléseinek teljes számát jeleníti meg.

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

Output

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

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

A lekérdezési paraméterek nevét és értékeit a lekérdezést készítő alkalmazás string értékként adja meg. 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 van 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 kérelemtörzs JSON-objektumának properties pontján keresztül, egy beágyazott tulajdonságcsomagban, Parameters. Itt látható például egy REST API-hívás törzse a Kusto felé, 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

A lekérdezési paraméterek nevének és értékének megadásáról a Kusto-ügyfélkódtárak használatakor a felhasználói bemenetek védelme lekérdezési paraméterekkel című témakörben olvashat.

Kusto.Explorer

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