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


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

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A Kusto-nak küldött lekérdezések tartalmazhatnak név- vagy értékpárokat. A párokat lekérdezési paraméterekneknevezik, 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 bemenetet egyesítik a Kusto-nak küldött lekérdezésekben, hogy védelmet nyújtsanak a SQL Injection-támadások Kusto-megfelelője ellen.

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.

Szintaxis

declare query_parameters ( Name1:Type1 [=DefaultValue1] [,...] );

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

Paraméterek

Név Típus Szükséges Leírás
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.

Jegyzet

  • 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.

Példa

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 a nyilvánosan elérhető tábláit használják a fürt, például a StormEvents adatbá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 Analytics StormEvents táblát, mintaadatokat.

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, EventType, valamint 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

kimeneti

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 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

Ha tudni szeretné, hogyan adhatja meg a lekérdezési paraméterek nevét és értékeit a Kusto ügyfélkódtárakhasználatakor, olvassa el A felhasználói bevitelivédelme lekérdezési paraméterekkel című témakört.

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étereket "csavarkulcs" ikont (ALT + P).