parse-kv operátor
Kinyeri a strukturált információkat egy sztringkifejezésből, és egy kulcs/érték űrlapon jeleníti meg az információkat.
A következő kinyerési módok támogatottak:
- Megadott deliméter: A kulcsok/értékek és párok egymástól való elválasztási módját megadó megadott határolójelek alapján történő kinyerés.
- Nem megadott deliméter: Kinyerés határolójelek megadása nélkül. A nonalphanumerikus karakterek elválasztó karakternek minősülnek.
- Regex: Kinyerés reguláris kifejezések alapján.
Syntax
Megadott delimeter
T|
parse-kv
Kifejezésas
(
Kulcslista)
with
(
pair_delimiter
=
PairDelimiter,
kv_delimiter
=
KvDelimiter [,
quote
=
QuoteChars ... [,
escape
=
EscapeChar ...]] [,
greedy
=
true
] )
Nem meghatározott elválasztó
T|
parse-kv
Kifejezésas
(
Kulcslista)
with
(
[quote
=
QuoteChars ... [,
escape
=
EscapeChar ...]] )
Regex
T|
parse-kv
Kifejezésas
(
Kulcslista)
with
(
regex
=
RegexPattern)
)
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
Expression | string |
✔️ | Az a kifejezés, amelyből kulcsértékeket szeretne kinyerni. |
Kulcslista | string |
✔️ | A kulcsnevek és érték adattípusaik vesszővel tagolt listája. A kulcsok sorrendjének nem kell egyeznie a szövegben megjelenő sorrenddel. |
PairDelimiter | string |
Egy elválasztó, amely elválasztja a kulcsértékpárokat egymástól. | |
KvDelimiter | string |
Elválasztó, amely elválasztja a kulcsokat az értékektől. | |
Idézetdiagramok | string |
Egy vagy két karakterből álló sztringkonstans, amely olyan nyitó és záró idézőjeleket jelöl, amelyekkel a kulcsnév vagy a kinyert érték becsomagolható. A paraméter megismételhető a nyitó/záró idézőjelek külön készletének megadásához. | |
EscapeChar | string |
Egykarakterekből álló sztringkonstans, amely egy olyan karaktert ír le, amely speciális karakterek idézőjeles értékben való megjelenítéséhez használható. A paraméter többszöri feloldókarakterek használata esetén megismételhető. | |
RegexPattern | string |
Egy reguláris kifejezés , amely pontosan két rögzítési csoportot tartalmaz. Az első csoport a kulcs nevét, a második pedig a kulcs értékét jelöli. |
Válaszok
Az eredeti T bemeneti táblázatos kifejezés, kiterjesztve a kinyerni kívánt kulcsonkénti oszlopokkal.
Megjegyzés
- Ha egy kulcs nem jelenik meg egy rekordban, a megfelelő oszlopérték vagy egy üres sztring lesz
null
az oszlop típusától függően. - Csak az operátorban felsorolt kulcsok lesznek kinyerve.
- A rendszer kinyeri a kulcsok első megjelenését, és figyelmen kívül hagyja a későbbi értékeket.
- Kulcsok és értékek kinyerésekor a rendszer figyelmen kívül hagyja a kezdő és záró szóközöket.
Példák
Kinyerés jól definiált elválasztókkal
Az alábbi példában a kulcsokat és az értékeket jól meghatározott elválasztójelek választják el egymástól. Ezek a delimeterek vessző és kettőspont karakterek.
print str="ThreadId:458745723, Machine:Node001, Text: The service is up, Level: Info"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (pair_delimiter=',', kv_delimiter=':')
| project-away str
Kimenet
Szöveg | Szálazonosító | Gép |
---|---|---|
A szolgáltatás működik | 458745723 | Node001 |
Kinyerés az érték idézésével
Néha a kulcsnevek vagy értékek idézőjelekbe vannak csomagolva, amelyek lehetővé teszik, hogy maguk az értékek elválasztó karaktereket tartalmazzanak. Az alábbi példák bemutatják, hogyan történik az quote
argumentumok használata az ilyen értékek kinyerésére.
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="connection aborted" "event time"=2021-01-01T10:00:54'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"')
| project-away str
Kimenet
eseményidő | src | Dst | Bájt | Hiba |
---|---|---|---|---|
2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | kapcsolat megszakadt |
Az alábbi példa különböző nyitó és záró idézőjeleket használ:
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure=(connection aborted) (event time)=(2021-01-01 10:00:54)'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='()')
| project-away str
Kimenet
eseményidő | src | Dst | Bájt | Hiba |
---|---|---|---|---|
2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | kapcsolat megszakadt |
Az értékek maguk is tartalmazhatnak megfelelően feloldott idézőjel-karaktereket, ahogy az alábbi példában látható:
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="the remote host sent \\"bye!\\"" time=2021-01-01T10:00:54'
| parse-kv str as (['time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"', escape='\\')
| project-away str
Kimenet
time | src | Dst | Bájt | Hiba |
---|---|---|---|---|
2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | a távoli gazdagép "bye!" üzenetet küldött |
Kinyerés kapzsi módban
Vannak olyan esetek, amikor a nem kvótált értékek párelválasztókat tartalmazhatnak. Ebben az esetben a greedy
mód használatával jelezze az operátornak, hogy az érték végének keresésekor a következő kulcs megjelenéséig (vagy sztring végéig) sztringet keressen.
Az alábbi példák összehasonlítják az operátor és a greedy
megadott mód nélküli működését:
print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=')
| project-away str
Kimenet
name | telefon | city |
---|---|---|
John | 555 | Új |
print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=', greedy=true)
| project-away str
Kimenet
name | telefon | city |
---|---|---|
John Doe | 555 5555 | New York |
Kinyerés jól meghatározott elválasztójelek nélkül
A következő példában minden nonalphanumerikus karakter érvényes elválasztónak minősül:
print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: Started"
| parse-kv str as (Text: string, ThreadId:long, Machine: string)
| project-away str
Kimenet
Szöveg | Szálazonosító | Gép |
---|---|---|
Első lépések | 458745723 | Node001 |
Az idéző és a menekülő értékek ebben a módban engedélyezve lesznek az alábbi példában látható módon:
print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: 'The service \\' is up'"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (quote="'", escape='\\')
| project-away str
Kimenet
Szöveg | Szálazonosító | Gép |
---|---|---|
A szolgáltatás ' működik | 458745723 | Node001 |
Kinyerés regex használatával
Ha nem határoznak meg elég jól elválasztó karaktereket a szövegstruktúrában, a reguláris kifejezésalapú kinyerés hasznos lehet.
print str=@'["referer url: https://hostname.com/redirect?dest=/?h=1234", "request url: https://hostname.com/?h=1234", "advertiser id: 24fefbca-cf27-4d62-a623-249c2ad30c73"]'
| parse-kv str as (['referer url']:string, ['request url']:string, ['advertiser id']: guid) with (regex=@'"([\w ]+)\s*:\s*([^"]*)"')
| project-away str
Kimenet
hivatkozási URL-cím | kérelem URL-címe | hirdető azonosítója |
---|---|---|
https://hostname.com/redirect?dest=/?h=1234 |
https://hostname.com/?h=1234 |
24fefbca-cf27-4d62-a623-249c2ad30c73 |
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: