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


parse-kv operátor

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

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:

Szintaxis

Megadott elválasztójel

T|parse-kvExpressionas(KeysList)with(pair_delimiter=PairDelimiter,kv_delimiter=KvDelimiter [,quote=QuoteChars ... [,escape=EscapeChar ...]] [,greedy=true] )

Nem meghatározott elválasztó

T|parse-kvExpressionas(KeysList)with( [quote=QuoteChars ... [,escape=EscapeChar ...]] )

Regex

T|parse-kvExpressionas(KeysList)with(regex=RegexPattern))

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

Paraméterek

Név Típus Szükséges Leírás
Kifejezés string ✔️ Az a kifejezés, amelyből kulcsértékeket szeretne kinyerni.
KeysList string ✔️ A kulcsnevek és értékük adattípusainak vesszővel tagolt listája. A kulcsok sorrendjének nem kell megegyeznie a szövegben megjelenő sorrenddel.
PairDelimiter string 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.
QuoteChars string Egy vagy két karakterből álló sztringkonstans, amely 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 Egy karakteres sztringkonstans, amely egy olyan karaktert ír le, amely felhasználható speciális karakterek idézőjeles értékben való meneküléséhez. A paraméter több feloldó karakter használata esetén megismételhető.
RegexPattern string Egy reguláris kifejezés, pontosan két rögzítési csoportot tartalmaz. Az első csoport a kulcs nevét, a második csoport pedig a kulcs értékét jelöli.

Visszatér

Az eredeti bemeneti táblázatos kifejezés T, kiterjesztve a megadott kulcsonkénti oszlopokkal.

Jegyzet

  • Ha egy kulcs nem jelenik meg egy rekordban, a megfelelő oszlopérték az oszlop típusától függően null vagy üres sztring.
  • 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 kezdő és záró szóközök figyelmen kívül lesznek hagyva.

Példák

Az ebben a szakaszban szereplő példák bemutatják, hogyan használhatja a szintaxist az első lépésekhez.

Kinyerés jól definiált elválasztókkal

Ebben a lekérdezésben a kulcsokat és az értékeket jól definiált 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

kimeneti

SMS Szálazonosító Gép
A szolgáltatás működik 458745723 Node001

Kinyerés érték idézéssel

Előfordulhat, hogy a kulcsnevek vagy értékek idézőjelekbe vannak csomagolva, így maguk az értékek elválasztó karaktereket tartalmazhatnak. Az alábbi példák azt mutatják be, hogyan használható egy quote argumentum 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

kimeneti

esemény ideje Src Dst Bájt kudarc
2021-01-01 10:00:54.0000000 10.1.1.123 10.1.1.124 125 kapcsolat megszakadt

Ez a lekérdezés 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

kimeneti

esemény ideje Src Dst Bájt kudarc
2021-01-01 10:00:54.0000000 10.1.1.123 10.1.1.124 125 kapcsolat megszakadt

Maguk az értékek tartalmazhatnak megfelelően feloldott idézőjeleket, ahogy az alábbi példa is mutatja:

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

kimeneti

Idő Src Dst Bájt kudarc
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 a következő kulcs megjelenéséig (vagy sztring végéig) vizsgálja meg az érték végét.

Az alábbi példák összehasonlítják, hogyan működik az operátor a megadott greedy mód nélkül:

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

kimeneti

név Telefon város
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

kimeneti

név Telefon város
John Doe 555 5555 New York

Kinyerés jól definiált elválasztókkal

Az alábbi 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

kimeneti

SMS Szálazonosító Gép
Kezdett 458745723 Node001

Az idéző és a menekülő értékek ebben a módban engedélyezettek 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

kimeneti

SMS Szálazonosító Gép
A szolgáltatás " fel van állítva 458745723 Node001

Kinyerés regex használatával

Ha nem határoznak meg elég elválasztójeleket a szövegszerkezethez, 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

kimeneti

hivatkozó URL-címe 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