Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
Platí pro: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Extrahuje strukturované informace z řetězcového výrazu a představuje informace ve formuláři klíč/hodnota.
Podporují se následující režimy extrakce:
- zadaný oddělovač: Extrakce na základě zadaných oddělovačů, které určují, jak jsou klíče/hodnoty a páry navzájem oddělené.
- Nezadané oddělovače: Extrakce bez nutnosti specifikovat oddělovače. Každý neosamocný znak je považován za oddělovač.
- Regulární výrazy: Extrakce na základě regulárních výrazů.
Syntaxe
Zadaný oddělovač
T|parse-kv Expressionas( KeysList)with(pair_delimiter=PairDelimiter,kv_delimiter= KvDelimiter [,quote=QuoteChars ... [,escape= EscapeChar ...]] [ ],greedy=true)
Nezadaná oddělovač
T|parse-kv Expressionas(KeysList)with( [quote=QuoteChars ... [,escape= EscapeChar ...]])
Regulární výraz
Výrazy|parse-kvas( T KeysList)with(regex= RegexPattern))
Přečtěte si další informace o konvencích syntaxe.
Parametry
| Název | Typ | Požadováno | Popis |
|---|---|---|---|
| Expression | string |
✔️ | Výraz, ze kterého chcete extrahovat hodnoty klíče. |
| Seznam klíčů | string |
✔️ | Čárkami oddělený seznam názvů klíčů a jejich datových typů hodnot. Pořadí klíčů nemusí odpovídat pořadí, ve kterém se zobrazují v textu. |
| PairDelimiter | string |
Oddělovač, který odděluje páry klíčových hodnot od sebe navzájem. | |
| KvDelimiter | string |
Oddělovač, který odděluje klíče od hodnot. | |
| QuoteChars | string |
Řetězcový literál s jedním nebo dvěma znaky představující levou a pravou uvozovku, kterým je název klíče nebo extrahovaná hodnota, může být zabalena. Parametr lze opakovat, aby se určila samostatná sada levých/uzavíracích uvozovek. | |
| EscapeChar | string |
Řetězcový literál s jedním znakem popisující znak, který lze použít pro escaping speciálních znaků v uvozované hodnotě. Parametr se může opakovat, pokud se použije více řídicích znaků. | |
| Regulární výraz | string |
Regulární výraz obsahující přesně dvě zachycené skupiny. První skupina představuje název klíče a druhá skupina představuje hodnotu klíče. |
Návraty
Původní vstupní tabulkový výraz T, rozšířený o sloupce na zadané klíče k extrakci.
Poznámka:
- Pokud se klíč v záznamu nezobrazí, odpovídající hodnota sloupce je buď
null, nebo prázdný řetězec v závislosti na typu sloupce. - Extrahují se jenom klíče uvedené v operátoru.
- První vzhled klíče se extrahuje a následné hodnoty se ignorují.
- Když extrahujete klíče a hodnoty, úvodní a koncové prázdné znaky se ignorují.
Příklady
Příklady v této části ukazují, jak používat syntaxi, která vám pomůže začít.
Extrakce s dobře definovanými oddělovači
V tomto dotazu jsou klíče a hodnoty oddělené dobře definovanými oddělovači. Tyto delimetry jsou čárkami a dvojtečky.
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
Výstup
| Text | ThreadId | Počítač |
|---|---|---|
| Služba je v provozu | 458745723 | Node001 |
Extrakce s uvozováním hodnot
Někdy jsou názvy klíčů nebo hodnoty zabalené v uvozovkách, které umožňují, aby samotné hodnoty obsahovaly znaky oddělovače. Následující příklady ukazují, jak quote se argument používá k extrakci těchto hodnot.
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
Výstup
| čas události | src | Dst | bajtů | selhání |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | přerušeno připojení |
Tento dotaz používá různé levá a uzavírací uvozovky:
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
Výstup
| čas události | src | Dst | bajtů | selhání |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | přerušeno připojení |
Samotné hodnoty mohou obsahovat správně řídicí znaky uvozovek, jak ukazuje následující příklad:
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
Výstup
| čas | src | Dst | bajtů | selhání |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | vzdálený hostitel odeslaný "bye!" |
Extrakce v režimu greedy
Existují případy, kdy necitované hodnoty mohou obsahovat oddělovače párů. V tomto případě použijte greedy režim k označení operátora, aby se při hledání konce hodnoty prohledat až do dalšího vzhledu klíče (nebo konce řetězce).
Následující příklady porovnávají způsob fungování operátoru a bez zadaného greedy režimu:
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
Výstup
| name | telefon | city |
|---|---|---|
| John | 555 | Nová |
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
Výstup
| name | telefon | city |
|---|---|---|
| Rudolf Spousta | 555 5555 | New York |
Extrakce bez dobře definovaných oddělovačů
V následujícím příkladu se každý neosamocený znak považuje za platný oddělovač:
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
Výstup
| Text | ThreadId | Počítač |
|---|---|---|
| Zahájeno | 458745723 | Node001 |
Hodnoty uvozování a uvozování jsou v tomto režimu povolené, jak je znázorněno v následujícím příkladu:
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
Výstup
| Text | ThreadId | Počítač |
|---|---|---|
| Služba je v provozu | 458745723 | Node001 |
Extrakce pomocí regulárního výrazu
Pokud žádné oddělovače nedefinují dostatečnou strukturu textu, může být extrakce založená na regulárních výrazech užitečná.
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
Výstup
| adresa URL refereru | adresa URL požadavku | id inzerenta |
|---|---|---|
https://hostname.com/redirect?dest=/?h=1234 |
https://hostname.com/?h=1234 |
24fefbca-cf27-4d62-a623-249c2ad30c73 |