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


Mintautasítás

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

A minta olyan szerkezet, amely a sztringeket táblázatos kifejezésekhez rendeli.

Minden mintának deklarálnia kell egy mintanevet, és opcionálisan definiálnia egy mintaleképezést. A leképezést meghatározó minták egy táblázatos kifejezést adnak vissza meghíváskor. Különítse el a két utasítást pontosvesszővel.

Az üres minták olyan minták, amelyek deklaráltak, de nem határoznak meg leképezést. Meghíváskor SEM0036 hibát adnak vissza a HTTP-fejléc hiányzó mintadefinícióinak részleteivel együtt.

A Kusto-lekérdezési nyelvet (KQL) használó középső rétegbeli alkalmazások a KQL-lekérdezési eredmények gazdagításához használhatják a visszaadott adatokat a folyamat részeként. További információ: Középső szintű alkalmazások használata.

Szintaxis

  • Üres minta deklarálása:

    declare pattern PatternName;

  • Minta deklarálása és definiálása:

    declare pattern PatternName = (ArgName:ArgType [, ... ]) [[PathName:PathArgType]]

    {

           ( ArgValue1_1 [,ArgValue2_1, ... ] ) [ .[PathValue_1] ] ={kifejezés1};

        [ (ArgValue1_2 [,ArgValue2_2, ... ] ) [ .[PathValue_2] ] ={kifejezés2}; ... ]

    } ;

  • Minta meghívása:

    • PatternName(ArgValue1 [,ArgValue2 ...] ).PathValue
    • PatternName(ArgValue1 [,ArgValue2 ...] ).["PathValue"]

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

Paraméterek

Név Típus Szükséges Leírás
PatternName string ✔️ A minta neve.
ArgName string ✔️ Az argumentum neve. A minták egy vagy több argumentumot tartalmazhatnak.
ArgType string ✔️ Az ArgName argumentum skaláris adattípusa. Lehetséges értékek: string
PathName string Az elérési út argumentumának neve. A minták nem tartalmazhatnak elérési utat vagy egy elérési utat.
PathArgType string A PathArgType argumentum típusa. Lehetséges értékek: string
ArgValue string ✔️ Az ArgName és az opcionális PathName rekordértékeket, hogy egy kifejezéshezlehessen leképezni.
PathValue string A pathNamemegfeleltetendő érték.
kifejezés string ✔️ Táblázatos vagy lambda kifejezés, amely táblázatos adatokat visszaadó függvényre hivatkozik. Például: Logs | where Timestamp > ago(1h)

Példák

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.

Egyszerű minta definiálása

Ez a példa egy olyan mintát határoz meg, amely az állapotokat egy olyan kifejezéshez rendeli, amely visszaadja a fővárosát/fő városát.

declare pattern country = (name:string)[state:string]
{
  ("USA").["New York"] = { print Capital = "Albany" };
  ("USA").["Washington"] = { print Capital = "Olympia" };
  ("Canada").["Alberta"] = { print Capital = "Edmonton" };
};
country("Canada").Alberta

kimeneti

Főváros
Edmonton

Hatókörrel rendelkező minta definiálása

Ez a példa az alkalmazásadatok hatókörének és metrikáinak meghatározására szolgáló mintát definiál. A rendszer meghívja a mintát az adatok egyesítő egyesítésének visszaadásához.

declare pattern App = (applicationId:string)[scope:string]
{
    ('a1').['Data']    = { range x from 1 to 5 step 1 | project App = "App #1", Data    = x };
    ('a1').['Metrics'] = { range x from 1 to 5 step 1 | project App = "App #1", Metrics = rand() };
    ('a2').['Data']    = { range x from 1 to 5 step 1 | project App = "App #2", Data    = 10 - x };
    ('a3').['Metrics'] = { range x from 1 to 5 step 1 | project App = "App #3", Metrics = rand() };
};
union App('a2').Data, App('a1').Metrics

kimeneti

App Adat Verstan
Alkalmazás #2 9
Alkalmazás #2 8
Alkalmazás #2 7
Alkalmazás #2 6
Alkalmazás #2 5
Alkalmazás #1 0.53674122855537532
Alkalmazás #1 0.78304713305654439
Alkalmazás #1 0.20168860732346555
Alkalmazás #1 0.13249123867679469
Alkalmazás #1 0.19388305330563443

Normalizálás

A minták invokálásához szintaxisvariációk tartoznak. Az alábbi egyesítés például egyetlen mintakifejezést ad vissza, mivel az összes meghívás azonos mintával rendelkezik.

