Pattern utasítás
A minta olyan szerkezet, amely a sztringeket táblázatos kifejezésekhez rendeli. Minden mintának deklarálnia kell egy mintanevet, és opcionálisan meg kell adnia egy mintaleképezést. A leképezést definiáló minták a meghíváskor egy táblázatos kifejezést ad vissza. A két utasítást pontosvesszővel kell elválasztani.
Az üres minták olyan minták, amelyek deklaráltak, de nem határoznak meg leképezést. A meghíváskor hibát adnak vissza SEM0036 , valamint a hiányzó mintadefiníciók részleteit a HTTP-fejlécben. A Kusto lekérdezésnyelv (KQL) élményt nyújtó középrétegbeli alkalmazások a KQL-lekérdezés eredményeinek bővítéséhez használhatják a visszaadott adatokat a folyamat részeként. További információ: A középső rétegbeli alkalmazások használata.
Syntax
Ü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ó a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | 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 |
Elérési_út | string |
Az elérési út argumentum neve. A mintákhoz nem tartozhat elérési út vagy egy elérési út. | |
PathArgType | string |
A PathArgType argumentum típusa. Lehetséges értékek: string |
|
ArgValue | string |
✔️ | A kifejezésre leképezendő ArgName és opcionális PathName rekordértékek. |
PathValue | string |
A PathName függvényhez leképzendő érték. | |
expression | 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 alábbi példák mindegyikében a rendszer deklarál, definiál, majd meghív egy mintát.
Egyszerű minták definiálása
Az alábbi példa egy olyan mintát határoz meg, amely a fővárosát/fő városát visszaadó kifejezéshez rendeli az állapotokat.
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
Kimenet
Tőke |
---|
Edmonton |
Az alábbi példa egy olyan mintát határoz meg, amely meghatároz néhány hatókörrel rendelkező alkalmazásadatokat.
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
Kimenet
Alkalmazás | Adatok | Mérőszámok |
---|---|---|
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 meghívásához szintaxisváltozatok tartoznak. Az alábbi unió 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 helyettesítő karaktereknek nincs különleges kezelése a mintában. A következő 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
Szemantikai hibát ad vissza
Egy vagy több mintahivatkozás nincs deklarálva. Észlelt mintahivatkozások: ["app('ApplicationX').[ *']"]
A középső szintű alkalmazásokkal végzett munka
A középső szintű alkalmazások lehetővé teszik a felhasználók számára a KQL használatát, és a lekérdezési eredményeket a belső szolgáltatásból származó bővített adatokkal bővítik.
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 azt tervezi, hogy egy üres minta által visszaadott hibát használja a szükséges kulcsok lekéréséhez. Ezért a lekérdezést az üres mintadeklarációval előreküldi, 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 adatok leképezését. Végül az alkalmazás az új definíciót a felhasználó lekérdezésére írja elő, újraküldi feldolgozásra, és visszaadja a felhasználónak kapott eredményt.
Példa
A következő példában egy középső szintű alkalmazás lehetővé teszi a lekérdezések hosszúsági/szélességi helyekkel való bővítését. Az alkalmazás egy belső szolgáltatással leképezi az IP-címeket a hosszúsági/szélességi helyekre, és egy erre a célra szolgáló map_ip_to_longlat
mintát biztosít. Tegyük fel, hogy az alkalmazás a következő lekérdezést kapja meg a felhasználótól:
map_ip_to_longlat("10.10.10.10")
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 a felhasználói lekérdezést egy üres map_ip_to_longlat
mintadeklarációval előreküldi, é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')"]
Az alkalmazás megvizsgálja 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). 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éhez, é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")
Kimenet
Lat | Long |
---|---|
37.405992 | -122.078515 |
Ez a képesség nem támogatott az Azure Monitorban.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: