Mintautasítás
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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"]
-
PatternName
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 pathName |
|
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_longlat
nevű 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 |