declare pattern app = (applicationId:string)[eventType:string]
{
    ("ApplicationX").["StopEvents"] = { database("AppX").Events | where EventType == "StopEvent" };
    ("ApplicationX").["StartEvents"] = { database("AppX").Events | where EventType == "StartEvent" };
};
union
  app("ApplicationX").StartEvents,
  app('ApplicationX').StartEvents,
  app("ApplicationX").['StartEvents'],
  app("ApplicationX").["StartEvents"]

Nincsenek helyettesítő karakterek

A mintában lévő helyettesítő karaktereknek nincs különleges bánásmódja. Az alábbi lekérdezés például egyetlen hiányzó mintahívást ad vissza.

declare pattern app = (applicationId:string)[eventType:string]
{
    ("ApplicationX").["StopEvents"] = { database("AppX").Events | where EventType == "StopEvent" };
    ("ApplicationX").["StartEvents"] = { database("AppX").Events | where EventType == "StartEvent" };
};
union app("ApplicationX").["*"]
| count

Kimeneti szemantikai hiba

Egy vagy több mintahivatkozás nincs deklarálva. Észlelt mintahivatkozások: ["app('ApplicationX').]. *']"]

Középső szintű alkalmazások alkalmazása

A középső rétegbeli alkalmazások lehetővé teszi a felhasználók számára a KQL használatát, és a belső szolgáltatásból származó bővített adatokkal bővítik a lekérdezési eredményeket.

Ennek érdekében az alkalmazás egy mintautasítást biztosít a felhasználóknak, amely táblázatos adatokat ad vissza, amelyeket a felhasználók használhatnak a lekérdezéseikben. A minta argumentumai azok a kulcsok, amelyeket az alkalmazás használni fog a bővítési adatok lekéréséhez.

Amikor a felhasználó futtatja a lekérdezést, az alkalmazás nem elemzi magát a lekérdezést, hanem egy üres minta által visszaadott hibát használja a szükséges kulcsok lekéréséhez. Így a lekérdezést előküldi az üres mintadeklarációval, elküldi a fürtnek feldolgozásra, majd elemzi a visszaadott HTTP-fejlécet a hiányzó mintaargumentumok értékeinek lekéréséhez. Az alkalmazás ezeket az értékeket használja a bővítési adatok kereséséhez, és létrehoz egy új deklarációt, amely meghatározza a megfelelő bővítési adatleképezést.

Végül az alkalmazás az új definíciót a lekérdezésre előszedi, újraküldi feldolgozásra, és visszaadja a felhasználónak kapott eredményt.

Példa

A példákban a rendszer deklarál, definiál, majd meghív egy mintát.

Üres minta deklarálása

Ebben a példában egy középső szintű alkalmazás hosszúsági/szélességi helyekkel bővíti a lekérdezéseket. Az alkalmazás egy belső szolgáltatással leképezi az IP-címeket a hosszúsági/szélességi helyekre, és egy map_ip_to_longlatnevű mintát biztosít. A lekérdezés futtatásakor hibát ad vissza hiányzó mintadefiníciókkal:

map_ip_to_longlat("10.10.10.10")

Minta deklarálása és definiálása

Az alkalmazás nem elemzi ezt a lekérdezést, ezért nem tudja, hogy melyik IP-címet (10.10.10.10) adták át a mintának. Ezért egy üres map_ip_to_longlat mintadeklarációval előküldi a felhasználói lekérdezést, és elküldi feldolgozásra:

declare pattern map_ip_to_longlat;
map_ip_to_longlat("10.10.10.10")

Az alkalmazás a következő hibaüzenetet kapja válaszként.

Egy vagy több mintahivatkozás nincs deklarálva. Észlelt mintahivatkozások: ["map_ip_to_longlat('10.10.10.10')"]

Minta meghívása

Az alkalmazás vizsgálja meg a hibát, megállapítja, hogy a hiba hiányzó mintahivatkozást jelez, és lekéri a hiányzó IP-címet (10.10.10.10.10). Az IP-cím használatával megkeresi a bővítési adatokat a belső szolgáltatásban, és létrehoz egy új mintát, amely meghatározza az IP-cím megfeleltetését a megfelelő hosszúsági és szélességi adatokhoz. Az új minta elő van állítva a felhasználó lekérdezésére, és újra fut.

Ezúttal a lekérdezés sikeres lesz, mert a bővítési adatok deklarálva lesznek a lekérdezésben, és az eredményt a rendszer elküldi a felhasználónak.

declare pattern map_ip_to_longlat = (address:string)
{
  ("10.10.10.10") = { print Lat=37.405992, Long=-122.078515 };
};
map_ip_to_longlat("10.10.10.10")

kimeneti

Lat Long
37.405992 -122.078515